/jEdit/tags/jedit-4-2-pre14/bsh/commands/workspaceEditor.bsh
Unknown | 124 lines | 109 code | 15 blank | 0 comment | 0 complexity | 62a4fb4c6ff1749e2cf5241e3bebe7d2 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
- /**
- * Make a new workspaceEditor associated with a workspace and place it on the
- * desktop.
- *
- * @method workspaceEditor( bsh.Interpreter parent, String name )
- *
- * @author Pat Niemeyer
- * @author Daniel Leuck
- */
-
- import java.awt.Insets;
- import bsh.Interpreter;
- workspaceEditor(Interpreter parent, String name )
- {
-
- if ( bsh.system.desktop == void ) {
- print("This only works with the bsh desktop...");
- return;
- }
- this.textarea = new JTextArea(15,40);
- textarea.setLineWrap(true);
- textarea.setWrapStyleWord(true);
- textarea.setTabSize(4);
- textarea.setMargin( new Insets(5,5,5,5) );
- textarea.font=new Font("Monospaced", 0, 12);
- // probably should overload desktop makeInternalFrame
- this.frame =
- new JInternalFrame("Editor for: "+name, true, true, true, true );
- frame.frameIcon=bsh.system.icons.script;
- frame.getContentPane().add( new JScrollPane(textarea), "Center");
- frame.setVisible( true );
- open()
- {
- this.chooser = new JFileChooser();
- chooser.setCurrentDirectory( pathToFile(bsh.cwd) );
- this.returnVal = chooser.showOpenDialog( bsh.system.desktop.pane );
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- this.file = chooser.getSelectedFile();
- this.reader=new FileReader( file );
- this.ca=new char [file.length()];
- reader.read(ca);
- textarea.setText( new String(ca) );
- }
- }
- save()
- {
- this.chooser = new JFileChooser();
- chooser.setCurrentDirectory( pathToFile(bsh.cwd) );
- this.returnVal = chooser.showSaveDialog( bsh.system.desktop.pane );
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- this.file = chooser.getSelectedFile();
- this.writer=new FileWriter( file );
- writer.write( textarea.getText().toCharArray() );
- writer.close();
- }
- }
- run()
- {
- this.interpreter = makeWorkspace( "Run Output: " +name);
- // should make this new namespace... look at run() command
- interpreter.eval( textarea.getText() );
- print("done run...");
- }
- actionPerformed(e)
- {
- this.com = e.getActionCommand();
- if ( com.equals("Close") )
- frame.setClosed(true);
- else if ( com.equals("New") )
- textarea.setText("");
- else if ( com.equals("Open") )
- open();
- else if ( com.equals("Save") )
- save();
- else if ( com.equals("Eval in Workspace") )
- // eval in parent global namespace
- parent.eval( textarea.getText() );
- else if ( com.equals("Run in new Workspace") )
- run();
- }
- this.menubar = new JMenuBar();
- this.menu = new JMenu("File");
- this.mi = new JMenuItem("New");
- mi.addActionListener(this);
- menu.add(mi);
- mi = new JMenuItem("Open");
- mi.addActionListener(this);
- menu.add(mi);
- mi = new JMenuItem("Save");
- mi.addActionListener(this);
- menu.add(mi);
- mi = new JMenuItem("Close");
- mi.addActionListener(this);
- menu.add(mi);
- menubar.add(menu);
- menu = new JMenu("Evaluate");
- mi = new JMenuItem("Eval in Workspace");
- mi.addActionListener(this);
- menu.add(mi);
- mi = new JMenuItem("Run in new Workspace");
- mi.addActionListener(this);
- menu.add(mi);
- menubar.add(menu);
- menu = fontMenu( textarea );
- menubar.add(menu);
- frame.setMenuBar( menubar );
- frame.pack();
- bsh.system.desktop.addInternalFrame( frame );
- frame.selected=true;
- return frame;
- }