Example usage for org.eclipse.jdt.core IElementChangedListener IElementChangedListener

List of usage examples for org.eclipse.jdt.core IElementChangedListener IElementChangedListener

Introduction

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

Prototype

IElementChangedListener

Source Link

Usage

From source file:com.javadude.dependencies.editparts.WorkspaceRootEditPart.java

License:Open Source License

public WorkspaceRootEditPart() {
    JavaCore.addElementChangedListener(new IElementChangedListener() {
        public void elementChanged(final ElementChangedEvent event) {
            Display.getDefault().asyncExec(new Runnable() {
                public void run() {
                    //get the workspace changes from the ElementChangedEvent
                    IJavaElementDelta[] changedChildren = event.getDelta().getAffectedChildren();

                    boolean refreshProjects = false;

                    for (int i = 0; i < changedChildren.length; i++) {
                        IJavaElementDelta delta = changedChildren[i];
                        //If the changed element is a java project
                        if (delta.getElement() instanceof IJavaProject) {
                            refreshProjects = true;
                        }//from w w w. j a  va2  s . c om
                    }

                    refresh();

                    if (refreshProjects) {
                        for (@SuppressWarnings("rawtypes")
                        Iterator iter = getChildren().iterator(); iter.hasNext();) {
                            AbstractGraphicalEditPart editPart = (AbstractGraphicalEditPart) iter.next();
                            editPart.refresh();
                        }
                    }
                }
            });
        }
    });
}

From source file:com.microsoftopentechnologies.acsfilter.ui.classpath.WAACSStartUp.java

License:Open Source License

@Override
public void earlyStartup() {
    IElementChangedListener listener = new IElementChangedListener() {
        public void elementChanged(final ElementChangedEvent event) {
            if (event.getSource().toString().contains(Messages.sdkJar)
                    && event.getDelta().getAffectedChildren()[0].getAffectedChildren()[0]
                            .getFlags() == IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) {
                IProject proj = event.getDelta().getAffectedChildren()[0].getResourceDeltas()[0].getResource()
                        .getProject();//from  w ww .  j  a  v a 2  s  .co  m
                removeACSEntries(proj);
            }
        }
    };
    JavaCore.addElementChangedListener(listener, ElementChangedEvent.POST_CHANGE);

}

From source file:edu.rice.cs.drjava.plugins.eclipse.repl.EclipseInteractionsModel.java

License:BSD License

/**
 * Adds a listener to Eclipse for any changes to Java projects.
 * The listener will warn the user to reset the Interactions Pane if
 * new class files are generated.//from   w w w. j  a v a  2 s. c o m
 *
 * Note: We'd also like to dynamically add elements to the classpath
 * if the classpath of a project changes.  (This is tricky to identify.)
 */
protected void _addChangeListener() {
    //System.out.println("F_ADDED_TO_CLASSPATH: " + IJavaElementDelta.F_ADDED_TO_CLASSPATH);
    //System.out.println("ADDED: " + IJavaElementDelta.ADDED);
    //System.out.println("CHANGED: " + IJavaElementDelta.CHANGED);
    //System.out.println("REMOVED: " + IJavaElementDelta.REMOVED);
    JavaCore.addElementChangedListener(new IElementChangedListener() {
        public void elementChanged(ElementChangedEvent e) {
            IJavaElementDelta delta = e.getDelta();
            _visitDelta(delta, 0);
        }
    });
}

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

License:Open Source License

protected void init(IJavaProject project) {
    if (project == null || !project.exists() || !project.getResource().isAccessible())
        throw new IllegalArgumentException("Invalid javaProject");
    this.javaProject = project;
    getURLClassloader();//from w  ww . ja v a2s.c om
    listener = new IElementChangedListener() {

        public void elementChanged(final ElementChangedEvent event) {
            if (ignoreClasspathChanges(event))
                return;
            System.out.println("CLASSPATH CHANGED:" + event);
            // FIXME should release this classloader
            // what happend with current objects? we have 1 loader per
            // project, maybe se can filter some events? to have less
            // updates
            curlLoader = null;
            getURLClassloader();
            if (events != null)
                events.firePropertyChange("classpath", false, true);
        }
    };
    JavaCore.addElementChangedListener(listener, ElementChangedEvent.POST_CHANGE);
}

