bsh.commands.makeWorkspace.bsh Maven / Gradle / Ivy
The newest version!
/**
* Creates a JConsole in a JInternalFrame and adds it to the desktop
*
* @return this (the workspace scripted object for allowing access to the
* frame, interpreter, etc.)
*
* @author Pat Niemeyer
* @author Daniel Leuck (bug fixes)
*/
import javax.swing.*;
import bsh.Interpreter;
import bsh.BshClassManager;
import bsh.ClassPathException;
import bsh.util.JConsole;
import bsh.util.NameCompletionTable;
makeWorkspace( String name )
{
if ( bsh.system.desktop == void ) {
print("No desktop...");
return;
}
this.console = new JConsole();
this.name="Bsh Workspace: "+name;
this.interpreter = new Interpreter( console );
// provide name completion for console, name source is global namespace
// move this into JConsole?
// Access to read classpath is protected
try {
this.nct = new NameCompletionTable();
nct.add( interpreter.getNameSpace() );
try {
this.bcm = this.caller.namespace.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
} catch ( SecurityException e ) { }
// for convenience and backwards compatability
interpreter.set( "bsh.desktop", bsh.system.desktop );
this.frame = bsh.system.desktop.makeInternalFrame( name );
frame.frameIcon=bsh.system.icons.workspace;
/*
Notes: Careful not to print anything before returning sys io...
console is now gone.
*/
internalFrameClosing( e ) {
if ( haveSysIO )
returnSysIO();
}
internalFrameActivated(ife) {}
internalFrameDeactivated(ife) {}
internalFrameClosed(ife) {}
internalFrameOpened(ife) {}
internalFrameIconified(ife) {}
internalFrameDeiconified(ife) {}
frame.addInternalFrameListener(this);
actionPerformed( e )
{
this.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") ) {
frame.setClosed(true);
}
}
this.menubar = new JMenuBar();
this.menu=new JMenu("File");
this.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 = fontMenu(console);
menubar.add(menu);
frame.setMenuBar(menubar);
frame.getContentPane().add("Center", console);
//frame.pack();
this.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);
this.haveSysIO=false;
this.sysIn = System.in;
this.sysOut = System.out;
this.sysErr = System.err;
captureSysIO() {
super.haveSysIO = true; // old scoping rules
System.setIn( console.getInputStream() );
System.setOut( console.getOut() );
System.setErr( console.getErr() );
}
returnSysIO() {
super.haveSysIO = false; // old scoping rules
System.setIn( sysIn );
System.setOut( sysOut );
System.setErr( sysErr );
}
return this;
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy