public void resourceChanged(final IResourceChangeEvent event) { IResourceDelta delta = event.getDelta(); if (delta == null) return; // ignore clean builds if (event.getBuildKind() == IncrementalProjectBuilder.CLEAN_BUILD) return; // search for changes related to Server projects Trace.trace(Trace.RESOURCES, "->- ServerResourceChangeListener responding to resource change: " + event.getType() + " ->-"); IResourceDelta[] children = delta.getAffectedChildren(); if (children != null) { int size = children.length; for (int i = 0; i < size; i++) { IResource resource = children[i].getResource(); if (resource != null && resource instanceof IProject) { projectChanged((IProject) resource, children[i]); } } } // search for changes to any project using a visitor try { delta.accept(new IResourceDeltaVisitor() { public boolean visit(IResourceDelta visitorDelta) { IResource resource = visitorDelta.getResource(); // only respond to project changes if (resource != null && resource instanceof IProject) { publishHandleProjectChange(visitorDelta, event); return false; } return true; } }); } catch (Exception e) { Trace.trace(Trace.SEVERE, "Error responding to resource change", e); } Trace.trace(Trace.RESOURCES, "-<- Done ServerResourceChangeListener responding to resource change -<-"); }