Java源码示例:org.eclipse.jdt.core.ElementChangedEvent

示例1
/**
 * {@inheritDoc}
 */
public void elementChanged(ElementChangedEvent event) {
	IWorkingSet[] workingSets;
	synchronized(fWorkingSets) {
		workingSets= fWorkingSets.toArray(new IWorkingSet[fWorkingSets.size()]);
	}
	for (int w= 0; w < workingSets.length; w++) {
		WorkingSetDelta workingSetDelta= new WorkingSetDelta(workingSets[w]);
		processJavaDelta(workingSetDelta, event.getDelta());
		IResourceDelta[] resourceDeltas= event.getDelta().getResourceDeltas();
		if (resourceDeltas != null) {
			for (int r= 0; r < resourceDeltas.length; r++) {
				processResourceDelta(workingSetDelta, resourceDeltas[r]);
			}
		}
		workingSetDelta.process();
	}
}
 
示例2
@Override
public void elementChanged(ElementChangedEvent event) {
	final IJavaProject javaProject = getCachedJavaProject();
	if (javaProject == null) {
		return;
	}

	final IJavaElementDelta[] children = event.getDelta().getChangedChildren();
	for (int i = 0; i < children.length; i++) {
		final IJavaElementDelta child = children[i];
		if (javaProject.equals(child.getElement())) {
			if (isClasspathChange(child)) {
				setCachedJavaProject(null);
			}
		}
	}
}
 
示例3
public void enableListeners() {

		JavaCore.addElementChangedListener(new ClasspathChangeListener(), ElementChangedEvent.POST_CHANGE);

		subscribeResourceListener();
		subscribeWindowListener();
		subscribeEclipseCloseListener();
		subscribeLaunchListener();
	}
 
示例4
/**
 * Wait explicitly for an {@link ElementChangedEvent} that is propagated when the given Callable is executed.
 * May also be used to assert that no such event occurred. 
 */
protected <T> T waitForElementChangedEvent(Callable<T> callMe, boolean expectEvent) throws Exception {
	class Listener implements IElementChangedListener {
		private volatile boolean eventSeen = false;
		@Override
		public void elementChanged(ElementChangedEvent event) {
			eventSeen = true;
			JavaCore.removeElementChangedListener(this);
		}
	}
	Listener listener = new Listener();
	JavaCore.addElementChangedListener(listener);
	try {
		return callMe.call();
	} finally {
		// usually a counter of 100 is way more than enough, but on the CI server we see a longer
		// delay, maybe the threading model on linux is slightly different. Anyway, the overall runtime
		// on dev boxes is not affected but the test is green on the server
		long before = System.currentTimeMillis();
		int counter = expectEvent ? 350 : 150;
		while(!listener.eventSeen && counter > 0) {
			counter--;
			Thread.sleep(15);
		}
		long timeWaited = System.currentTimeMillis() - before;
		assertEquals("Waited "+timeWaited+"ms.", expectEvent, listener.eventSeen);
	}
}
 
示例5
@Override
public void elementChanged(ElementChangedEvent event) {
	if (event.getDelta() != null) {
		if (isAffectingPackageFragmentRoots(event.getDelta())) {
			initialize();
		}
	}
}
 
示例6
public void initialize() {
	typeResourceUnloader.addListener(eventBroker);
	JavaCore.addElementChangedListener(
			typeResourceUnloader,
			ElementChangedEvent.POST_RECONCILE);

	JavaCore.addElementChangedListener(
			javaChangeQueueFiller,
			ElementChangedEvent.POST_CHANGE);
}
 
示例7
@Override
public void elementChanged(ElementChangedEvent event) {
	List<Delta> deltas = deltaConverter.convert(event.getDelta());
	if (deltas != null && !deltas.isEmpty()) {
		queue.queueChanges(deltas);
	}
}
 
示例8
@Override
public void elementChanged(ElementChangedEvent event) {
	// Collect project names which have classpath changed.
	Set<String> uris = processDelta(event.getDelta(), null);
	if (connection != null && uris != null && !uris.isEmpty()) {
		for (String uri : uris) {
			EventNotification notification = new EventNotification().withType(EventType.ClasspathUpdated).withData(uri);
			this.connection.sendEventNotification(notification);
		}
	}
}
 
示例9
@Override
public void setUp() throws Exception {
  super.setUp();
  JdtQueuedBuildData _jdtQueuedBuildData = new JdtQueuedBuildData();
  this.queuedBuildDataContribution = _jdtQueuedBuildData;
  QueuedBuildData _queuedBuildData = new QueuedBuildData(this.mapper, this.queuedBuildDataContribution);
  this.queuedBuildData = _queuedBuildData;
  JavaChangeQueueFiller _javaChangeQueueFiller = new JavaChangeQueueFiller(this.queuedBuildData, this.converter);
  this.queueFiller = _javaChangeQueueFiller;
  JavaCore.addElementChangedListener(this.queueFiller, ElementChangedEvent.POST_CHANGE);
}
 
