You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TopFrame.java 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. /* *******************************************************************
  2. * Copyright (c) 1999-2001 Xerox Corporation,
  3. * 2002 Palo Alto Research Center, Incorporated (PARC).
  4. * All rights reserved.
  5. * This program and the accompanying materials are made available
  6. * under the terms of the Eclipse Public License v1.0
  7. * which accompanies this distribution and is available at
  8. * http://www.eclipse.org/legal/epl-v10.html
  9. *
  10. * Contributors:
  11. * Xerox/PARC initial implementation
  12. * ******************************************************************/
  13. package org.aspectj.tools.ajbrowser.ui.swing;
  14. import java.awt.BorderLayout;
  15. import java.awt.Color;
  16. import java.awt.Dimension;
  17. import java.awt.FlowLayout;
  18. import java.awt.event.ActionEvent;
  19. import java.awt.event.KeyEvent;
  20. import java.awt.event.WindowEvent;
  21. import java.io.File;
  22. import javax.swing.AbstractAction;
  23. import javax.swing.BorderFactory;
  24. import javax.swing.ImageIcon;
  25. import javax.swing.JButton;
  26. import javax.swing.JFileChooser;
  27. import javax.swing.JFrame;
  28. import javax.swing.JLabel;
  29. import javax.swing.JMenu;
  30. import javax.swing.JMenuBar;
  31. import javax.swing.JMenuItem;
  32. import javax.swing.JPanel;
  33. import javax.swing.JPopupMenu;
  34. import javax.swing.JSplitPane;
  35. import javax.swing.JToolBar;
  36. import javax.swing.KeyStroke;
  37. import javax.swing.border.Border;
  38. import javax.swing.filechooser.FileFilter;
  39. import org.aspectj.ajde.Ajde;
  40. import org.aspectj.ajde.ui.swing.AJButtonMenuCombo;
  41. import org.aspectj.ajde.ui.swing.BuildConfigPopupMenu;
  42. import org.aspectj.ajde.ui.swing.MultiStructureViewPanel;
  43. import org.aspectj.asm.IProgramElement;
  44. import org.aspectj.tools.ajbrowser.BrowserManager;
  45. import org.aspectj.tools.ajbrowser.ui.BrowserMessageHandler;
  46. import org.aspectj.tools.ajbrowser.ui.EditorManager;
  47. /**
  48. * UI for standalone operation.
  49. *
  50. * @author Mik Kersten
  51. */
  52. public class TopFrame extends JFrame {
  53. private static final long serialVersionUID = 1007473581156451702L;
  54. private static final File CURRENT_DIR = new File(".");
  55. public JLabel statusText_label = new JLabel();
  56. private JPanel editor_panel = null;
  57. private JPanel sourceEditor_panel = null;
  58. private JMenuBar menuBar = new JMenuBar();
  59. private JMenu jMenu1 = new JMenu();
  60. private JMenu jMenu2 = new JMenu();
  61. private JMenuItem projectBuild_menuItem = new JMenuItem();
  62. private FlowLayout left_flowLayout = new FlowLayout();
  63. private JMenuItem jMenuItem1 = new JMenuItem();
  64. private JMenuItem exit_menuItem = new JMenuItem();
  65. private JSplitPane top_splitPane = new JSplitPane();
  66. private BorderLayout borderLayout3 = new BorderLayout();
  67. private JMenuItem projectRun_menuItem = new JMenuItem();
  68. private JMenuItem projectRunOther_menuItem = new JMenuItem();
  69. private JPanel status_panel = new JPanel();
  70. private BorderLayout borderLayout4 = new BorderLayout();
  71. private Border emptyBorder = BorderFactory.createEmptyBorder();
  72. private JPanel toolbar_panel = new JPanel();
  73. private JSplitPane right_splitPane = new JSplitPane();
  74. private MessageHandlerPanel messages_panel = null;
  75. private JMenu tools_menu = new JMenu();
  76. private JMenuItem joinpointProbe_menuItem = new JMenuItem();
  77. private JMenuItem projectDebug_menuItem = new JMenuItem();
  78. private JMenuItem svProperties_menuItem = new JMenuItem();
  79. private File lastChosenDir = CURRENT_DIR;
  80. JPanel toolBar_panel = new JPanel();
  81. JToolBar build_toolBar = new JToolBar();
  82. JButton closeConfig_button = new JButton();
  83. JButton openConfig_button = new JButton();
  84. JButton run_button = new JButton();
  85. JToolBar project_toolBar = new JToolBar();
  86. JButton save_button = new JButton();
  87. JButton options_button = new JButton();
  88. JButton editConfig_button = new JButton();
  89. JToolBar file_toolBar = new JToolBar();
  90. JPanel filler_panel = new JPanel();
  91. BorderLayout borderLayout5 = new BorderLayout();
  92. BorderLayout borderLayout6 = new BorderLayout();
  93. Border border8;
  94. JLabel jLabel1 = new JLabel();
  95. JLabel jLabel2 = new JLabel();
  96. JPanel multiView_panel;
  97. private AJButtonMenuCombo buildCombo;
  98. public void init(MultiStructureViewPanel multiViewPanel,
  99. MessageHandlerPanel compilerMessagesPanel, JPanel editorPanel) {
  100. try {
  101. this.multiView_panel = multiViewPanel;
  102. this.messages_panel = compilerMessagesPanel;
  103. this.editor_panel = editorPanel;
  104. this.sourceEditor_panel = editorPanel;
  105. jbInit();
  106. svProperties_menuItem.setIcon(Ajde.getDefault()
  107. .getIconRegistry().getBrowserOptionsIcon());
  108. projectBuild_menuItem.setIcon(Ajde.getDefault()
  109. .getIconRegistry().getBuildIcon());
  110. projectRun_menuItem.setIcon(Ajde.getDefault()
  111. .getIconRegistry().getExecuteIcon());
  112. projectRunOther_menuItem.setIcon(Ajde.getDefault()
  113. .getIconRegistry().getExecuteIcon());
  114. projectDebug_menuItem.setIcon(Ajde.getDefault()
  115. .getIconRegistry().getDebugIcon());
  116. this.setJMenuBar(menuBar);
  117. this.setIconImage(((ImageIcon) Ajde.getDefault()
  118. .getIconRegistry().getStructureSwingIcon(
  119. IProgramElement.Kind.ADVICE)).getImage());
  120. this.setLocation(75, 10);
  121. this.setSize(900, 650);
  122. this.setTitle(BrowserManager.TITLE);
  123. // bindKeys();
  124. fixButtonBorders();
  125. messages_panel.setVisible(false);
  126. JPopupMenu orderMenu = new BuildConfigPopupMenu(
  127. new AbstractAction() {
  128. private static final long serialVersionUID = 1L;
  129. public void actionPerformed(ActionEvent arg0) {
  130. BrowserManager.getDefault().saveAll();
  131. }
  132. });
  133. buildCombo = new AJButtonMenuCombo("Build", "Build", Ajde
  134. .getDefault().getIconRegistry().getBuildIcon(), orderMenu,
  135. false);
  136. build_toolBar.add(buildCombo, 1);
  137. refreshBuildMenu();
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. }
  141. }
  142. private void refreshBuildMenu() {
  143. JPopupMenu orderMenu = new BuildConfigPopupMenu(new AbstractAction() {
  144. private static final long serialVersionUID = -3204840278758386318L;
  145. public void actionPerformed(ActionEvent arg0) {
  146. BrowserManager.getDefault().saveAll();
  147. }
  148. });
  149. buildCombo.setMenu(orderMenu);
  150. }
  151. public void setEditorPanel(JPanel panel) {
  152. editor_panel = panel;
  153. right_splitPane.remove(editor_panel);
  154. right_splitPane.add(panel, JSplitPane.TOP);
  155. panel.setVisible(true);
  156. }
  157. /**
  158. * @todo get rid of this method and make jbinit() work properly
  159. */
  160. private void fixButtonBorders() {
  161. run_button.setBorder(null);
  162. options_button.setBorder(null);
  163. openConfig_button.setBorder(null);
  164. closeConfig_button.setBorder(null);
  165. save_button.setBorder(null);
  166. editConfig_button.setBorder(null);
  167. }
  168. private void jbInit() throws Exception {
  169. border8 = BorderFactory.createCompoundBorder(BorderFactory
  170. .createEtchedBorder(Color.white, new Color(156, 156, 158)),
  171. BorderFactory.createEmptyBorder(2, 2, 2, 2));
  172. emptyBorder = BorderFactory.createEmptyBorder(2, 2, 2, 2);
  173. jMenu1.setFont(new java.awt.Font("Dialog", 0, 11));
  174. jMenu1.setText("File");
  175. jMenu1.setMnemonic(KeyEvent.VK_F);
  176. jMenu2.setFont(new java.awt.Font("Dialog", 0, 11));
  177. jMenu2.setText("Project");
  178. jMenu2.setMnemonic(KeyEvent.VK_P);
  179. projectBuild_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
  180. projectBuild_menuItem.setText("Build");
  181. projectBuild_menuItem.setMnemonic(KeyEvent.VK_B);
  182. projectBuild_menuItem.setAccelerator(KeyStroke.getKeyStroke(
  183. KeyEvent.VK_B, ActionEvent.ALT_MASK));
  184. projectBuild_menuItem
  185. .addActionListener(new java.awt.event.ActionListener() {
  186. public void actionPerformed(ActionEvent e) {
  187. projectBuild_menuItem_actionPerformed(e);
  188. }
  189. });
  190. left_flowLayout.setAlignment(FlowLayout.LEFT);
  191. jMenuItem1.setFont(new java.awt.Font("Dialog", 0, 11));
  192. jMenuItem1.setText("Save");
  193. jMenuItem1.setMnemonic(KeyEvent.VK_S);
  194. jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
  195. ActionEvent.ALT_MASK));
  196. jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
  197. public void actionPerformed(ActionEvent e) {
  198. jMenuItem1_actionPerformed(e);
  199. }
  200. });
  201. exit_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
  202. exit_menuItem.setText("Exit");
  203. exit_menuItem.addActionListener(new java.awt.event.ActionListener() {
  204. public void actionPerformed(ActionEvent e) {
  205. exit_menuItem_actionPerformed(e);
  206. }
  207. });
  208. top_splitPane.setPreferredSize(new Dimension(706, 800));
  209. top_splitPane.setDividerSize(4);
  210. this.getContentPane().setLayout(borderLayout3);
  211. projectRun_menuItem.setEnabled(true);
  212. projectRun_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
  213. projectRun_menuItem.setText("Run in same VM");
  214. projectRun_menuItem
  215. .setToolTipText("Run in same VM (hold shift down to run in separate process)");
  216. projectRun_menuItem.setMnemonic(KeyEvent.VK_R);
  217. projectRun_menuItem.setAccelerator(KeyStroke.getKeyStroke(
  218. KeyEvent.VK_R, ActionEvent.ALT_MASK));
  219. projectRun_menuItem
  220. .addActionListener(new java.awt.event.ActionListener() {
  221. public void actionPerformed(ActionEvent e) {
  222. projectRun_menuItem_actionPerformed(e);
  223. }
  224. });
  225. projectRunOther_menuItem.setEnabled(true);
  226. projectRunOther_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
  227. projectRunOther_menuItem.setText("Run in separate process");
  228. projectRunOther_menuItem.setMnemonic(KeyEvent.VK_P);
  229. projectRunOther_menuItem.setAccelerator(KeyStroke.getKeyStroke(
  230. KeyEvent.VK_P, ActionEvent.ALT_MASK));
  231. projectRunOther_menuItem
  232. .addActionListener(new java.awt.event.ActionListener() {
  233. public void actionPerformed(ActionEvent e) {
  234. projectRunOther_menuItem_actionPerformed(e);
  235. }
  236. });
  237. statusText_label.setFont(new java.awt.Font("Dialog", 0, 11));
  238. statusText_label.setBorder(BorderFactory.createLoweredBevelBorder());
  239. statusText_label.setMaximumSize(new Dimension(2000, 20));
  240. statusText_label.setPreferredSize(new Dimension(300, 20));
  241. status_panel.setLayout(borderLayout4);
  242. this.addWindowListener(new java.awt.event.WindowAdapter() {
  243. public void windowClosed(WindowEvent e) {
  244. this_windowClosed(e);
  245. }
  246. public void windowClosing(WindowEvent e) {
  247. this_windowClosing(e);
  248. }
  249. });
  250. toolbar_panel.setLayout(borderLayout5);
  251. right_splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
  252. right_splitPane.setBorder(null);
  253. right_splitPane.setDividerSize(4);
  254. tools_menu.setFont(new java.awt.Font("Dialog", 0, 11));
  255. tools_menu.setText("Tools");
  256. tools_menu.setMnemonic(KeyEvent.VK_T);
  257. projectDebug_menuItem.setEnabled(false);
  258. projectDebug_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
  259. projectDebug_menuItem.setText("Debug");
  260. svProperties_menuItem
  261. .addActionListener(new java.awt.event.ActionListener() {
  262. public void actionPerformed(ActionEvent e) {
  263. svProperties_menuItem_actionPerformed(e);
  264. }
  265. });
  266. svProperties_menuItem.setText("Options...");
  267. svProperties_menuItem.setActionCommand("AJDE Console...");
  268. svProperties_menuItem.setFont(new java.awt.Font("Dialog", 0, 11));
  269. svProperties_menuItem.setMnemonic(KeyEvent.VK_O);
  270. svProperties_menuItem.setAccelerator(KeyStroke.getKeyStroke(
  271. KeyEvent.VK_O, ActionEvent.ALT_MASK));
  272. build_toolBar.setBorder(emptyBorder);
  273. build_toolBar.setFloatable(false);
  274. closeConfig_button.setMaximumSize(new Dimension(100, 20));
  275. closeConfig_button.setEnabled(true);
  276. closeConfig_button.setFont(new java.awt.Font("Dialog", 0, 11));
  277. closeConfig_button.setBorder(null);
  278. closeConfig_button.setMinimumSize(new Dimension(24, 20));
  279. closeConfig_button.setPreferredSize(new Dimension(20, 20));
  280. closeConfig_button.setToolTipText("Close build configuration");
  281. closeConfig_button.setIcon(Ajde.getDefault().getIconRegistry()
  282. .getCloseConfigIcon());
  283. closeConfig_button
  284. .addActionListener(new java.awt.event.ActionListener() {
  285. public void actionPerformed(ActionEvent e) {
  286. closeConfig_button_actionPerformed(e);
  287. }
  288. });
  289. openConfig_button.setMaximumSize(new Dimension(100, 20));
  290. openConfig_button.setEnabled(true);
  291. openConfig_button.setFont(new java.awt.Font("Dialog", 0, 11));
  292. openConfig_button.setBorder(null);
  293. openConfig_button.setMinimumSize(new Dimension(24, 20));
  294. openConfig_button.setPreferredSize(new Dimension(20, 20));
  295. openConfig_button.setToolTipText("Select build configuration...");
  296. openConfig_button.setIcon(Ajde.getDefault().getIconRegistry()
  297. .getOpenConfigIcon());
  298. openConfig_button
  299. .addActionListener(new java.awt.event.ActionListener() {
  300. public void actionPerformed(ActionEvent e) {
  301. openConfig_button_actionPerformed(e);
  302. }
  303. });
  304. run_button.setMaximumSize(new Dimension(60, 20));
  305. run_button.setEnabled(true);
  306. run_button.setFont(new java.awt.Font("Dialog", 0, 11));
  307. run_button.setBorder(null);
  308. run_button.setMinimumSize(new Dimension(24, 20));
  309. run_button.setPreferredSize(new Dimension(20, 20));
  310. run_button
  311. .setToolTipText("Run in same VM (hold shift down to run in separate process)");
  312. run_button.setIcon(Ajde.getDefault().getIconRegistry()
  313. .getExecuteIcon());
  314. run_button.addActionListener(new java.awt.event.ActionListener() {
  315. public void actionPerformed(ActionEvent e) {
  316. run_button_actionPerformed(e);
  317. }
  318. });
  319. project_toolBar.setBorder(emptyBorder);
  320. save_button.addActionListener(new java.awt.event.ActionListener() {
  321. public void actionPerformed(ActionEvent e) {
  322. save_button_actionPerformed(e);
  323. }
  324. });
  325. save_button.setIcon(Ajde.getDefault().getIconRegistry()
  326. .getSaveIcon());
  327. save_button.setText("Save");
  328. save_button.setToolTipText("Save");
  329. save_button.setPreferredSize(new Dimension(55, 20));
  330. save_button.setMinimumSize(new Dimension(24, 20));
  331. save_button.setFont(new java.awt.Font("Dialog", 0, 11));
  332. save_button.setBorder(null);
  333. save_button.setMaximumSize(new Dimension(60, 20));
  334. options_button.addActionListener(new java.awt.event.ActionListener() {
  335. public void actionPerformed(ActionEvent e) {
  336. options_button_actionPerformed(e);
  337. }
  338. });
  339. options_button.setIcon(Ajde.getDefault().getIconRegistry()
  340. .getBrowserOptionsIcon());
  341. options_button.setText("Options");
  342. options_button.setToolTipText("Options...");
  343. options_button.setPreferredSize(new Dimension(60, 20));
  344. options_button.setMinimumSize(new Dimension(24, 20));
  345. options_button.setFont(new java.awt.Font("Dialog", 0, 11));
  346. options_button.setBorder(null);
  347. options_button.setMaximumSize(new Dimension(80, 20));
  348. editConfig_button
  349. .addActionListener(new java.awt.event.ActionListener() {
  350. public void actionPerformed(ActionEvent e) {
  351. editConfig_button_actionPerformed(e);
  352. }
  353. });
  354. editConfig_button.setIcon(Ajde.getDefault().getIconRegistry()
  355. .getStructureSwingIcon(IProgramElement.Kind.FILE_LST));
  356. editConfig_button.setText("Edit Config");
  357. editConfig_button.setToolTipText("Edit Config...");
  358. editConfig_button.setPreferredSize(new Dimension(80, 20));
  359. editConfig_button.setMinimumSize(new Dimension(24, 20));
  360. editConfig_button.setFont(new java.awt.Font("Dialog", 0, 11));
  361. editConfig_button.setBorder(null);
  362. editConfig_button.setMaximumSize(new Dimension(80, 20));
  363. file_toolBar.setBorder(emptyBorder);
  364. toolBar_panel.setLayout(borderLayout6);
  365. jLabel1.setFont(new java.awt.Font("Dialog", 0, 11));
  366. jLabel1.setText(" Build: ");
  367. jLabel2.setText(" Run: ");
  368. jLabel2.setFont(new java.awt.Font("Dialog", 0, 11));
  369. // fileStructure_panel.setFont(new java.awt.Font("Dialog", 0, 11));
  370. // browser_panel.setFont(new java.awt.Font("Dialog", 0, 11));
  371. this.getContentPane().add(top_splitPane, BorderLayout.CENTER);
  372. top_splitPane.add(right_splitPane, JSplitPane.RIGHT);
  373. top_splitPane.add(multiView_panel, JSplitPane.LEFT);
  374. right_splitPane.add(messages_panel, JSplitPane.BOTTOM);
  375. right_splitPane.add(editor_panel, JSplitPane.TOP);
  376. // structureView_pane.add(fileStructure_panel, JSplitPane.RIGHT);
  377. // structureView_pane.add(browser_panel, JSplitPane.LEFT);
  378. this.getContentPane().add(status_panel, BorderLayout.SOUTH);
  379. status_panel.add(statusText_label, BorderLayout.CENTER);
  380. this.getContentPane().add(toolbar_panel, BorderLayout.NORTH);
  381. toolbar_panel.add(filler_panel, BorderLayout.CENTER);
  382. toolbar_panel.add(toolBar_panel, BorderLayout.WEST);
  383. // file_toolBar.add(editConfig_button, null);
  384. file_toolBar.add(save_button, null);
  385. file_toolBar.add(options_button, null);
  386. toolBar_panel.add(build_toolBar, BorderLayout.WEST);
  387. toolBar_panel.add(project_toolBar, BorderLayout.CENTER);
  388. project_toolBar.add(jLabel2, null);
  389. project_toolBar.add(run_button, null);
  390. build_toolBar.add(jLabel1, null);
  391. build_toolBar.add(openConfig_button, null);
  392. build_toolBar.add(closeConfig_button, null);
  393. toolBar_panel.add(file_toolBar, BorderLayout.EAST);
  394. menuBar.add(jMenu1);
  395. menuBar.add(jMenu2);
  396. menuBar.add(tools_menu);
  397. jMenu1.add(jMenuItem1);
  398. jMenu1.addSeparator();
  399. jMenu1.add(exit_menuItem);
  400. jMenu2.add(projectBuild_menuItem);
  401. jMenu2.add(projectRun_menuItem);
  402. jMenu2.add(projectRunOther_menuItem);
  403. // jMenu2.add(projectDebug_menuItem);
  404. tools_menu.add(joinpointProbe_menuItem);
  405. tools_menu.add(svProperties_menuItem);
  406. top_splitPane.setDividerLocation(380);
  407. right_splitPane.setDividerLocation(500);
  408. project_toolBar.addSeparator();
  409. project_toolBar.addSeparator();
  410. }
  411. private void exit_menuItem_actionPerformed(ActionEvent e) {
  412. quit();
  413. }
  414. private void this_windowClosing(WindowEvent e) {
  415. quit();
  416. }
  417. private void quit() {
  418. this.dispose();
  419. System.exit(0);
  420. }
  421. void treeMode_comboBox_actionPerformed(ActionEvent e) {
  422. }
  423. void save_button_actionPerformed(ActionEvent e) {
  424. BrowserManager.getDefault().getEditorManager().saveContents();
  425. }
  426. void this_windowClosed(WindowEvent e) {
  427. quit();
  428. }
  429. public void showMessagesPanel(BrowserMessageHandler handler) {
  430. right_splitPane.setDividerLocation(right_splitPane.getHeight() - 100);
  431. messages_panel.showMessageHandlerPanel(handler, true);
  432. }
  433. public void hideMessagesPanel(BrowserMessageHandler handler) {
  434. right_splitPane.setDividerLocation(right_splitPane.getHeight());
  435. messages_panel.showMessageHandlerPanel(handler, false);
  436. }
  437. void jMenuItem1_actionPerformed(ActionEvent e) {
  438. BrowserManager.getDefault().getEditorManager().saveContents();
  439. }
  440. void projectBuild_menuItem_actionPerformed(ActionEvent e) {
  441. BrowserManager.getDefault().saveAll();
  442. if (EditorManager.isShiftDown(e.getModifiers())) {
  443. buildFresh();
  444. } else {
  445. build();
  446. }
  447. }
  448. void run_button_actionPerformed(ActionEvent e) {
  449. if (EditorManager.isShiftDown(e.getModifiers())) {
  450. runInNewVM();
  451. } else {
  452. runInSameVM();
  453. }
  454. }
  455. void projectRunOther_menuItem_actionPerformed(ActionEvent e) {
  456. runInNewVM();
  457. }
  458. void projectRun_menuItem_actionPerformed(ActionEvent e) {
  459. if (EditorManager.isShiftDown(e.getModifiers())) {
  460. runInNewVM();
  461. } else {
  462. runInSameVM();
  463. }
  464. }
  465. void build_button_actionPerformed(ActionEvent e) {
  466. BrowserManager.getDefault().saveAll();
  467. if (EditorManager.isShiftDown(e.getModifiers())) {
  468. buildFresh();
  469. } else {
  470. build();
  471. }
  472. }
  473. void options_button_actionPerformed(ActionEvent e) {
  474. Ajde.getDefault().showOptionsFrame();
  475. }
  476. void editConfig_button_actionPerformed(ActionEvent e) {
  477. BrowserManager.getDefault().openFile(
  478. Ajde.getDefault().getBuildConfigManager()
  479. .getActiveConfigFile());
  480. refreshBuildMenu();
  481. }
  482. public void resetSourceEditorPanel() {
  483. right_splitPane.removeAll();
  484. right_splitPane.add(sourceEditor_panel, JSplitPane.TOP);
  485. }
  486. private void svProperties_menuItem_actionPerformed(ActionEvent e) {
  487. Ajde.getDefault().showOptionsFrame();
  488. }
  489. private void openConfig_button_actionPerformed(ActionEvent e) {
  490. JFileChooser fileChooser = new JFileChooser();
  491. fileChooser.setCurrentDirectory(lastChosenDir);
  492. fileChooser.setFileFilter(new FileFilter() {
  493. public boolean accept(File f) {
  494. return (f.getPath().endsWith(".lst") || f.isDirectory());
  495. }
  496. public String getDescription() {
  497. return "AspectJ Build Configuration (*.lst)";
  498. }
  499. });
  500. int returnVal = fileChooser.showOpenDialog(this);
  501. if (returnVal == JFileChooser.APPROVE_OPTION) {
  502. File result = fileChooser.getSelectedFile();
  503. String path = result.getAbsolutePath();// .replace('\\', '/');
  504. if (!Ajde.getDefault().getBuildConfigManager()
  505. .getAllBuildConfigFiles().contains(path)) {
  506. Ajde.getDefault().getBuildConfigManager()
  507. .getAllBuildConfigFiles().add(0, path);
  508. }
  509. Ajde.getDefault().getBuildConfigManager().setActiveConfigFile(
  510. path);
  511. lastChosenDir = result.getParentFile();
  512. if (null == lastChosenDir) {
  513. lastChosenDir = CURRENT_DIR;
  514. }
  515. refreshBuildMenu();
  516. }
  517. }
  518. private void closeConfig_button_actionPerformed(ActionEvent e) {
  519. Ajde.getDefault().getBuildConfigManager()
  520. .getAllBuildConfigFiles().remove(
  521. Ajde.getDefault().getBuildConfigManager()
  522. .getActiveConfigFile());
  523. if (!Ajde.getDefault().getBuildConfigManager()
  524. .getAllBuildConfigFiles().isEmpty()) {
  525. Ajde.getDefault().getBuildConfigManager().setActiveConfigFile(
  526. (String) Ajde.getDefault().getBuildConfigManager()
  527. .getAllBuildConfigFiles().get(0));
  528. }
  529. refreshBuildMenu();
  530. }
  531. private void buildFresh() {
  532. Ajde.getDefault().runBuildInDifferentThread(Ajde.getDefault()
  533. .getBuildConfigManager().getActiveConfigFile(), true);
  534. }
  535. private void build() {
  536. Ajde.getDefault().runBuildInDifferentThread(Ajde.getDefault()
  537. .getBuildConfigManager().getActiveConfigFile(), false);
  538. }
  539. private void runInSameVM() {
  540. Ajde.getDefault().runInSameVM();
  541. }
  542. private void runInNewVM() {
  543. Ajde.getDefault().runInNewVM();
  544. }
  545. }