From source file:org.codehaus.groovy.eclipse.astviews.ASTView.java

License:Apache License

private void hookGroovy() {
    partListener = new IPartListener() {
        public void partActivated(IWorkbenchPart part) {
        }/*from w  w w .  j  av  a  2 s  .  com*/

        public void partBroughtToTop(IWorkbenchPart part) {
            try {
                if (part instanceof IEditorPart) {
                    IFile file = (IFile) ((IEditorPart) part).getEditorInput().getAdapter(IFile.class);
                    if (file != null && ContentTypeUtils.isGroovyLikeFileName(file.getName())) {
                        ICompilationUnit unit = JavaCore.createCompilationUnitFrom(file);
                        if (unit instanceof GroovyCompilationUnit) {
                            if (editor != part) {
                                editor = (IEditorPart) part;
                                Object[] treePaths = viewer.getExpandedElements();
                                viewer.setInput(((GroovyCompilationUnit) unit).getModuleNode());
                                viewer.setExpandedElements(treePaths);
                            } else {
                                // nothing to do!
                            }
                            return;
                        }
                    }
                }
            } catch (Exception e) {
                GroovyCore.logException("Error updating AST Viewer", e); //$NON-NLS-1$
            }
            editor = null;
            // This is a guard - the content provider should not be null,
            // but sometimes this happens when the
            // part is disposed of for various reasons (unhandled exceptions
            // AFAIK). Without this guard,
            // error message popups continue until Eclipse if forcefully
            // killed.
            if (viewer.getContentProvider() != null) {
                viewer.setInput(null);
            }
        }

        public void partClosed(IWorkbenchPart part) {
        }

        public void partDeactivated(IWorkbenchPart part) {
        }

        public void partOpened(IWorkbenchPart part) {
        }
    };
    getSite().getPage().addPartListener(partListener);

    // Warm the listener up.
    if (getSite().getPage().getActiveEditor() instanceof GroovyEditor) {
        partListener.partBroughtToTop(getSite().getPage().getActiveEditor());
    }

    listener = new IElementChangedListener() {

        public void elementChanged(ElementChangedEvent event) {
            // The editor is currently not a GroovyEditor, so
            // there is not
            // ASTView to refresh.
            if (editor == null) {
                return;
            }
            IJavaElementDelta delta = event.getDelta();

            IFile file = (IFile) editor.getEditorInput().getAdapter(IFile.class);

            final GroovyCompilationUnit unit = (GroovyCompilationUnit) JavaCore.createCompilationUnitFrom(file);

            // determine if the delta contains the ICompUnit under question
            if (isUnitInDelta(delta, unit)) {
                Display.getDefault().asyncExec(new Runnable() {
                    public void run() {
                        Object[] treePaths = viewer.getExpandedElements();
                        viewer.setInput(unit.getModuleNode());
                        viewer.setExpandedElements(treePaths);
                    }
                });
            }
        }

        private boolean isUnitInDelta(IJavaElementDelta delta, GroovyCompilationUnit unit) {

            IJavaElement elt = delta.getElement();
            if (elt.getElementType() == IJavaElement.COMPILATION_UNIT) {
                // comparing with a compilation unit
                // if test fails, no need to go further
                if (elt.getElementName().equals(unit.getElementName())) {
                    return true;
                } else {
                    return false;
                }
            }

            ICompilationUnit candidateUnit = (ICompilationUnit) elt.getAncestor(IJavaElement.COMPILATION_UNIT);
            if (candidateUnit != null) {
                // now if test fails, no need to go further
                if (candidateUnit.getElementName().equals(unit.getElementName())) {
                    return true;
                } else {
                    return false;
                }
            }

            // delta is a potential ancestor of this compilationUnit
            IJavaElementDelta[] deltas = delta.getAffectedChildren();
            if (deltas != null) {
                for (IJavaElementDelta delta2 : deltas) {
                    if (isUnitInDelta(delta2, unit)) {
                        return true;
                    }
                }
            }
            return false;
        }
    };

    JavaCore.addElementChangedListener(listener, ElementChangedEvent.POST_RECONCILE);

}