示例10
public String waitForElementChangedEvent(final int eventMask, final Procedure0 producer) {
  String _xblockexpression = null;
  {
    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;
}
 
示例11
public void elementChanged(ElementChangedEvent event) {
  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) {
        continue;
      }

      classpathChanged((IJavaProject) element);
    }
  }
}
 
示例12
public void elementChanged(ElementChangedEvent event) {
  final Map<IJavaElement, IJavaElementDelta> changedElements = new HashMap<IJavaElement, IJavaElementDelta>();

  JavaModelSearch.visitJavaElementDelta(event.getDelta(),
      new IJavaElementDeltaVisitor() {
        public boolean visit(IJavaElementDelta delta) {
          IJavaElement element = delta.getElement();

          /*
           * We care about packages being only added or removed because if we
           * called the change listeners on a change to a package, any change
           * to any file in that package will cause all ui.xml files that
           * reference that package (say with xmlns urn imports) to be
           * revalidated. Some projects end up having hundreds of ui.xml files
           * referencing a package, and then saving any change in that package
           * ends up taking tens of seconds.
           */
          int type = element.getElementType();
          if (type == IJavaElement.PACKAGE_FRAGMENT
              && delta.getKind() == IJavaElementDelta.CHANGED) {
            return true;
          }

          Set<IReference> references = referenceManager.getReferencesWithMatchingJavaElement(
              element, EnumSet.of(ReferenceLocationType.TARGET));
          if (references != null && references.size() > 0) {
            changedElements.put(element, delta);
          }
          return true;
        }
      });

  if (changedElements.size() > 0) {
    callReferenceChangeListeners(changedElements);
  }
}
 
示例13
public void elementChanged(ElementChangedEvent e) {
	IJavaElementDelta delta= findElement(fInput, e.getDelta());
	if (delta != null && (delta.getFlags() & (IJavaElementDelta.F_CONTENT | IJavaElementDelta.F_CHILDREN)) != 0) {

		if (shouldIgnoreDelta(e.getDelta().getCompilationUnitAST(), delta))
			return;

		fUpdatingCount++;
		try {
			update(createContext(false));
		} finally {
			fUpdatingCount--;
		}
	}
}
 
示例14
public void elementChanged(final ElementChangedEvent event) {
	try {
		processDelta(event.getDelta());
	} catch(JavaModelException e) {
		JavaPlugin.log(e);
	}
}
 
示例15
public void elementChanged(final ElementChangedEvent event) {
	final ArrayList<Runnable> runnables= new ArrayList<Runnable>();
	try {
		// 58952 delete project does not update Package Explorer [package explorer]
		// if the input to the viewer is deleted then refresh to avoid the display of stale elements
		if (inputDeleted(runnables))
			return;

		processDelta(event.getDelta(), runnables);
	} catch (JavaModelException e) {
		JavaPlugin.log(e);
	} finally {
		executeRunnables(runnables);
	}
}
 
示例16
/**
 * {@inheritDoc}
 */
public void elementChanged(ElementChangedEvent event) {
	List<IJavaElement> changed= new ArrayList<IJavaElement>();
	processDelta(event.getDelta(), changed);
	if (changed.size() == 0)
		return;

	fireChange(changed.toArray(new IJavaElement[changed.size()]));
}
 
示例17
public void elementChanged(ElementChangedEvent event) {
	//long t0= System.currentTimeMillis();
	IJavaElementDelta delta= event.getDelta();
	Set<IAdaptable> removedElements= new HashSet<IAdaptable>();
	Set<IAdaptable> potentiallyRemovedElements= new HashSet<IAdaptable>();
	collectRemoved(potentiallyRemovedElements, removedElements, delta);
	if (removedElements.size() > 0)
		handleRemoved(removedElements);
	if (potentiallyRemovedElements.size() > 0)
		handleRemoved(potentiallyRemovedElements);
	//System.out.println(this+"handled delta in: "+(System.currentTimeMillis()-t0));
}
 
示例18
public void elementChanged(final ElementChangedEvent e) {

					if (getControl() == null)
						return;

					Display d= getControl().getDisplay();
					if (d != null) {
						d.asyncExec(new Runnable() {
							public void run() {
								ICompilationUnit cu= (ICompilationUnit) fInput;
								IJavaElement base= cu;
								if (fTopLevelTypeOnly) {
									base= cu.findPrimaryType();
									if (base == null) {
										if (fOutlineViewer != null)
											fOutlineViewer.refresh(true);
										return;
									}
								}
								IJavaElementDelta delta= findElement(base, e.getDelta());
								if (delta != null && fOutlineViewer != null) {
									fOutlineViewer.reconcile(delta);
								}
							}
						});
					}
				}
 
示例19
public void elementChanged(ElementChangedEvent event) {
	if (fViewer == null)
		return;

	Object input= fViewer.getInput();
	if (!(input instanceof IJavaElement))
		return;

	if (fRunnable != null)
		return;

	final IJavaElement changedElement= getChangedParentElement((IJavaElement) input, event.getDelta());
	if (changedElement == null)
		return;

	fRunnable= new Runnable() {
		public void run() {
			if (fViewer == null)
				return;

			Object newInput= getCurrentInput();
			if (newInput instanceof IJavaElement)
				newInput= getInput((IJavaElement) newInput);

			fViewer.setInput(newInput);
			fRunnable= null;
		}
	};
	fViewer.getControl().getDisplay().asyncExec(fRunnable);
}
 
示例20
public void elementChanged(ElementChangedEvent event) {
	if (fChangeListeners.isEmpty()) {
		return;
	}

	if (fHierarchyRefreshNeeded) {
		return;
	} else {
		ArrayList<IType> changedTypes= new ArrayList<IType>();
		processDelta(event.getDelta(), changedTypes);
		if (changedTypes.size() > 0) {
			fireChange(changedTypes.toArray(new IType[changedTypes.size()]));
		}
	}
}
 
示例21
public void elementChanged(ElementChangedEvent event) {
	IJavaProject javaProject= getCachedJavaProject();
	if (javaProject == null)
		return;

	IJavaElementDelta[] children= event.getDelta().getChangedChildren();
	for (int i= 0; i < children.length; i++) {
		IJavaElementDelta child= children[i];
		if (javaProject.equals(child.getElement())) {
			if (isClasspathChange(child)) {
				setCachedJavaProject(null);
			}
		}
	}
}
 
示例22
public void elementChanged(ElementChangedEvent event) {
	if (isRunningInReconcilerThread())
		return;

	if (event.getDelta().getFlags() == IJavaElementDelta.F_AST_AFFECTED || canIgnore(event.getDelta().getAffectedChildren()))
		return;

	setJavaModelChanged(true);
	if (isEditorActive())
		JavaReconciler.this.forceReconciling();
}
 
示例23
public void elementChanged(ElementChangedEvent event) {
	ITypedElement[] elements= findAffectedElement(event);
	for (int i= 0; i < elements.length; i++) {
		ITypedElement e= elements[i];
		if (e == null || !(e instanceof IContentChangeNotifier))
			continue;
		contentChanged((IContentChangeNotifier)e);
	}
}
 
示例24
/**
 * Tells which elements of the comparison are affected by the change.
 * 
 * @param event element changed event
 * @return array of typed elements affected by the event. May return an empty array.
 * @since 3.5
 */
private ITypedElement[] findAffectedElement(ElementChangedEvent event) {
	Object input= getInput();
	if (!(input instanceof ICompareInput))
		return new ITypedElement[0];

	Set<ITypedElement> affectedElements= new HashSet<ITypedElement>();
	ICompareInput ci= (ICompareInput)input;
	IJavaElementDelta delta= event.getDelta();
	addAffectedElement(ci.getAncestor(), delta, affectedElements);
	addAffectedElement(ci.getLeft(), delta, affectedElements);
	addAffectedElement(ci.getRight(), delta, affectedElements);

	return affectedElements.toArray(new ITypedElement[affectedElements.size()]);
}
 
示例25
public void elementChanged(ElementChangedEvent event) {
	try {
		processDelta(event.getDelta());
	} catch (JavaModelException e) {
		JavaPlugin.log(e);
	}
}
 
示例26
public void elementChanged(final ElementChangedEvent event) {
	try {
		processDelta(event.getDelta());
	} catch(JavaModelException e) {
		JavaPlugin.log(e.getStatus());
	}
}
 
示例27
public void init(WorkingSetModel model) {
	fWorkingSetModel= model;
	fResourceChangeListener= new ResourceChangeListener();
	ResourcesPlugin.getWorkspace().addResourceChangeListener(fResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
	fWorkingSetListener= new WorkingSetListener();
	PlatformUI.getWorkbench().getWorkingSetManager().addPropertyChangeListener(fWorkingSetListener);
	fJavaElementChangeListener= new JavaElementChangeListener();
	JavaCore.addElementChangedListener(fJavaElementChangeListener, ElementChangedEvent.POST_CHANGE);
}
 
示例28
public void elementChanged(ElementChangedEvent event) {
	final IJavaElementDelta delta = event.getDelta();
	Display.getDefault().syncExec(new Runnable() {
	    public void run() {
	    	processDelta(delta);
	    }
	});
}
 
示例29
@Override
public void elementChanged(ElementChangedEvent event) {
  visit(event.getDelta());
}
 
示例30
@Override
public void start(BundleContext context) {
  JavaCore.addElementChangedListener(listener, ElementChangedEvent.POST_CHANGE);
}