1 11 package org.eclipse.jdt.internal.corext.refactoring.changes; 12 13 import org.eclipse.core.runtime.ListenerList; 14 15 import org.eclipse.core.resources.IResourceChangeEvent; 16 import org.eclipse.core.resources.IResourceChangeListener; 17 import org.eclipse.core.resources.ResourcesPlugin; 18 19 20 public class WorkspaceTracker { 21 22 public final static WorkspaceTracker INSTANCE= new WorkspaceTracker(); 23 24 public interface Listener { 25 public void workspaceChanged(); 26 } 27 28 private ListenerList fListeners; 29 private ResourceListener fResourceListener; 30 31 private WorkspaceTracker() { 32 fListeners= new ListenerList(); 33 } 34 35 private class ResourceListener implements IResourceChangeListener { 36 public void resourceChanged(IResourceChangeEvent event) { 37 workspaceChanged(); 38 } 39 } 40 41 private void workspaceChanged() { 42 Object [] listeners= fListeners.getListeners(); 43 for (int i= 0; i < listeners.length; i++) { 44 ((Listener)listeners[i]).workspaceChanged(); 45 } 46 } 47 48 public void addListener(Listener l) { 49 fListeners.add(l); 50 if (fResourceListener == null) { 51 fResourceListener= new ResourceListener(); 52 ResourcesPlugin.getWorkspace().addResourceChangeListener(fResourceListener); 53 } 54 } 55 56 public void removeListener(Listener l) { 57 if (fListeners.size() == 0) 58 return; 59 fListeners.remove(l); 60 if (fListeners.size() == 0) { 61 ResourcesPlugin.getWorkspace().removeResourceChangeListener(fResourceListener); 62 fResourceListener= null; 63 } 64 } 65 } 66 | Popular Tags |