package com.vividsolutions.jump.workbench.ui.plugin; import java.awt.BorderLayout; import java.awt.Dimension; import java.io.PrintStream; import java.io.Reader; import bsh.ConsoleInterface; import bsh.EvalError; import bsh.Interpreter; import bsh.util.JConsole; import com.vividsolutions.jump.I18N; import com.vividsolutions.jump.workbench.plugin.PlugInContext; import com.vividsolutions.jump.workbench.ui.MenuNames; import com.vividsolutions.jump.workbench.ui.toolbox.ToolboxDialog; import com.vividsolutions.jump.workbench.ui.toolbox.ToolboxPlugIn; public class BeanShellPlugIn extends ToolboxPlugIn { private static final String sName = I18N.get("com.vividsolutions.jump.workbench.ui.plugin.BeanShellPlugIn.BeanShell-Console"); public void initialize(PlugInContext context) throws Exception { // [Michael Michaud 2007-03-23] // Moves MenuNames.TOOLS/MenuNames.TOOLS_PROGRAMMING to MenuNames.CUSTOMIZE createMainMenuItem(new String[]{MenuNames.CUSTOMIZE}, null, context .getWorkbenchContext()); } public String getName() { // [Michael Michaud 2007-03-23] Rename BeanShell to BeanShell Console to differentiate // from BeanShell scripts menus return sName; } protected void initializeToolbox(ToolboxDialog toolbox) { try { final JConsole console = new JConsole(); console.setPreferredSize(new Dimension(430, 240)); console.print(I18N.get("ui.plugin.BeanShellPlugIn.the-workbenchcontext-may-be-referred-to-as-wc")); console.print(I18N.get("ui.plugin.BeanShellPlugIn.warning-pasting-in-multiple-statements-may-cause-the-application-to-freeze")); toolbox.getCenterPanel().add(console, BorderLayout.CENTER); Interpreter interpreter = new Interpreter(console); interpreter.setClassLoader(toolbox.getContext().getWorkbench() .getPlugInManager().getClassLoader()); interpreter.set("wc", toolbox.getContext()); interpreter.eval("setAccessibility(true)"); interpreter.eval("import com.vividsolutions.jts.geom.*"); interpreter.eval("import com.vividsolutions.jump.feature.*"); new Thread(interpreter).start(); } catch (EvalError e) { toolbox.getContext().getErrorHandler().handleThrowable(e); } } }