From source file:org.eclipse.fx.ide.jdt.core.internal.JavaFXClasspathContainerInitializer.java

License:Open Source License

@Override
public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
    if (isValidJUnitContainerPath(containerPath)) {
        final JavaFXContainer container = getNewContainer(containerPath, project);
        JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project },
                new IClasspathContainer[] { container }, null);
    }// w  ww  .  j a v a  2  s  .  c o m

    // register update hook
    IElementChangedListener listener = new IElementChangedListener() {

        @Override
        public void elementChanged(ElementChangedEvent event) {
            if (event.getDelta().getKind() == IJavaElementDelta.CHANGED && (event.getDelta().getFlags()
                    & IJavaElementDelta.F_CHILDREN) == IJavaElementDelta.F_CHILDREN) {
                // change on JavaModel
                for (IJavaElementDelta delta : event.getDelta().getAffectedChildren()) {
                    if ((delta.getFlags()
                            & IJavaElementDelta.F_CLASSPATH_CHANGED) == IJavaElementDelta.F_CLASSPATH_CHANGED) {
                        // classpath change on ??
                        if (delta.getElement().getElementType() == IJavaElement.JAVA_PROJECT
                                && delta.getElement().getJavaProject().equals(project)) {
                            // classpath change
                            try {
                                requestClasspathContainerUpdate(containerPath, project, null);
                            } catch (CoreException e) {
                                e.printStackTrace();
                            }
                        }

                    }
                }

            }
        }
    };
    JavaCore.addElementChangedListener(listener);
    // TODO remove listener

}

From source file:org.eclipse.sapphire.java.jdt.internal.JdtJavaTypeReferenceService.java

License:Open Source License

@Override
protected void initReferenceService() {
    this.project = JavaCore.create(context(Element.class).adapt(IProject.class));

    final Value<?> value = context(Value.class);

    this.listener = new IElementChangedListener() {
        public void elementChanged(final ElementChangedEvent event) {
            final IProject project = JdtJavaTypeReferenceService.this.project.getProject();

            if (!project.exists()) {
                // Project has been deleted, but the model has not yet been disposed. Might as well remove
                // the listener at this point.

                JavaCore.removeElementChangedListener(this);
            } else if (project.isAccessible()) {
                final Thread thread = new Thread() {
                    @Override/*w  w  w.j  a v a 2 s .  c  o m*/
                    public void run() {
                        if (!value.disposed() && !value.root().disposed()) {
                            refresh();
                        }
                    }
                };

                thread.start();
            }
        }
    };

    JavaCore.addElementChangedListener(this.listener, ElementChangedEvent.POST_CHANGE);
}

From source file:org.eclipse.virgo.ide.jdt.internal.ui.decoration.JdtClasspathContainerElementDecorator.java

License:Open Source License

