/jEdit/tags/jedit-4-0-pre3/bsh/commands/makeWorkspace.bsh
Unknown | 126 lines | 100 code | 26 blank | 0 comment | 0 complexity | 7c08ab9f5e9569684f60adc8c9b4f3bd MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
- import javax.swing.*;
- import bsh.Interpreter;
- import bsh.BshClassManager;
- import bsh.util.JConsole;
- import bsh.util.NameCompletionTable;
- makeWorkspace( String name ) {
- if ( bsh.system.desktop == void ) {
- print("No desktop...");
- return;
- }
- console = new JConsole();
- name="Bsh Workspace: "+name;
- interpreter = new Interpreter( console );
- // provide name completion for console, name source is global namespace
- // move this into JConsole?
- nct = new NameCompletionTable();
- nct.add( interpreter.getNameSpace() );
- try {
- bcm = BshClassManager.getClassManager();
- if ( bcm != null ) {
- classNamesSource = bcm.getClassPath();
- nct.add( classNamesSource );
- }
- } catch ( ClassPathException e ) {
- error("classpath exception in name compl:"+e);
- }
- console.setNameCompletion( nct );
- // end setup name completion
- // for convenience and backwards compatability
- interpreter.set( "bsh.desktop", bsh.system.desktop );
- frame = bsh.system.desktop.makeInternalFrame( name );
- frame.setDefaultCloseOperation( frame.DO_NOTHING_ON_CLOSE );
- internalFrameClosing( e ) {
- close();
- }
- frame.addInternalFrameListener(this);
- actionPerformed( e ) {
- com = e.getActionCommand();
- if ( com.equals("Workspace Editor") )
- workspaceEditor( interpreter, name );
- else if ( com.equals("Capture System in/out/err") )
- captureSysIO();
- else if ( com.equals("Close") ) {
- close();
- }
- }
- /*
- Notes: Careful not to print anything before returning sys io...
- console is now gone.
- */
- close() {
- frame.dispose();
- if ( haveSysIO )
- returnSysIO();
- }
- menubar = new JMenuBar();
- menu=new JMenu("File");
- mi=new JMenuItem("Workspace Editor");
- mi.addActionListener(this);
- menu.add(mi);
- mi=new JMenuItem("Capture System in/out/err");
- mi.addActionListener(this);
- menu.add(mi);
- mi=new JMenuItem("Close");
- mi.addActionListener(this);
- menu.add(mi);
- menubar.add(menu);
- menu = bsh.system.desktop.makeFontMenu( console );
- menubar.add(menu);
- frame.setMenuBar(menubar);
- frame.getContentPane().add("Center", console);
- //frame.pack();
- thread = new Thread( interpreter );
- thread.start();
- frame.setBounds(5,5,600,300);
- // cascade windows?
- //off=bsh.system.desktop.windowCount*10;
- //frame.setLocation( off, off );
- //frame.validate();
- bsh.system.desktop.addInternalFrame( frame );
- frame.toFront();
- frame.setSelected(true);
- haveSysIO=false;
- sysIn = System.in;
- sysOut = System.out;
- sysErr = System.err;
- captureSysIO() {
- super.haveSysIO = true;
- System.setIn( console.getInputStream() );
- System.setOut( console.getOut() );
- System.setErr( console.getErr() );
- }
- returnSysIO() {
- super.haveSysIO = false;
- System.setIn( sysIn );
- System.setOut( sysOut );
- System.setErr( sysErr );
- }
- return interpreter;
- }