List of usage examples for org.eclipse.jdt.core IJavaElementDelta getMovedFromElement
public IJavaElement getMovedFromElement();
null
if the #F_MOVED_FROM change flag is not set. From source file:edu.buffalo.cse.green.JavaModelListener.java
License:Open Source License
/** * Finds pairs of element changes that triggered "move" events. The types of * elements that are considered eligible for such an event are: * <code>IJavaProject</code> * <code>IPackageFragment</code> * <code>ICompilationUnit</code> * //from ww w . j a va2s. c o m * This is checked using the getMovedFromElement() and getMovedToElement() * methods in the delta. * * There are other <code>IJavaElement</code> subclasses that may trigger * move events; however, in that context, move events do not pertain to the * <code>DiagramEditor</code>. * * @param added - A list of elements that were added. * @param removed - A list of elements that were removed. * @return A mapping of all elements that triggered "move" events in the * <code>IJavaElementDelta</code> hierarchy. */ private HashMap<IJavaElement, IJavaElement> extractMovedElements(List<IJavaElementDelta> added, List<IJavaElementDelta> removed) { HashMap<IJavaElement, IJavaElement> moved = new HashMap<IJavaElement, IJavaElement>(); List<IJavaElementDelta> notAdded = new ArrayList<IJavaElementDelta>(); List<IJavaElementDelta> notRemoved = new ArrayList<IJavaElementDelta>(); for (IJavaElementDelta toDelta : added) { // ignore this element if it wasn't moved to somewhere if (toDelta.getMovedFromElement() != null) { IJavaElement newElement = toDelta.getElement(); // see if there's an element that has // the "newElement" returned by // toDelta.getMovedToElement() for (IJavaElementDelta fromDelta : removed) { // if this element was moved from "newElement"... if (sameElements(fromDelta.getMovedToElement(), newElement)) { IJavaElement oldElement = fromDelta.getElement(); // and this element was moved from "oldElement" if (sameElements(toDelta.getMovedFromElement(), oldElement)) { /* * remove both elements from their respective lists * and put them in the move map */ moved.put(oldElement, newElement); notAdded.add(toDelta); notRemoved.add(fromDelta); } } } } } added.removeAll(notAdded); removed.removeAll(notRemoved); return moved; }
From source file:org.eclipse.jst.j2ee.refactor.listeners.J2EEElementChangedListener.java
License:Open Source License
private void getJavaSrcMappings(final IJavaElementDelta[] children, final boolean cpChanged, final IJavaProject jproject, final List pathsToAdd, final List pathsToRemove, final List changedPaths) throws CoreException { IVirtualComponent c = ComponentCore.createComponent(jproject.getProject()); if (c == null) return;// w ww. j a v a 2 s . c o m // get the default destination folder final IVirtualFolder defaultDestFolder = getDestinationFolder(c); for (int i = 0; i < children.length; i++) { final IJavaElementDelta delta = children[i]; final IJavaElement element = delta.getElement(); if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT) { final IPackageFragmentRoot root = (IPackageFragmentRoot) element; int cpeKind = IPackageFragmentRoot.K_SOURCE; boolean abortAdd = false; try { cpeKind = root.getKind(); } catch (JavaModelException jme) { // this is thrown if the folder corresponding to the CPE has been deleted // since it could represent another error, we need to abort adding. abortAdd = true; } // only update if we know it is a src folder if (cpeKind == IPackageFragmentRoot.K_SOURCE) { final int kind = delta.getKind(); if (!cpChanged) { // if the classpath is not changed, save modifications to the Java src path if (kind == IJavaElementDelta.CHANGED || kind == IJavaElementDelta.REMOVED) { changedPaths.add(root.getPath().removeFirstSegments(1)); } } else { // kind and flags for CP additions are somewhat sporadic; either: // -kind is ADDED and flags are 0 // or // -kind is CHANGED and flags are F_ADDED_TO_CLASSPATH final int flags = delta.getFlags(); if (kind == IJavaElementDelta.ADDED || (flags & IJavaElementDelta.F_ADDED_TO_CLASSPATH) == IJavaElementDelta.F_ADDED_TO_CLASSPATH) { if (!abortAdd) { final IPath pathToAdd = root.getPath().removeFirstSegments(1); pathsToAdd.add(new Object[] { pathToAdd, defaultDestFolder }); // if the added src path was moved from another location, remove any mapping for that // location if ((flags & IJavaElementDelta.F_MOVED_FROM) == IJavaElementDelta.F_MOVED_FROM) { final IJavaElement movedFromElement = delta.getMovedFromElement(); final IPath pathToRemove = movedFromElement.getPath().removeFirstSegments(1); pathsToRemove.add(new Object[] { pathToRemove, defaultDestFolder }); } } // getting a kind = REMOVED and flags = 0 for removal of the folder (w/o removing the CPE), probably // should not be generated } else if (kind == IJavaElementDelta.REMOVED || (flags & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) == IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) { IPath path = root.getPath().removeFirstSegments(1); pathsToRemove.add(new Object[] { path, defaultDestFolder }); } } } } } }
From source file:org.eclipse.pde.api.tools.internal.WorkspaceDeltaProcessor.java
License:Open Source License
/** * Processes the java element deltas of interest * //from www . ja v a 2 s .c o m * @param deltas */ void processJavaElementDeltas(IJavaElementDelta[] deltas, IJavaProject project) { for (int i = 0; i < deltas.length; i++) { IJavaElementDelta delta = deltas[i]; switch (delta.getElement().getElementType()) { case IJavaElement.JAVA_PROJECT: { IJavaProject proj = (IJavaProject) delta.getElement(); int flags = delta.getFlags(); switch (delta.getKind()) { case IJavaElementDelta.CHANGED: { if (!Util.isApiProject(proj)) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println( "--> skipped processing CHANGED delta for project: " + proj.getElementName()); //$NON-NLS-1$ } continue; } if ((flags & IJavaElementDelta.F_OPENED) != 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println("--> processing OPEN project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$ } bmanager.disposeWorkspaceBaseline(); } else if ((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0 || (flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println( "--> processing CLASSPATH CHANGE project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$ } bmanager.disposeWorkspaceBaseline(); dmanager.projectClasspathChanged(proj); try { BuildState.setLastBuiltState(proj.getProject(), null); } catch (CoreException e) { } dmanager.flushElementCache(delta.getElement()); } else if ((flags & IJavaElementDelta.F_CHILDREN) != 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println( "--> processing CHILDREN delta of project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$ } processJavaElementDeltas(delta.getAffectedChildren(), proj); } else if ((flags & IJavaElementDelta.F_CONTENT) != 0) { if (proj != null) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println( "--> processing child CONTENT of project: [" + proj.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$ } IResourceDelta[] resourcedeltas = delta.getResourceDeltas(); if (resourcedeltas != null) { IResourceDelta rdelta = null; for (int j = 0; j < resourcedeltas.length; j++) { rdelta = resourcedeltas[j].findMember(new Path(Util.MANIFEST_NAME)); if (rdelta != null && rdelta.getKind() == IResourceDelta.CHANGED && (rdelta.getFlags() & IResourceDelta.CONTENT) > 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println("--> processing manifest delta"); //$NON-NLS-1$ } bmanager.disposeWorkspaceBaseline(); break; } } } } else { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println("--> ignoring child CONTENT project context is null"); //$NON-NLS-1$ } } } break; } case IJavaElementDelta.ADDED: { if (!Util.isApiProject(proj)) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println( "--> skipped processing ADDED delta for project: " + proj.getElementName()); //$NON-NLS-1$ } continue; } if ((flags & IJavaElementDelta.F_MOVED_FROM) != 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println("--> processing PROJECT RENAME from: [" //$NON-NLS-1$ + delta.getMovedFromElement().getJavaProject().getElementName() + "] to: [" //$NON-NLS-1$ + proj.getElementName() + "]"); //$NON-NLS-1$ } bmanager.disposeWorkspaceBaseline(); } break; } default: break; } break; } case IJavaElement.PACKAGE_FRAGMENT_ROOT: { IPackageFragmentRoot root = (IPackageFragmentRoot) delta.getElement(); int flags = delta.getFlags(); if ((flags & (IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED | IJavaElementDelta.F_ADDED_TO_CLASSPATH | IJavaElementDelta.F_REMOVED_FROM_CLASSPATH)) != 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println("processed CLASSPATH CHANGED for package fragment root: [" //$NON-NLS-1$ + root.getElementName() + "]"); //$NON-NLS-1$ } dmanager.projectClasspathChanged(project); } if ((flags & IJavaElementDelta.F_CHILDREN) != 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println( "processed CHILDREN for package fragment root: [" + root.getElementName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$ } processJavaElementDeltas(delta.getAffectedChildren(), project); } break; } case IJavaElement.PACKAGE_FRAGMENT: { IPackageFragment fragment = (IPackageFragment) delta.getElement(); if (delta.getKind() == IJavaElementDelta.REMOVED) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println("processed REMOVED delta for package fragment: [" //$NON-NLS-1$ + fragment.getElementName() + "]"); //$NON-NLS-1$ } ((ApiBaseline) bmanager.getWorkspaceBaseline()).clearPackage(fragment.getElementName()); } int flags = delta.getFlags(); if ((flags & IJavaElementDelta.F_CHILDREN) != 0) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out.println("processed CHILDREN delta for package fragment: [" //$NON-NLS-1$ + fragment.getElementName() + "]"); //$NON-NLS-1$ } processJavaElementDeltas(delta.getAffectedChildren(), project); } break; } case IJavaElement.COMPILATION_UNIT: { int flags = delta.getFlags(); switch (delta.getKind()) { case IJavaElementDelta.CHANGED: { if ((flags & (IJavaElementDelta.F_CONTENT | IJavaElementDelta.F_FINE_GRAINED | IJavaElementDelta.F_PRIMARY_RESOURCE)) != 0) { if (project != null) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { System.out .println("processed CONTENT / FINE_GRAINED / PRIMARY_RESOURCE delta for: [" //$NON-NLS-1$ + delta.getElement().getElementName() + "]"); //$NON-NLS-1$ } dmanager.projectChanged(project); dmanager.flushElementCache(delta.getElement()); continue; } } break; } case IJavaElementDelta.ADDED: case IJavaElementDelta.REMOVED: { if (project != null) { if (ApiPlugin.DEBUG_WORKSPACE_DELTA_PROCESSOR) { if (delta.getKind() == IJavaElementDelta.ADDED) { System.out.println( "processed ADDED delta for: [" + delta.getElement().getElementName() + "]"); //$NON-NLS-1$//$NON-NLS-2$ } else { System.out.println("processed REMOVED delta for: [" //$NON-NLS-1$ + delta.getElement().getElementName() + "]"); //$NON-NLS-1$ } } dmanager.projectChanged(project); dmanager.flushElementCache(delta.getElement()); continue; } break; } default: break; } break; } default: break; } } }