List of usage examples for org.eclipse.jdt.core ElementChangedEvent ElementChangedEvent
public ElementChangedEvent(IJavaElementDelta delta, int type)
IJavaElementDelta). From source file:com.codenvy.ide.ext.java.server.internal.core.DeltaProcessor.java
License:Open Source License
private void notifyListeners(IJavaElementDelta deltaToNotify, int eventType, IElementChangedListener[] listeners, int[] listenerMask, int listenerCount) { final ElementChangedEvent extraEvent = new ElementChangedEvent(deltaToNotify, eventType); for (int i = 0; i < listenerCount; i++) { if ((listenerMask[i] & eventType) != 0) { final IElementChangedListener listener = listeners[i]; long start = -1; if (VERBOSE) { System.out.print("Listener #" + (i + 1) + "=" + listener.toString());//$NON-NLS-1$//$NON-NLS-2$ start = System.currentTimeMillis(); }//from w w w. j a v a 2s . c o m // wrap callbacks with Safe runnable for subsequent listeners to be called when some are causing grief SafeRunner.run(new ISafeRunnable() { public void handleException(Throwable exception) { Util.log(exception, "Exception occurred in listener of Java element change notification"); //$NON-NLS-1$ } public void run() throws Exception { PerformanceStats stats = null; if (PERF) { // stats = PerformanceStats.getStats(JavaModelManager.DELTA_LISTENER_PERF, listener); // stats.startRun(); } listener.elementChanged(extraEvent); if (PERF) { stats.endRun(); } } }); if (VERBOSE) { System.out.println(" -> " + (System.currentTimeMillis() - start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ } } } }
From source file:com.redhat.ceylon.eclipse.core.classpath.CeylonClasspathContainer.java
License:Apache License
void notifyUpdateClasspathEntries() { // Changes to resolved classpath are not announced by JDT Core // and so PackageExplorer does not properly refresh when we update // the classpath container. // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=154071 DeltaProcessingState s = JavaModelManager.getJavaModelManager().deltaState; synchronized (s) { IElementChangedListener[] listeners = s.elementChangedListeners; for (int i = 0; i < listeners.length; i++) { if (listeners[i] instanceof PackageExplorerContentProvider) { JavaElementDelta delta = new JavaElementDelta(javaProject); delta.changed(IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED); listeners[i].elementChanged(new ElementChangedEvent(delta, ElementChangedEvent.POST_CHANGE)); }/*from ww w . j a v a2 s . co m*/ } } //I've disabled this because I don't really like having it, but //it does seem to help with the issue of archives appearing //empty in the package manager /*try { javaProject.getProject().refreshLocal(IResource.DEPTH_ONE, null); } catch (CoreException e) { e.printStackTrace(); }*/ }
From source file:com.redhat.ceylon.eclipse.core.classpath.CeylonProjectModulesContainer.java
License:Apache License
void notifyUpdateClasspathEntries() { // Changes to resolved classpath are not announced by JDT Core // and so PackageExplorer does not properly refresh when we update // the classpath container. // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=154071 DeltaProcessingState s = JavaModelManager.getJavaModelManager().deltaState; synchronized (s) { IElementChangedListener[] listeners = s.elementChangedListeners; for (int i = 0; i < listeners.length; i++) { if (listeners[i] instanceof PackageExplorerContentProvider) { JavaElementDelta delta = new JavaElementDelta(javaProject); delta.changed(IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED); listeners[i].elementChanged(new ElementChangedEvent(delta, ElementChangedEvent.POST_CHANGE)); }/* w w w . j av a 2 s .c o m*/ } } //I've disabled this because I don't really like having it, but //it does seem to help with the issue of archives appearing //empty in the package manager /*try { javaProject.getProject().refreshLocal(IResource.DEPTH_ONE, null); } catch (CoreException e) { e.printStackTrace(); }*/ }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsHttpMethodChangedListener.java
License:Open Source License
/** * Will attempt to create {@link JaxrsResourceMethod} when a new * {@link JaxrsHttpMethod} has been created, or will remove some existing * {@link JaxrsResourceMethod} when a {@link JaxrsHttpMethod} has been * removed (if relevant)./*from w w w . java 2 s .c om*/ * * @param delta * the JAX-RS changed that occurred and that should be processed, * if relevant */ @Override public void notifyElementChanged(final JaxrsElementDelta delta) { // FIXME: report this whole fix in a separate JIRA if (delta != null && delta.getElement().getElementKind() == EnumElementKind.HTTP_METHOD) { try { final JaxrsHttpMethod httpMethod = (JaxrsHttpMethod) delta.getElement(); // ignore events on built-in HTTP Methods if (httpMethod.isBuiltIn()) { return; } final JaxrsMetamodel metamodel = (JaxrsMetamodel) delta.getElement().getMetamodel(); final Set<IMethod> affectedMethods = getAffectedMethods(delta); final JavaElementDelta affectedMethodsDelta = new JavaElementDelta(metamodel.getJavaProject(), null, IJavaElementDelta.CHANGED, 0); for (IMethod affectedMethod : affectedMethods) { final CompilationUnit ast = JdtUtils.parse(affectedMethod, new NullProgressMonitor()); final JavaElementDelta affectedMethodDelta = new JavaElementDelta(affectedMethod, ast, IJavaElementDelta.CHANGED, 0); final Annotation httpMethodAnnotation = JdtUtils.resolveAnnotation(affectedMethod, ast, httpMethod.getJavaClassName()); if (httpMethodAnnotation != null) { affectedMethodDelta.addAffectedAnnotation(new JavaElementDelta( httpMethodAnnotation.getJavaAnnotation(), ast, delta.getDeltaKind(), 0)); affectedMethodsDelta.addAffectedElementDelta(affectedMethodDelta); } } final JavaElementChangedBuildJob job = new JavaElementChangedBuildJob( new ElementChangedEvent(affectedMethodsDelta, ElementChangedEvent.POST_CHANGE)); final IProject project = metamodel.getProject(); job.setRule(project.getWorkspace().getRuleFactory().modifyRule(project)); job.schedule(); } catch (CoreException e) { Logger.error("Failed to process change after HTTP Method addition/removal", e); } } }
From source file:org.jboss.tools.ws.jaxrs.ui.cnf.UriPathTemplateCategory.java
License:Open Source License
/** * Triggers a Refresh for all elements in this tree and ensures that the parent {@link UriMappingsContentProvider} * is registered against the {@link IJaxrsMetamodel} to be notified of further changes */// w w w . j a v a 2 s. co m public void refreshContent() { try { final IJaxrsMetamodel metamodel = JaxrsMetamodelLocator.get(javaProject, true); if (metamodel != null) { final JavaElementDelta delta = new JavaElementDelta(javaProject, null, IJavaElementDelta.ADDED, 0); final ElementChangedEvent event = new ElementChangedEvent(delta, ElementChangedEvent.POST_RECONCILE); final JavaElementChangedBuildJob job = new JavaElementChangedBuildJob(event); job.setRule(javaProject.getProject().getWorkspace().getRuleFactory().buildRule()); job.schedule(); job.addJobChangeListener(new JobChangeAdapter() { @Override public void done(final IJobChangeEvent event) { parent.refreshContent(metamodel); } }); } } catch (CoreException e) { Logger.error("Failed to determine the problem severity for the JAX-RS Web Services", e); } }
From source file:org.maven.ide.eclipse.embedder.BuildPathManager.java
License:Apache License
void setClasspathContainer(Map resolved, IProgressMonitor monitor) throws CoreException { monitor.setTaskName("Setting classpath containers"); for (Iterator it = resolved.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); IJavaProject javaProject = JavaCore.create((IProject) entry.getKey()); IClasspathContainer container = (IClasspathContainer) entry.getValue(); if (javaProject != null && container != null) { JavaCore.setClasspathContainer(container.getPath(), new IJavaProject[] { javaProject }, new IClasspathContainer[] { container }, monitor); // XXX In Eclipse 3.3, changes to resolved classpath are not announced by JDT Core // and PackageExplorer does not properly refresh when we update Maven // classpath container. // As a temporary workaround, send F_CLASSPATH_CHANGED notifications // to all PackageExplorerContentProvider instances listening to // java ElementChangedEvent. // Note that even with this hack, build clean is sometimes necessary to // reconcile PackageExplorer with actual classpath // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=154071 if (getJDTVersion().startsWith("3.3")) { DeltaProcessingState state = JavaModelManager.getJavaModelManager().deltaState; synchronized (state) { IElementChangedListener[] listeners = state.elementChangedListeners; for (int i = 0; i < listeners.length; i++) { if (listeners[i] instanceof PackageExplorerContentProvider) { JavaElementDelta delta = new JavaElementDelta(javaProject); delta.changed(IJavaElementDelta.F_CLASSPATH_CHANGED); listeners[i].elementChanged( new ElementChangedEvent(delta, ElementChangedEvent.POST_CHANGE)); }//from w w w .java2 s . c o m } } } } } }