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 22KB

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