From: Alan E. <ez...@us...> - 2005-09-29 21:45:18
|
Update of /cvsroot/jedit/plugins/ProjectViewer/projectviewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25596 Modified Files: ProjectViewer.java Log Message: Added a NodeSelection possibility for ProjectViewer events. Attempted to clarify some of the documentation in the package.html for event. I think there is a bug in removeProjectViewerListener though - it appears that after reload Console plugin, I get duplicate events. Index: ProjectViewer.java =================================================================== RCS file: /cvsroot/jedit/plugins/ProjectViewer/projectviewer/ProjectViewer.java,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- ProjectViewer.java 21 Sep 2005 00:03:11 -0000 1.93 +++ ProjectViewer.java 29 Sep 2005 21:45:08 -0000 1.94 @@ -237,6 +237,7 @@ listeners.put(view, lst); } lst.add(lstnr); + } //}}} //{{{ +_removeProjectViewerListener(ProjectViewerListener, View)_ : void @@ -342,10 +343,16 @@ } } //}}} - //{{{ +_removeProjectViewerListeners(PluginJAR)_ : void + //{{{ +_removeProjectViewerListeners (2 versions) /** * Removes the listeners loaded by the given plugin from the listener * list. Meant to be called when said plugin is unloaded by jEdit. + * Will not work for a new plugin cleaning up its previous + * reloaded instance's listeners. + * + * I think this verison is buggy and does not work. (sae). + * It should be tested. + * */ public static void removeProjectViewerListeners(PluginJAR jar) { for (Iterator i = listeners.values().iterator(); i.hasNext(); ) { @@ -353,8 +360,23 @@ i.remove(); } } - } //}}} + } + /** + * Uses class filtering to remove listeners. Works even after + * the previous listener has been destroyed. + * + * @param clazz + */ + public void removeProjectViewerListeners(Class clazz, View view) { + for (Iterator itr = getAllListeners(view).iterator(); itr.hasNext(); ) + { + ProjectViewerListener pvl = (ProjectViewerListener) itr.next(); + if (pvl.getClass() == clazz) removeProjectViewerListener(pvl, view); + } + } + // }}} + //{{{ +_addProjectViewerListeners(PluginJAR, View)_ : void /** * Adds to the list of listeners for the given view the listeners that @@ -472,7 +494,8 @@ /** Notify all project viewer instances of a change in a node. */ public static void nodeChanged(VPTNode node) { if (node == null) return; - ProjectViewer.fireNodeSelected(node); + +// ProjectViewer.fireNodeSelected(node); for (Iterator it = viewers.values().iterator(); it.hasNext(); ) { |