Revision: 5521 http://sourceforge.net/p/jump-pilot/code/5521 Author: edso Date: 2017-10-22 15:12:35 +0000 (Sun, 22 Oct 2017) Log Message: ----------- preliminary support for autowrapping Cursortools into PlugIns for eventually installing CursorTools from a default-plugins.xml listing
Modified Paths: -------------- core/trunk/src/com/vividsolutions/jump/workbench/plugin/PlugInManager.java Added Paths: ----------- core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/CursorToolPluginWrapper.java Modified: core/trunk/src/com/vividsolutions/jump/workbench/plugin/PlugInManager.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/plugin/PlugInManager.java 2017-10-22 13:24:13 UTC (rev 5520) +++ core/trunk/src/com/vividsolutions/jump/workbench/plugin/PlugInManager.java 2017-10-22 15:12:35 UTC (rev 5521) @@ -52,6 +52,8 @@ import com.vividsolutions.jump.workbench.Logger; import com.vividsolutions.jump.workbench.WorkbenchContext; import com.vividsolutions.jump.workbench.WorkbenchProperties; +import com.vividsolutions.jump.workbench.ui.cursortool.CursorTool; +import com.vividsolutions.jump.workbench.ui.cursortool.CursorToolPluginWrapper; import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller; /** @@ -245,22 +247,35 @@ // make sure we use the plugin classloader for plugins plugInClass = classLoader.loadClass(className); - PlugIn plugIn = (PlugIn) plugInClass.newInstance(); + if (plugInClass == null) + throw new JUMPException("class '"+className+"' is not available in the class path!"); + Object o = plugInClass.newInstance(); + PlugIn plugIn; + if (o instanceof CursorTool) { + plugIn = new CursorToolPluginWrapper((CursorTool) o); + } else { + plugIn = (PlugIn) o; + } + plugIn.initialize(pc); - + // get plugin's menu settings Map<String, Map> menuSettings = props.getSettings(new String[] { WorkbenchProperties.KEY_PLUGIN, className, WorkbenchProperties.KEY_MENUS}); - + // interpret menu settings for (Map.Entry<String, Map> entry : menuSettings.entrySet()) { - + String menuKey = entry.getKey(); - if (pc.getFeatureInstaller().fetchMenuForKey(menuKey)==null) + if (pc.getFeatureInstaller().fetchMenuForKey(menuKey)==null){ + if (menuKey != "order_id") + Logger.error("'"+menuKey+"' is an invalid menu handle."); + continue; - + } + // install me to menu? String installSetting = props.getSetting(new String[] { WorkbenchProperties.KEY_PLUGIN, className, Added: core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/CursorToolPluginWrapper.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/CursorToolPluginWrapper.java (rev 0) +++ core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/CursorToolPluginWrapper.java 2017-10-22 15:12:35 UTC (rev 5521) @@ -0,0 +1,60 @@ +package com.vividsolutions.jump.workbench.ui.cursortool; + +import javax.swing.Icon; +import javax.swing.ImageIcon; + +import com.vividsolutions.jump.workbench.plugin.PlugIn; +import com.vividsolutions.jump.workbench.plugin.PlugInContext; +import com.vividsolutions.jump.workbench.ui.LayerViewPanel; + +/** + * a simple wrapper to reuse a cursor tool as a plugin w/in the ui. + */ +public class CursorToolPluginWrapper implements PlugIn { + + CursorTool tool; + + /** + * create a plugin instance for the given cursor tool + * + * make sure the cursor tool respects shortcuts by wrapping it into + * {@link com.vividsolutions.jump.workbench.ui.cursortool.QuasimodeTool} + * + * @param cursorTool + */ + public CursorToolPluginWrapper(CursorTool cursorTool) { + super(); + final QuasimodeTool quasimodeTool = cursorTool instanceof QuasimodeTool ? (QuasimodeTool) cursorTool + : QuasimodeTool.createWithDefaults(cursorTool); + this.tool = quasimodeTool; + } + + @Override + public void initialize(PlugInContext context) throws Exception { + } + + @Override + public boolean execute(PlugInContext context) throws Exception { + LayerViewPanel lvp = context.getLayerViewPanel(); + + if (lvp != null) { + lvp.setCurrentCursorTool(tool); + return true; + } + return false; + } + + @Override + public String getName() { + return tool.getName(); + } + + public ImageIcon getIcon() { + // we really only use ImageIcons anyway for CursorTools + Icon icon = tool.getIcon(); + if (icon instanceof ImageIcon) + return ((ImageIcon) icon); + return null; + } + +} Property changes on: core/trunk/src/com/vividsolutions/jump/workbench/ui/cursortool/CursorToolPluginWrapper.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel