From: <ez...@us...> - 2010-01-30 07:27:32
|
Revision: 17147 http://jedit.svn.sourceforge.net/jedit/?rev=17147&view=rev Author: ezust Date: 2010-01-30 07:27:26 +0000 (Sat, 30 Jan 2010) Log Message: ----------- File System Browser dynamic menu support (#2938170 - Francois Rey) Modified Paths: -------------- jEdit/trunk/doc/CHANGES.txt jEdit/trunk/org/gjt/sp/jedit/EditPlugin.java jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java Modified: jEdit/trunk/doc/CHANGES.txt =================================================================== --- jEdit/trunk/doc/CHANGES.txt 2010-01-30 01:24:43 UTC (rev 17146) +++ jEdit/trunk/doc/CHANGES.txt 2010-01-30 07:27:26 UTC (rev 17147) @@ -5,8 +5,8 @@ Thanks to Björn "Vampire" Kautler, Alan Ezust, Eric Berry, Shlomy Reinstein, Damien Radtke, Dale Anson, Matthieu Casanova, Eric Le Lay, -Bernhard Walle, Joerg Spieler, Kevin Hunter and Marcelo Vanzin for -contributing to this release. +Bernhard Walle, Joerg Spieler, Kevin Hunter, Fran\xE7ois Rey, +and Marcelo Vanzin for contributing to this release. {{{ Bug fixes @@ -38,6 +38,8 @@ }}} {{{ API changes +- File System Browser dynamic menu support (#2938170 - Fran\xE7ois Rey) + - Added a method for unregistering macro handlers: Macros.unregisterHandler(). - bufferSet api rewritten. Now each editPane have its own bufferSet, Modified: jEdit/trunk/org/gjt/sp/jedit/EditPlugin.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPlugin.java 2010-01-30 01:24:43 UTC (rev 17146) +++ jEdit/trunk/org/gjt/sp/jedit/EditPlugin.java 2010-01-30 07:27:26 UTC (rev 17147) @@ -749,7 +749,9 @@ } String menuProperty = "plugin." + getClassName() + ".browser-menu"; - if(jEdit.getProperty(menuProperty) != null) + String codeProperty = "plugin." + getClassName() + ".browser-menu.code"; + if(jEdit.getProperty(menuProperty) != null + || jEdit.getProperty(codeProperty) != null) { String pluginName = jEdit.getProperty("plugin." + getClassName() + ".name"); Modified: jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2010-01-30 01:24:43 UTC (rev 17146) +++ jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2010-01-30 07:27:26 UTC (rev 17147) @@ -956,6 +956,38 @@ return browserView.getSelectedFiles(); } //}}} + /** + * Return the selected files from the point of view of the + * given component. This method is to be used by code + * running inside VFSBrowser such as a DynamicMenuProvider. + * Use the other method otherwise. + * The main difference is this function searches the component + * hierarchy for a BrowserView.ParentDirectoryList to get + * the list of currently selected files from there. Otherwise, it + * returns what {@link #getSelectedFiles()} would return. + * @param source the source component to start from when + * navigating the component hierarchy + */ + public VFSFile[] getSelectedFiles(Component source) + { + if(GUIUtilities.getComponentParent(source, BrowserView.ParentDirectoryList.class) + != null) + { + Object[] selected = getBrowserView() + .getParentDirectoryList() + .getSelectedValues(); + VFSFile[] returnValue = new VFSFile[ + selected.length]; + System.arraycopy(selected,0,returnValue,0, + selected.length); + return returnValue; + } + else + { + return getSelectedFiles(); + } + } + //{{{ locateFile() method /** * Goes to the given file's directory and selects the file in the list. @@ -1901,43 +1933,16 @@ //{{{ BrowserActionContext class static class BrowserActionContext extends ActionContext { - /** - * If event source hierarchy contains a VFSDirectoryEntryTable, - * this is the currently selected files there. Otherwise, this - * is the currently selected item in the parent directory list. - */ - private static VFSFile[] getSelectedFiles(EventObject evt, - VFSBrowser browser) - { - Component source = (Component)evt.getSource(); - - if(GUIUtilities.getComponentParent(source, BrowserView.ParentDirectoryList.class) - != null) - { - Object[] selected = browser.getBrowserView() - .getParentDirectoryList() - .getSelectedValues(); - VFSFile[] returnValue = new VFSFile[ - selected.length]; - System.arraycopy(selected,0,returnValue,0, - selected.length); - return returnValue; - } - else - { - return browser.getSelectedFiles(); - } - } - @Override public void invokeAction(EventObject evt, EditAction action) { + Component source = (Component)evt.getSource(); VFSBrowser browser = (VFSBrowser) GUIUtilities.getComponentParent( - (Component)evt.getSource(), + source, VFSBrowser.class); - VFSFile[] files = getSelectedFiles(evt,browser); + VFSFile[] files = browser.getSelectedFiles(source); // in the future we will want something better, // eg. having an 'evt' object passed to This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |