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

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

Introduction

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

Prototype

public IResourceDelta[] getResourceDeltas();

Source Link

Document

Returns the collection of resource deltas.

Usage

From source file:com.redhat.ceylon.eclipse.code.explorer.PackageExplorerContentProvider.java

License:Open Source License

void handleAffectedChildren(IJavaElementDelta delta, IJavaElement element,
        Collection<Runnable> runnables) throws JavaModelException {
    int count = 0;

    IResourceDelta[] resourceDeltas = delta.getResourceDeltas();
    if (resourceDeltas != null) {
        for (int i = 0; i < resourceDeltas.length; i++) {
            int kind = resourceDeltas[i].getKind();
            if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED) {
                count++;//w w  w.  j a va 2 s  . c  o m
            }
        }
    }
    IJavaElementDelta[] affectedChildren = delta.getAffectedChildren();
    for (int i = 0; i < affectedChildren.length; i++) {
        int kind = affectedChildren[i].getKind();
        if (kind == IJavaElementDelta.ADDED || kind == IJavaElementDelta.REMOVED) {
            count++;
        }
    }

    if (count > 1) {
        // more than one child changed, refresh from here downwards
        if (element instanceof IPackageFragment) {
            // a package fragment might become non empty refresh from the parent
            IJavaElement parent = (IJavaElement) internalGetParent(element);
            // 1GE8SI6: ITPJUI:WIN98 - Rename is not shown in Packages View
            // avoid posting a refresh to an invisible parent
            if (element.equals(fInput)) {
                postRefresh(element, ORIGINAL, element, runnables);
            } else {
                postRefresh(parent, PARENT, element, runnables);
            }
        } else if (element instanceof IPackageFragmentRoot) {
            Object toRefresh = internalGetParent(element);
            postRefresh(toRefresh, ORIGINAL, toRefresh, runnables);
        } else {
            postRefresh(element, ORIGINAL, element, runnables);
        }
        return;
    }
    if (resourceDeltas != null) {
        for (int i = 0; i < resourceDeltas.length; i++) {
            if (processResourceDelta(resourceDeltas[i], element, runnables)) {
                return; // early return, element got refreshed
            }
        }
    }
    for (int i = 0; i < affectedChildren.length; i++) {
        if (processDelta(affectedChildren[i], runnables)) {
            return; // early return, element got refreshed
        }
    }
}

From source file:com.technophobia.eclipse.project.cache.listener.ClassFileChangedListener.java

License:Open Source License

private Collection<IResource> affectedClassFiles(final IJavaElementDelta delta) throws CoreException {
    final Collection<IResource> affectedClassFiles = new ArrayList<IResource>();
    final IResourceDeltaVisitor visitor = filesWithExtensionVisitor(affectedClassFiles);
    for (final IResourceDelta resourceDelta : delta.getResourceDeltas()) {
        resourceDelta.accept(visitor);/*from   www. java 2s. co  m*/
    }
    return affectedClassFiles;
}

From source file:net.sf.jasperreports.eclipse.classpath.JavaProjectClassLoader.java

License:Open Source License

private boolean ignoreClasspathChanges(ElementChangedEvent event) {
    if (event.getDelta() == null && event.getDelta().getChangedChildren() == null)
        return true;
    for (IJavaElementDelta delta : event.getDelta().getChangedChildren()) {
        if (delta.getResourceDeltas() == null)
            return false;
        for (IResourceDelta rd : delta.getResourceDeltas()) {
            if (rd.getFullPath() == null)
                continue;
            String path = rd.getFullPath().getFileExtension();
            if (path != null && !(path.equalsIgnoreCase(FileExtension.JRXML)
                    || path.equalsIgnoreCase(FileExtension.JASPER)))
                return false;
        }//from   w ww  .  j  a v a 2s.c o m
    }
    return true;
}

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 2 s.  co m*/
        }
    }
    if (IJavaElementDelta.F_CHILDREN == (IJavaElementDelta.F_CHILDREN & d.getFlags())) {
        // check children
        for (IJavaElementDelta child : d.getChangedChildren()) {
            recCheckChangedExtensions(child, changedExtensions);
        }
    }

}

From source file:org.eclipse.jem.workbench.utility.JavaModelListener.java

License:Open Source License

/**
 * Answer whether the change is this is a raw classpath change, or if a file that is in the root of the project was changed that also can mean a
 * raw classpath change. This must only be called for a delta that is for an {@link IJavaProject}.
 * <p>//from   ww w . ja va  2s . c  om
 * See {@link IJavaElementDelta.#F_CLASSPATH_CHANGED} and {@link #isAlsoClasspathChange(IPath)} for details.
 * 
 * @param delta
 * @return
 * 
 * @since 1.2.0
 */
