List of usage examples for org.eclipse.jdt.core IElementChangedListener IElementChangedListener
IElementChangedListener
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(); }