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.

BrowserView.java 13KB

21 years ago
21 years ago
17 years ago
21 years ago
21 years ago
21 years ago
17 years ago
17 years ago
21 years ago
21 years ago
21 years ago
17 years ago
21 years ago
21 years ago
17 years ago
21 years ago
21 years ago
17 years ago
21 years ago
21 years ago
21 years ago
21 years ago
17 years ago
21 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  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 v 2.0
  7. * which accompanies this distribution and is available at
  8. * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
  9. *
  10. * Contributors:
  11. * Xerox/PARC initial implementation
  12. * Helen Hawkins Converted to new interface (bug 148190)
  13. * ******************************************************************/
  14. package org.aspectj.ajde.ui.swing;
  15. import java.awt.BorderLayout;
  16. import java.awt.Color;
  17. import java.awt.Component;
  18. import java.awt.Dimension;
  19. import java.awt.GridLayout;
  20. import java.awt.event.ActionEvent;
  21. import java.awt.event.MouseEvent;
  22. import java.io.File;
  23. import javax.swing.BorderFactory;
  24. import javax.swing.JButton;
  25. import javax.swing.JComboBox;
  26. import javax.swing.JLabel;
  27. import javax.swing.JList;
  28. import javax.swing.JPanel;
  29. import javax.swing.JSplitPane;
  30. import javax.swing.JToggleButton;
  31. import javax.swing.JToolBar;
  32. import javax.swing.ListCellRenderer;
  33. import javax.swing.border.Border;
  34. import org.aspectj.ajde.Ajde;
  35. import org.aspectj.ajde.IconRegistry;
  36. import org.aspectj.asm.IProgramElement;
  37. import org.aspectj.bridge.IMessage;
  38. import org.aspectj.bridge.Message;
  39. /**
  40. * @author Mik Kersten
  41. */
  42. class BrowserView extends JPanel {
  43. private static final long serialVersionUID = 1L;
  44. // private BrowserViewPanel masterView;
  45. private BrowserViewPanel slaveView;
  46. private boolean slaveViewVisible = false;
  47. private String lastSelectedConfig = "";
  48. private IconRegistry icons = null;
  49. private BorderLayout borderLayout1 = new BorderLayout();
  50. private Border default_border;
  51. private JPanel toolBar_panel = new JPanel();
  52. private BorderLayout borderLayout2 = new BorderLayout();
  53. JPanel mainToolBar_panel = new JPanel();
  54. JToolBar config_toolBar = new JToolBar();
  55. JComboBox configs_comboBox = null;
  56. BorderLayout borderLayout3 = new BorderLayout();
  57. JToolBar nav_toolBar = new JToolBar();
  58. JButton forward_button = new JButton();
  59. JButton back_button = new JButton();
  60. GridLayout gridLayout1 = new GridLayout();
  61. JSplitPane views_splitPane = new JSplitPane();
  62. JToolBar command_toolBar = new JToolBar();
  63. JToggleButton splitView_button = new JToggleButton();
  64. JToggleButton zoomToFile_button = new JToggleButton();
  65. JButton joinpointProbe_button = new JButton();
  66. public BrowserView(BrowserViewPanel masterView, BrowserViewPanel slaveView, IconRegistry icons) {
  67. try {
  68. // this.masterView = masterView;
  69. this.slaveView = slaveView;
  70. this.icons = icons;
  71. configs_comboBox = new JComboBox(Ajde.getDefault().getBuildConfigManager().getAllBuildConfigFiles().toArray());
  72. configs_comboBox.setRenderer(new ConfigsCellRenderer());
  73. // configs_comboBox.addItemListener(new ItemListener() {
  74. // public void itemStateChanged(ItemEvent e) {
  75. // Ajde.getDefault().getConfigurationManager().setCurrConfigFile(lastSelectedConfig);
  76. // }
  77. // });
  78. if (Ajde.getDefault().getBuildConfigManager().getAllBuildConfigFiles().size() > 0) {
  79. Ajde.getDefault().getBuildConfigManager().setActiveConfigFile((String)Ajde.getDefault().getBuildConfigManager().getAllBuildConfigFiles().get(0));
  80. }
  81. jbInit();
  82. fixButtonBorders();
  83. views_splitPane.add(masterView, JSplitPane.TOP);
  84. views_splitPane.add(slaveView, JSplitPane.BOTTOM);
  85. setSlaveViewVisible(false);
  86. nav_toolBar.remove(joinpointProbe_button);
  87. } catch(Exception e) {
  88. Message msg = new Message("Could not initialize GUI.",IMessage.ERROR,e,null);
  89. Ajde.getDefault().getMessageHandler().handleMessage(msg);
  90. }
  91. }
  92. public void setSlaveViewVisible(boolean visible) {
  93. slaveViewVisible = visible;
  94. if (visible) {
  95. views_splitPane.add(slaveView, JSplitPane.BOTTOM);
  96. views_splitPane.setDividerLocation(this.getHeight()-250);
  97. //masterView.scrollToHighlightedNode();
  98. } else {
  99. views_splitPane.remove(slaveView);
  100. views_splitPane.setDividerLocation(this.getHeight());
  101. }
  102. }
  103. public boolean isSlaveViewVisible() {
  104. return slaveViewVisible;
  105. }
  106. public void updateConfigs(java.util.List configsList) {
  107. configs_comboBox.removeAllItems();
  108. for (Object o : configsList) {
  109. configs_comboBox.addItem(o);
  110. }
  111. }
  112. public void setSelectedConfig(String config) {
  113. for (int i = 0; i < configs_comboBox.getItemCount(); i++) {
  114. if (configs_comboBox.getItemAt(i).equals(config)) {
  115. configs_comboBox.setSelectedIndex(i);
  116. }
  117. }
  118. }
  119. public String getSelectedConfig() {
  120. return (String)configs_comboBox.getSelectedItem();
  121. }
  122. /**
  123. * @todo get rid of this method and make the GUI-designer generated code work properly
  124. */
  125. private void fixButtonBorders() {
  126. back_button.setBorder(BorderFactory.createEmptyBorder());
  127. forward_button.setBorder(BorderFactory.createEmptyBorder());
  128. zoomToFile_button.setBorder(BorderFactory.createEmptyBorder());
  129. splitView_button.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 0, Color.blue));
  130. }
  131. private void jbInit() throws Exception {
  132. default_border = BorderFactory.createEmptyBorder();
  133. this.setLayout(borderLayout1);
  134. toolBar_panel.setLayout(borderLayout2);
  135. toolBar_panel.setBorder(BorderFactory.createEtchedBorder());
  136. config_toolBar.setBorder(default_border);
  137. config_toolBar.setFloatable(false);
  138. configs_comboBox.setPreferredSize(new Dimension(200, 20));
  139. configs_comboBox.addActionListener(new java.awt.event.ActionListener() {
  140. public void actionPerformed(ActionEvent e) {
  141. configs_comboBox_actionPerformed(e);
  142. }
  143. });
  144. configs_comboBox.setMinimumSize(new Dimension(40, 20));
  145. configs_comboBox.setFont(new java.awt.Font("SansSerif", 0, 11));
  146. mainToolBar_panel.setLayout(borderLayout3);
  147. nav_toolBar.setFloatable(false);
  148. nav_toolBar.setBorder(default_border);
  149. forward_button.addActionListener(new java.awt.event.ActionListener() {
  150. public void actionPerformed(ActionEvent e) {
  151. forward_button_actionPerformed(e);
  152. }
  153. });
  154. forward_button.setIcon(icons.getForwardIcon());
  155. forward_button.setToolTipText("Navigate forward");
  156. forward_button.setPreferredSize(new Dimension(20, 20));
  157. forward_button.setMinimumSize(new Dimension(20, 20));
  158. forward_button.setBorder(default_border);
  159. forward_button.setMaximumSize(new Dimension(24, 20));
  160. back_button.setMaximumSize(new Dimension(24, 20));
  161. back_button.setBorder(default_border);
  162. back_button.setMinimumSize(new Dimension(20, 20));
  163. back_button.setPreferredSize(new Dimension(20, 20));
  164. back_button.setToolTipText("Navigate back");
  165. back_button.setIcon(icons.getBackIcon());
  166. back_button.addActionListener(new java.awt.event.ActionListener() {
  167. public void actionPerformed(ActionEvent e) {
  168. back_button_actionPerformed(e);
  169. }
  170. });
  171. // structureViews_box.add(comment_editorPane, null);
  172. views_splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
  173. views_splitPane.setDividerSize(2);
  174. command_toolBar.setBorder(default_border);
  175. command_toolBar.setFloatable(false);
  176. splitView_button.setFont(new java.awt.Font("Dialog", 0, 11));
  177. splitView_button.setBorder(default_border);
  178. splitView_button.setMaximumSize(new Dimension(24, 24));
  179. splitView_button.setPreferredSize(new Dimension(20, 20));
  180. splitView_button.setToolTipText("Togge split-tree view mode");
  181. splitView_button.setIcon(icons.getSplitStructureViewIcon());
  182. splitView_button.setSelectedIcon(icons.getMergeStructureViewIcon());
  183. splitView_button.addActionListener(new java.awt.event.ActionListener() {
  184. public void actionPerformed(ActionEvent e) {
  185. //splitView_button_actionPerformed(e);
  186. }
  187. });
  188. zoomToFile_button.addActionListener(new java.awt.event.ActionListener() {
  189. public void actionPerformed(ActionEvent e) {
  190. //zoomToFile_button_actionPerformed(e);
  191. }
  192. });
  193. zoomToFile_button.setIcon(icons.getZoomStructureToFileModeIcon());
  194. zoomToFile_button.setSelectedIcon(icons.getZoomStructureToGlobalModeIcon());
  195. zoomToFile_button.setBorder(BorderFactory.createRaisedBevelBorder());
  196. zoomToFile_button.setMaximumSize(new Dimension(24, 24));
  197. zoomToFile_button.setPreferredSize(new Dimension(20, 20));
  198. zoomToFile_button.setToolTipText("Toggle file-view mode");
  199. zoomToFile_button.setFont(new java.awt.Font("Dialog", 0, 11));
  200. joinpointProbe_button.addActionListener(new java.awt.event.ActionListener() {
  201. public void actionPerformed(ActionEvent e) {
  202. joinpointProbe_button_actionPerformed(e);
  203. }
  204. });
  205. joinpointProbe_button.setIcon(icons.getStructureSwingIcon(IProgramElement.Kind.POINTCUT));
  206. joinpointProbe_button.setToolTipText("Create joinpoint probe");
  207. joinpointProbe_button.setPreferredSize(new Dimension(20, 20));
  208. joinpointProbe_button.setMinimumSize(new Dimension(20, 20));
  209. joinpointProbe_button.setBorder(default_border);
  210. joinpointProbe_button.setMaximumSize(new Dimension(24, 20));
  211. this.add(toolBar_panel, BorderLayout.NORTH);
  212. toolBar_panel.add(mainToolBar_panel, BorderLayout.NORTH);
  213. mainToolBar_panel.add(config_toolBar, BorderLayout.CENTER);
  214. config_toolBar.add(configs_comboBox, null);
  215. mainToolBar_panel.add(nav_toolBar, BorderLayout.EAST);
  216. nav_toolBar.add(splitView_button, null);
  217. nav_toolBar.add(zoomToFile_button, null);
  218. nav_toolBar.add(joinpointProbe_button, null);
  219. nav_toolBar.add(back_button, null);
  220. nav_toolBar.add(forward_button, null);
  221. mainToolBar_panel.add(command_toolBar, BorderLayout.WEST);
  222. this.add(views_splitPane, BorderLayout.CENTER);
  223. views_splitPane.setDividerLocation(400);
  224. }
  225. void forward_button_actionPerformed(ActionEvent e) {
  226. //AjdeUIManager.getDefault().getViewManager().navigateForwardAction();
  227. }
  228. void back_button_actionPerformed(ActionEvent e) {
  229. //AjdeUIManager.getDefault().getViewManager().navigateBackAction();
  230. }
  231. // void splitView_button_actionPerformed(ActionEvent e) {
  232. // AjdeUIManager.getDefault().getViewManager().setSplitViewMode(!slaveViewVisible);
  233. // }
  234. static class ConfigsCellRenderer extends JLabel implements ListCellRenderer {
  235. private static final long serialVersionUID = 8795959045339903340L;
  236. public ConfigsCellRenderer() {
  237. setOpaque(true);
  238. }
  239. public Component getListCellRendererComponent(JList list,
  240. Object value,
  241. int index,
  242. boolean isSelected,
  243. boolean cellHasFocus) {
  244. if (value == null) return this;
  245. java.io.File file = new File(value.toString());
  246. setText(file.getName());
  247. setBackground(isSelected ? Color.gray : Color.lightGray);
  248. // setForeground(isSelected ? Color.lightGray : Color.gray);
  249. return this;
  250. }
  251. }
  252. void configDesigner_button_mouseClicked(MouseEvent e) {
  253. }
  254. void configDesigner_button_mousePressed(MouseEvent e) {
  255. }
  256. void configDesigner_button_mouseReleased(MouseEvent e) {
  257. }
  258. void configDesigner_button_mouseEntered(MouseEvent e) {
  259. }
  260. void configDesigner_button_mouseExited(MouseEvent e) {
  261. }
  262. void configDesigner_button_actionPerformed(ActionEvent e) {
  263. }
  264. void viewManager_button_mouseClicked(MouseEvent e) {
  265. }
  266. void viewManager_button_mousePressed(MouseEvent e) {
  267. }
  268. void viewManager_button_mouseReleased(MouseEvent e) {
  269. }
  270. void viewManager_button_mouseEntered(MouseEvent e) {
  271. }
  272. void viewManager_button_mouseExited(MouseEvent e) {
  273. }
  274. void viewManager_button_actionPerformed(ActionEvent e) {
  275. }
  276. // void zoomToFile_button_actionPerformed(ActionEvent e) {
  277. // AjdeUIManager.getDefault().getViewManager().setGlobalMode(!AjdeUIManager.getDefault().getViewManager().isGlobalMode());
  278. // AjdeUIManager.getDefault().getViewManager().updateView();
  279. // }
  280. void configs_comboBox_actionPerformed(ActionEvent e) {
  281. if (configs_comboBox.getSelectedItem() != null) {
  282. if (!configs_comboBox.getSelectedItem().toString().equals(lastSelectedConfig)) {
  283. //TopManager.INSTANCE.VIEW_MANAGER.readStructureView();
  284. lastSelectedConfig = configs_comboBox.getSelectedItem().toString();
  285. Ajde.getDefault().getBuildConfigManager().setActiveConfigFile(lastSelectedConfig);
  286. }
  287. }
  288. }
  289. private void joinpointProbe_button_actionPerformed(ActionEvent e) {
  290. //joinpointProbeWizard();
  291. }
  292. }