public JdtClasspathContainerElementDecorator() {

    // {@link IElementChangedListener} JDT listener that detects changes to the project's class
    // path and triggers a decorator refresh.
    changeListener = new IElementChangedListener() {

        /**//from   ww  w  . j a  va2 s  .co m
         * Flag indicating a change in the resolved class path. This entry is copied from Eclipse 3.4 in order to
         * make this compatible with 3.3.
         */
        private static final int F_RESOLVED_CLASSPATH_CHANGED = 0x200000;

        public void elementChanged(ElementChangedEvent event) {
            boolean refresh = false;
            for (IJavaElementDelta delta : event.getDelta().getAffectedChildren()) {
                if ((delta.getFlags() & F_RESOLVED_CLASSPATH_CHANGED) != 0
                        || (delta.getFlags() & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) {
                    refresh = true;
                }
            }
            if (refresh) {
                Display.getDefault().asyncExec(new Runnable() {

                    public void run() {
                        fireLabelProviderChanged(
                                new LabelProviderChangedEvent(JdtClasspathContainerElementDecorator.this));
                    }
                });
            }
        }
    };
    JavaCore.addElementChangedListener(changeListener, ElementChangedEvent.POST_CHANGE);
}

From source file:org.eclipse.xtend.ide.tests.builder.JavaEditorExtension.java

License:Open Source License

public String waitForElementChangedEvent(final int eventMask, final Procedure0 producer) {
    String _xblockexpression = null;
    {/*from w ww.jav a  2s . c om*/
        if ((JavaEditorExtension.VERBOSE).booleanValue()) {
            StringConcatenation _builder = new StringConcatenation();
            _builder.append("start waiting for an element changed event: ");
            _builder.append(eventMask);
            InputOutput.<String>println(_builder.toString());
        }
        final ArrayList<Boolean> changed = CollectionLiterals.<Boolean>newArrayList(Boolean.valueOf(false));
        final IElementChangedListener _function = new IElementChangedListener() {
            @Override
            public void elementChanged(final ElementChangedEvent it) {
                JavaCore.removeElementChangedListener(this);
                Boolean _head = IterableExtensions.<Boolean>head(changed);
                boolean _not = (!(_head).booleanValue());
                if (_not) {
                    changed.set(0, Boolean.valueOf(true));
                    if ((JavaEditorExtension.VERBOSE).booleanValue()) {
                        InputOutput.<ElementChangedEvent>println(it);
                    }
                }
            }
        };
        JavaCore.addElementChangedListener(_function, eventMask);
        producer.apply();
        while ((!(IterableExtensions.<Boolean>head(changed)).booleanValue())) {
        }
        String _xifexpression = null;
        if ((JavaEditorExtension.VERBOSE).booleanValue()) {
            StringConcatenation _builder_1 = new StringConcatenation();
            _builder_1.append("end waiting for an element changed event: ");
            _builder_1.append(eventMask);
            _xifexpression = InputOutput.<String>println(_builder_1.toString());
        }
        _xblockexpression = _xifexpression;
    }
    return _xblockexpression;
}

From source file:org.eclipse.xtend.shared.ui.core.internal.XtendXpandProject.java

License:Open Source License

public XtendXpandProject(final IJavaProject resource) {
    project = resource;//from ww w.j  a  va2  s.c  o m
    try {
        final IProject[] ps = project.getProject().getReferencedProjects();
        for (int i = 0; i < ps.length; i++) {
            if (initializing.add(project)) {
                try {
                    Activator.getExtXptModelManager().findProject(ps[i]);
                } finally {
                    initializing.remove(project);
                }
            }
        }
    } catch (final CoreException e) {
        XtendLog.logError(e);
    }
    JavaCore.addElementChangedListener(new IElementChangedListener() {

        public void elementChanged(ElementChangedEvent event) {
            if (fromJar.isEmpty())
                return;
            if (containsRemovedClassPathEntry(event.getDelta().getAffectedChildren()))
                removeResourcesFromJar();
        }
    }, ElementChangedEvent.POST_CHANGE);

    Job j = new Job("Initializing " + project.getElementName()) {
        @Override
        protected IStatus run(final IProgressMonitor monitor) {
            try {
                final IProject p = project.getProject();
                if (p.isAccessible() && p.isNatureEnabled(XtendXpandNature.NATURE_ID)) {
                    p.build(IncrementalProjectBuilder.CLEAN_BUILD, XtendXpandBuilder.getBUILDER_ID(),
                            new HashMap<Object, Object>(), monitor);
                }
            } catch (final CoreException e) {
                XtendLog.logError(e);
            }
            return Status.OK_STATUS;
        }
    };
    j.setRule(project.getResource().getWorkspace().getRuleFactory().buildRule());
    j.schedule();
}