Example usage for org.eclipse.jdt.core IJavaElementDelta getChangedChildren

List of usage examples for org.eclipse.jdt.core IJavaElementDelta getChangedChildren

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaElementDelta getChangedChildren.

Prototype

public IJavaElementDelta[] getChangedChildren();

Source Link

Document

Returns deltas for the children which have changed.

Usage

From source file:com.google.gdt.eclipse.managedapis.impl.ManagedApiChangeListener.java

License:Open Source License

/**
 * Implements the standard elementChanged method defined by the
 * IElementChangedListener, this method identifies events of importance to a
 * specific ManagedApiProject and calls the appropriate abstract method on a
 * match./* w  ww  .  j  a  v a  2 s. c  o  m*/
 */
public void elementChanged(ElementChangedEvent event) {
    if (managedApiProject == null) {
        throw new IllegalStateException("managedApiProject must be set prior to registering the listener");
    }

    for (IJavaElementDelta delta : event.getDelta().getRemovedChildren()) {
        int flags = delta.getFlags();
        if (flags == 0) {
            IJavaElement element = delta.getElement();
            IJavaProject javaProject = (IJavaProject) element.getAdapter(IJavaProject.class);
            if (javaProject != null) {
                IProject project = javaProject.getProject();
                if (project.equals(managedApiProject.getJavaProject().getProject())) {
                    managedApiProjectRemoved();
                }
            }
        }
    }

    for (IJavaElementDelta delta : event.getDelta().getChangedChildren()) {
        int flags = delta.getFlags();
        if ((flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) {
            IJavaElement element = delta.getElement();
            if (element.getElementType() == IJavaElement.JAVA_PROJECT
                    && element.equals(managedApiProject.getJavaProject())) {
                Set<ManagedApi> managedApiRemovalSet = new HashSet<ManagedApi>(
                        delta.getChangedChildren().length);
                List<String> managedApiFolderNames = new ArrayList();
                for (IJavaElementDelta childDelta : delta.getChangedChildren()) {
                    if ((childDelta.getFlags() & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) != 0) {
                        IJavaElement childElement = childDelta.getElement();
                        if (childElement.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT
                                && managedApiProject.isPackageFragmentRootInManagedApi(
                                        (IPackageFragmentRoot) childElement)) {
                            String managedApiFolderName = managedApiProject
                                    .getPathRelativeToManagedApiRoot((IPackageFragmentRoot) childElement);
                            if (!managedApiFolderNames.contains(managedApiFolderName)) {
                                managedApiFolderNames.add(managedApiFolderName);
                                managedApiRemovalSet
                                        .add(managedApiProject.createManagedApi(managedApiFolderName));
                            }
                        }
                    }
                }
                if (managedApiRemovalSet.size() > 0) {
                    managedApiRemoved(
                            managedApiRemovalSet.toArray(new ManagedApiImpl[managedApiRemovalSet.size()]));
                }
            }
        } else if ((flags & IJavaElementDelta.F_CLOSED) != 0) {
            IJavaElement element = delta.getElement();
            if (element.getElementType() == IJavaElement.JAVA_PROJECT
                    && element.equals(managedApiProject.getJavaProject())) {
                managedApiProjectClosed();
            }
        }
    }
}

From source file:edu.buffalo.cse.green.JavaModelListener.java

License:Open Source License

/**
 * Iterates over all subbranches of the <code>IJavaElementDelta</code> and
 * determines what elements have changed that are present in the
 * <code>DiagramEditor</code>.
 * //from w w w.  j  a v  a 2s.  c o m
 * @param parentDelta - The delta to look through.
 * @param type - The class to match.
 * @return A mapping of moved elements.
 */
private List<IJavaElementDelta> findChangedElements(IJavaElementDelta parentDelta, Class type) {
    IJavaElementDelta delta;
    List<IJavaElementDelta> changes = new ArrayList<IJavaElementDelta>();

    // adds deltas representing the removed elements of
    // the specified type to the list of changes
    for (int i = 0; i < parentDelta.getChangedChildren().length; i++) {
        delta = parentDelta.getChangedChildren()[i];

        if (type.isInstance(delta.getElement())) {
            if (delta.getChangedChildren().length == 0) {
                changes.add(delta);
            }
        }
    }

    // traverse all changed branches
    // this code shouldn't need altering
    for (int i = 0; i < parentDelta.getChangedChildren().length; i++) {
        delta = parentDelta.getChangedChildren()[i];
        changes.addAll(findChangedElements(delta, type));
    }

    return changes;
}

From source file:org.eclipse.fx.ide.css.cssext.ui.adapter.ExtensionRegistry.java

License:Open Source License

private void recCheckChangedExtensions(IJavaElementDelta d, List<URI> changedExtensions) {
    if (IJavaElementDelta.F_CONTENT == (IJavaElementDelta.F_CONTENT & d.getFlags())) {
        // content change
        for (IResourceDelta rd : d.getResourceDeltas()) {
            final IResource res = rd.getResource();
            if ("cssext".equals(res.getFileExtension())) { //$NON-NLS-1$
                changedExtensions.add(URI.createPlatformResourceURI(
                        res.getProject().getName() + "/" + res.getProjectRelativePath().toString(), true)); //$NON-NLS-1$
            }/*from w  w  w. j  a v  a 2s. com*/
        }
    }
    if (IJavaElementDelta.F_CHILDREN == (IJavaElementDelta.F_CHILDREN & d.getFlags())) {
        // check children
        for (IJavaElementDelta child : d.getChangedChildren()) {
            recCheckChangedExtensions(child, changedExtensions);
        }
    }

}

From source file:org.eclipse.jst.j2ee.internal.JARDependencyPropertiesPage.java

License:Open Source License

private boolean classpathChanged(final IJavaElementDelta delta) {
    final int kind = delta.getKind();
    if (kind == IJavaElementDelta.CHANGED) {
        final int flags = delta.getFlags();
        final IJavaElement element = delta.getElement();
        if (element instanceof IJavaModel) {
            if ((flags & IJavaElementDelta.F_CHILDREN) == IJavaElementDelta.F_CHILDREN) {
                final IJavaElementDelta[] children = delta.getChangedChildren();
                for (int i = 0; i < children.length; i++) {
                    // check all of the IJavaProject children
                    if (classpathChanged(children[i])) {
                        return true;
                    }//from   w w w . ja  va2  s.co m
                }
            }
        } else if (element instanceof IJavaProject) {
            // check if we either have a direct indication of a classpath change or a delta on the
            // .classpath file (changes to classpath entry attributes only give us this...)
            final IJavaProject jproject = (IJavaProject) element;
            final IProject eventProject = jproject.getProject();
            if (eventProject.equals(project)) {
                if ((flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) {
                    return true;
                }
                final IResourceDelta[] deltas = delta.getResourceDeltas();
                if (deltas != null) {
                    for (int i = 0; i < deltas.length; i++) {
                        if (deltas[i].getProjectRelativePath().toString().equals(".classpath")) { //$NON-NLS-1$
                            return true;
                        }
                    }
                }
            }
        }
    }
    return false;
}

From source file:org.eclipse.jst.j2ee.refactor.listeners.J2EEElementChangedListener.java

License:Open Source License

private void processJavaElementDelta(final IJavaElementDelta delta) {
    final int kind = delta.getKind();
    if (kind == IJavaElementDelta.CHANGED) {
        final int flags = delta.getFlags();
        final IJavaElement element = delta.getElement();
        if (element instanceof IJavaModel) {
            if ((flags & IJavaElementDelta.F_CHILDREN) == IJavaElementDelta.F_CHILDREN) {
                final IJavaElementDelta[] children = delta.getChangedChildren();
                for (int i = 0; i < children.length; i++) {
                    // handle all of the IJavaProject children
                    processJavaElementDelta(children[i]);
                }/*from   ww  w.  ja  v  a 2  s  .co  m*/
            } else {
                // not a Java project (i.e. could be an EAR project)
                processResourceDeltas(flags, kind, delta);
            }
        } else if (element instanceof IJavaProject) {
            processJavaProject((IJavaProject) element, flags, kind, delta);
        }
    }
}

From source file:org.eclipse.jst.jsp.core.internal.taglib.TaglibHelperManager.java

License:Open Source License

/**
 * Update classpath for appropriate loader.
 * @see org.eclipse.jdt.core.IElementChangedListener#elementChanged(org.eclipse.jdt.core.ElementChangedEvent)
 *///from w w  w  .j  a v  a2s .c o m
public void elementChanged(ElementChangedEvent event) {
    // handle classpath changes
    IJavaElementDelta delta = event.getDelta();
    if (delta.getElement().getElementType() == IJavaElement.JAVA_MODEL) {
        IJavaElementDelta[] changed = delta.getChangedChildren();
        for (int i = 0; i < changed.length; i++) {
            if ((changed[i].getFlags() & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0
                    || (changed[i].getFlags() & IJavaElementDelta.F_REORDER) != 0
                    || (changed[i].getFlags() & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0
                    || (changed[i].getFlags() & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0) {
                IJavaElement proj = changed[i].getElement();
                handleClasspathChange(changed, i, proj);
            }
        }
    } else if (delta.getElement().getElementType() == IJavaElement.COMPILATION_UNIT) {
        IJavaElementDelta[] changed = delta.getChangedChildren();
        for (int i = 0; i < changed.length; i++) {
            if ((changed[i].getFlags() & IJavaElementDelta.F_SUPER_TYPES) != 0) {
                IJavaElement element = changed[i].getElement();
                handleSuperTypeChange(element);
            }
        }
    }
}