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

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