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

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. }