PageRenderTime 45ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/jEdit/tags/jedit-4-3-pre5/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
  1. /**
  2. * Make a new workspaceEditor associated with a workspace and place it on the
  3. * desktop.
  4. *
  5. * @method workspaceEditor( bsh.Interpreter parent, String name )
  6. *
  7. * @author Pat Niemeyer
  8. * @author Daniel Leuck
  9. */
  10. import java.awt.Insets;
  11. import bsh.Interpreter;
  12. workspaceEditor(Interpreter parent, String name )
  13. {
  14. if ( bsh.system.desktop == void ) {
  15. print("This only works with the bsh desktop...");
  16. return;
  17. }
  18. this.textarea = new JTextArea(15,40);
  19. textarea.setLineWrap(true);
  20. textarea.setWrapStyleWord(true);
  21. textarea.setTabSize(4);
  22. textarea.setMargin( new Insets(5,5,5,5) );
  23. textarea.font=new Font("Monospaced", 0, 12);
  24. // probably should overload desktop makeInternalFrame
  25. this.frame =
  26. new JInternalFrame("Editor for: "+name, true, true, true, true );
  27. frame.frameIcon=bsh.system.icons.script;
  28. frame.getContentPane().add( new JScrollPane(textarea), "Center");
  29. frame.setVisible( true );
  30. open()
  31. {
  32. this.chooser = new JFileChooser();
  33. chooser.setCurrentDirectory( pathToFile(bsh.cwd) );
  34. this.returnVal = chooser.showOpenDialog( bsh.system.desktop.pane );
  35. if (returnVal == JFileChooser.APPROVE_OPTION) {
  36. this.file = chooser.getSelectedFile();
  37. this.reader=new FileReader( file );
  38. this.ca=new char [file.length()];
  39. reader.read(ca);
  40. textarea.setText( new String(ca) );
  41. }
  42. }
  43. save()
  44. {
  45. this.chooser = new JFileChooser();
  46. chooser.setCurrentDirectory( pathToFile(bsh.cwd) );
  47. this.returnVal = chooser.showSaveDialog( bsh.system.desktop.pane );
  48. if (returnVal == JFileChooser.APPROVE_OPTION) {
  49. this.file = chooser.getSelectedFile();
  50. this.writer=new FileWriter( file );
  51. writer.write( textarea.getText().toCharArray() );
  52. writer.close();
  53. }
  54. }
  55. run()
  56. {
  57. this.interpreter = makeWorkspace( "Run Output: " +name);
  58. // should make this new namespace... look at run() command
  59. interpreter.eval( textarea.getText() );
  60. print("done run...");
  61. }
  62. actionPerformed(e)
  63. {
  64. this.com = e.getActionCommand();
  65. if ( com.equals("Close") )
  66. frame.setClosed(true);
  67. else if ( com.equals("New") )
  68. textarea.setText("");
  69. else if ( com.equals("Open") )
  70. open();
  71. else if ( com.equals("Save") )
  72. save();
  73. else if ( com.equals("Eval in Workspace") )
  74. // eval in parent global namespace
  75. parent.eval( textarea.getText() );
  76. else if ( com.equals("Run in new Workspace") )
  77. run();
  78. }
  79. this.menubar = new JMenuBar();
  80. this.menu = new JMenu("File");
  81. this.mi = new JMenuItem("New");
  82. mi.addActionListener(this);
  83. menu.add(mi);
  84. mi = new JMenuItem("Open");
  85. mi.addActionListener(this);
  86. menu.add(mi);
  87. mi = new JMenuItem("Save");
  88. mi.addActionListener(this);
  89. menu.add(mi);
  90. mi = new JMenuItem("Close");
  91. mi.addActionListener(this);
  92. menu.add(mi);
  93. menubar.add(menu);
  94. menu = new JMenu("Evaluate");
  95. mi = new JMenuItem("Eval in Workspace");
  96. mi.addActionListener(this);
  97. menu.add(mi);
  98. mi = new JMenuItem("Run in new Workspace");
  99. mi.addActionListener(this);
  100. menu.add(mi);
  101. menubar.add(menu);
  102. menu = fontMenu( textarea );
  103. menubar.add(menu);
  104. frame.setMenuBar( menubar );
  105. frame.pack();
  106. bsh.system.desktop.addInternalFrame( frame );
  107. frame.selected=true;
  108. return frame;
  109. }