/* * FCLSupport.java * * Created on January 28, 2002, 5:51 PM */ package org.openide.filesystems; /** * Support class for impl. of FileChangeListener * @author rm111737 */ class FCLSupport { public static final int DATA_CREATED = 0; public static final int FOLDER_CREATED = 1; public static final int FILE_CHANGED = 2; public static final int FILE_DELETED = 3; public static final int FILE_RENAMED = 4; public static final int ATTR_CHANGED = 5; /** listeners */ private ListenerList listeners; /* Add new listener to this object. * @param l the listener */ final void addFileChangeListener (FileChangeListener fcl) { if (listeners == null) { synchronized (getClass ()) { if (listeners == null) { listeners = new ListenerList (FileChangeListener.class); } } } listeners.add (fcl); } /* Remove listener from this object. * @param l the listener */ final void removeFileChangeListener (FileChangeListener fcl) { if (listeners != null) { listeners.remove (fcl); } } final void dispatchEvent (FileEvent fe, int operation) { if (listeners == null) return; Object[] fcls = listeners.getAllListeners (); for (int i = 0; i < fcls.length; i++) { if (fcls[i] instanceof FileChangeListener) { dispatchEvent ((FileChangeListener)fcls[i], fe, operation); } } } final static void dispatchEvent (FileChangeListener fcl, FileEvent fe, int operation) { switch( operation ) { case FCLSupport.DATA_CREATED: fcl.fileDataCreated (fe); break; case FCLSupport.FOLDER_CREATED: fcl.fileFolderCreated (fe); break; case FCLSupport.FILE_CHANGED: fcl.fileChanged (fe); break; case FCLSupport.FILE_DELETED: fcl.fileDeleted (fe); break; case FCLSupport.FILE_RENAMED: fcl.fileRenamed ((FileRenameEvent)fe); break; case FCLSupport.ATTR_CHANGED: fcl.fileAttributeChanged ((FileAttributeEvent)fe ); break; } } /** @return true if there is a listener */ final boolean hasListeners () { return listeners != null && listeners.getAllListeners ().length != 0; } }