protected boolean isClasspathResourceChange(IJavaElementDelta delta) {
    if ((delta.getFlags() & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0)
        return true;
    IResourceDelta[] resources = delta.getResourceDeltas();
    if (resources == null)
        return false;
    IPath path = null;
    for (int i = 0; i < resources.length; i++) {
        if (resources[i].getKind() == IResourceDelta.CHANGED) {
            path = resources[i].getProjectRelativePath();
            if (isAlsoClasspathChange(path))
                return true;
        }
    }
    return false;
}

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;
                    }/*  w w  w.  j  a  va2s.com*/
                }
            }
        } 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 processJavaProject(final IJavaProject jproject, final int flags, final int kind,
        final IJavaElementDelta delta) {

    final IProject project = jproject.getProject();
    final List pathsToAdd = new ArrayList();
    final List pathsToRemove = new ArrayList();
    final List changedJavaPaths = new ArrayList();

    // make certain this is a J2EE project
    if (ModuleCoreNature.isFlexibleProject(project)) {

        WorkspaceJob job = new WorkspaceJob(
                RefactorMessages.J2EEElementChangedListener_J2EE_Component_Mapping_Update_) {
            @Override/*from  www .  j a  va  2s.  c o m*/
            public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {// Did the classpath change?
                if ((flags & IJavaElementDelta.F_CHILDREN) == IJavaElementDelta.F_CHILDREN) {
                    final boolean cpChanged = (flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0;
                    getJavaSrcMappings(delta.getAffectedChildren(), cpChanged, jproject, pathsToAdd,
                            pathsToRemove, changedJavaPaths);
                }

                // Did a non-Java folder change name?
                final IResourceDelta[] deltas = delta.getResourceDeltas();
                if (deltas != null && deltas.length > 0) {
                    getNonJavaFolderMappings(deltas, project, pathsToAdd, pathsToRemove, changedJavaPaths);
                }

                for (int i = 0; i < pathsToAdd.size(); i++) {
                    Object[] toAdd = (Object[]) pathsToAdd.get(i);
                    final IVirtualFolder destFolder = (IVirtualFolder) toAdd[1];
                    final IPath pathToAdd = (IPath) toAdd[0];
                    destFolder.createLink(pathToAdd, 0, monitor);
                }
                for (int i = 0; i < pathsToRemove.size(); i++) {
                    Object[] toRemove = (Object[]) pathsToRemove.get(i);
                    final IVirtualFolder destFolder = (IVirtualFolder) toRemove[1];
                    final IPath pathToRemove = (IPath) toRemove[0];
                    destFolder.removeLink(pathToRemove, 0, monitor);
                }
                return Status.OK_STATUS;

            }

            @Override
            public boolean belongsTo(final Object family) {
                return PROJECT_COMPONENT_UPDATE_JOB_FAMILY.equals(family);
            }
        };
        job.setRule(ResourcesPlugin.getWorkspace().getRoot());
        job.setSystem(true);
        job.schedule();

    }
}

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

License:Open Source License

private void processResourceDeltas(final int flags, final int kind, final IJavaElementDelta delta) {
    final List pathsToAdd = new ArrayList();
    final List pathsToRemove = new ArrayList();

    final IResourceDelta[] deltas = delta.getResourceDeltas();
    if (deltas != null && deltas.length > 0) {
        try {/*ww  w  .  ja v  a  2  s  .c  o m*/
            getNonJavaFolderMappings(deltas, null, pathsToAdd, pathsToRemove, Collections.EMPTY_LIST);
        } catch (CoreException ce) {
            J2EEPlugin.logError(ce);
            return;
        }
    }

    updateMappingsInJob(pathsToAdd, pathsToRemove);
}

From source file:org.eclipse.mylyn.internal.java.ui.search.JavaActiveSearchResultUpdater.java

License:Open Source License

private void collectRemoved(Set potentiallyRemovedSet, Set removedElements, IJavaElementDelta delta) {
    if (delta.getKind() == IJavaElementDelta.REMOVED) {
        removedElements.add(delta.getElement());
    } else if (delta.getKind() == IJavaElementDelta.CHANGED) {
        int flags = delta.getFlags();
        if ((flags & REMOVED_FLAGS) != 0) {
            potentiallyRemovedSet.add(delta.getElement());
        } else {//from  www . java  2s . c  o  m
            IJavaElementDelta[] childDeltas = delta.getAffectedChildren();
            for (IJavaElementDelta childDelta : childDeltas) {
                collectRemoved(potentiallyRemovedSet, removedElements, childDelta);
            }
        }
    }
    IResourceDelta[] resourceDeltas = delta.getResourceDeltas();
    if (resourceDeltas != null) {
        for (IResourceDelta resourceDelta : resourceDeltas) {
            collectRemovals(removedElements, resourceDelta);
        }
    }
}

From source file:org.eclipse.pde.api.tools.internal.WorkspaceDeltaProcessor.java

License:Open Source License

/**
 * Processes the java element deltas of interest
 * /*w ww  .  j av  a2 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;
        }
    }
}