All Downloads are FREE. Search and download functionalities are using the official Maven repository.

bsh.commands.makeWorkspace.bsh Maven / Gradle / Ivy

Go to download

BeanShell is a small, free, embeddable Java source interpreter with object scripting language features, written in Java. BeanShell dynamically executes standard Java syntax and extends it with common scripting conveniences such as loose types, commands, and method closures like those in Perl and JavaScript.

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