/* (non-Javadoc) * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent) */ public void resourceChanged(final IResourceChangeEvent event) { String[] markerTypes = getMarkerTypes(); Set handledResources = new HashSet(); Set changes = new HashSet(); // Accumulate all distinct resources that have had problem marker // changes for (int idx = 0; idx < markerTypes.length; idx++) { IMarkerDelta[] markerDeltas = event.findMarkerDeltas(markerTypes[idx], true); for (int i = 0; i < markerDeltas.length; i++) { IMarkerDelta delta = markerDeltas[i]; IResource resource = delta.getResource(); if (!handledResources.contains(resource)) { handledResources.add(resource); ISynchronizeModelElement[] elements = provider.getClosestExistingParents(delta.getResource()); if (elements != null && elements.length > 0) { for (int j = 0; j < elements.length; j++) { ISynchronizeModelElement element = elements[j]; changes.add(element); } } } } } if (!changes.isEmpty()) { updateMarkersFor( (ISynchronizeModelElement[]) changes.toArray(new ISynchronizeModelElement[changes.size()])); } }