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.

SimpleStructureViewToolPanel.java 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  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.Dimension;
  18. import java.awt.SystemColor;
  19. import java.awt.event.ActionEvent;
  20. import java.io.File;
  21. import java.util.ArrayList;
  22. import javax.swing.BorderFactory;
  23. import javax.swing.JButton;
  24. import javax.swing.JLabel;
  25. import javax.swing.JPanel;
  26. import javax.swing.border.BevelBorder;
  27. import javax.swing.border.Border;
  28. import org.aspectj.ajde.Ajde;
  29. import org.aspectj.ajde.ui.StructureView;
  30. import org.aspectj.ajde.ui.StructureViewProperties;
  31. import org.aspectj.asm.AsmManager;
  32. import org.aspectj.asm.IHierarchy;
  33. import org.aspectj.asm.IHierarchyListener;
  34. import org.aspectj.asm.IProgramElement;
  35. import org.aspectj.bridge.IMessage;
  36. import org.aspectj.bridge.Message;
  37. public class SimpleStructureViewToolPanel extends JPanel {
  38. private static final long serialVersionUID = -7573973278642540506L;
  39. private StructureView currentView;
  40. private JButton separator_button = new JButton();
  41. private boolean hideNonAJEnabled = false;
  42. private boolean hideAssociationsEnabled = false;
  43. private boolean sortEnabled = false;
  44. Border border1;
  45. Border border2;
  46. JButton structureView_button = new JButton();
  47. JPanel label_panel = new JPanel();
  48. JLabel currConfig_field = new JLabel();
  49. JPanel spacer_panel = new JPanel();
  50. JPanel jPanel2 = new JPanel();
  51. JButton forward_button = new JButton();
  52. JPanel navigation_panel = new JPanel();
  53. JButton back_button = new JButton();
  54. BorderLayout borderLayout1 = new BorderLayout();
  55. JPanel buttons_panel = new JPanel();
  56. BorderLayout borderLayout2 = new BorderLayout();
  57. BorderLayout borderLayout3 = new BorderLayout();
  58. BorderLayout borderLayout4 = new BorderLayout();
  59. public final IHierarchyListener MODEL_LISTENER = new IHierarchyListener() {
  60. public void elementsUpdated(IHierarchy model) {
  61. String path = Ajde.getDefault().getBuildConfigManager().getActiveConfigFile();
  62. String fileName = "<no active config>";
  63. if (path != null) fileName = new File(path).getName();
  64. updateCurrConfigLabel(fileName);
  65. }
  66. };
  67. JButton hideNonAJ_button = new JButton();
  68. JPanel navigation_panel1 = new JPanel();
  69. JButton hideAssociations_button = new JButton();
  70. BorderLayout borderLayout5 = new BorderLayout();
  71. JButton sort_button = new JButton();
  72. public SimpleStructureViewToolPanel(StructureView currentView) {
  73. this.currentView = currentView;
  74. AsmManager.getDefault().addListener(MODEL_LISTENER);
  75. try {
  76. jbInit();
  77. } catch (Exception e) {
  78. Message msg = new Message("Could not initialize GUI.",IMessage.ERROR,e,null);
  79. Ajde.getDefault().getMessageHandler().handleMessage(msg);
  80. }
  81. updateCurrConfigLabel("<no active config>");
  82. }
  83. private void updateCurrConfigLabel(String text) {
  84. currConfig_field.setText(" File View (" + text + ")");
  85. }
  86. private void jbInit() throws Exception {
  87. border1 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(156, 156, 158),new Color(109, 109, 110));
  88. border2 = BorderFactory.createEmptyBorder(0,1,0,0);
  89. separator_button.setPreferredSize(new Dimension(2, 16));
  90. separator_button.setMinimumSize(new Dimension(2, 16));
  91. separator_button.setEnabled(false);
  92. separator_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  93. separator_button.setMaximumSize(new Dimension(2, 16));
  94. structureView_button.addActionListener(new java.awt.event.ActionListener() {
  95. public void actionPerformed(ActionEvent e) {
  96. structureView_button_actionPerformed(e);
  97. }
  98. });
  99. structureView_button.setIcon(Ajde.getDefault().getIconRegistry().getStructureViewIcon());
  100. structureView_button.setBorder(border2);
  101. structureView_button.setToolTipText("Navigate back");
  102. structureView_button.setPreferredSize(new Dimension(20, 20));
  103. structureView_button.setMinimumSize(new Dimension(20, 20));
  104. structureView_button.setMaximumSize(new Dimension(24, 20));
  105. currConfig_field.setBackground(SystemColor.control);
  106. currConfig_field.setFont(new java.awt.Font("SansSerif", 0, 11));
  107. currConfig_field.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  108. //currConfig_field.setEditable(false);
  109. currConfig_field.setText(" ");
  110. forward_button.addActionListener(new java.awt.event.ActionListener() {
  111. public void actionPerformed(ActionEvent e) {
  112. forward_button_actionPerformed(e);
  113. }
  114. });
  115. forward_button.setIcon(Ajde.getDefault().getIconRegistry().getForwardIcon());
  116. forward_button.setToolTipText("Navigate forward");
  117. forward_button.setPreferredSize(new Dimension(20, 20));
  118. forward_button.setMinimumSize(new Dimension(20, 20));
  119. forward_button.setMaximumSize(new Dimension(24, 20));
  120. forward_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  121. navigation_panel.setLayout(borderLayout1);
  122. back_button.setMaximumSize(new Dimension(24, 20));
  123. back_button.setMinimumSize(new Dimension(20, 20));
  124. back_button.setPreferredSize(new Dimension(20, 20));
  125. back_button.setToolTipText("Navigate back");
  126. back_button.setIcon(Ajde.getDefault().getIconRegistry().getBackIcon());
  127. back_button.addActionListener(new java.awt.event.ActionListener() {
  128. public void actionPerformed(ActionEvent e) {
  129. back_button_actionPerformed(e);
  130. }
  131. });
  132. back_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  133. this.setLayout(borderLayout2);
  134. buttons_panel.setLayout(borderLayout3);
  135. label_panel.setLayout(borderLayout4);
  136. hideNonAJ_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  137. hideNonAJ_button.setMaximumSize(new Dimension(24, 20));
  138. hideNonAJ_button.setMinimumSize(new Dimension(20, 20));
  139. hideNonAJ_button.setPreferredSize(new Dimension(20, 20));
  140. hideNonAJ_button.setToolTipText("Hide non-AspectJ members");
  141. hideNonAJ_button.setIcon(Ajde.getDefault().getIconRegistry().getHideNonAJIcon());
  142. hideNonAJ_button.addActionListener(new java.awt.event.ActionListener() {
  143. public void actionPerformed(ActionEvent e) {
  144. hideNonAJ_button_actionPerformed(e);
  145. }
  146. });
  147. navigation_panel1.setLayout(borderLayout5);
  148. hideAssociations_button.setMaximumSize(new Dimension(24, 20));
  149. hideAssociations_button.setMinimumSize(new Dimension(20, 20));
  150. hideAssociations_button.setPreferredSize(new Dimension(20, 20));
  151. hideAssociations_button.setToolTipText("Hide associations");
  152. hideAssociations_button.setIcon(Ajde.getDefault().getIconRegistry().getHideAssociationsIcon());
  153. hideAssociations_button.addActionListener(new java.awt.event.ActionListener() {
  154. public void actionPerformed(ActionEvent e) {
  155. hideAssociations_button_actionPerformed(e);
  156. }
  157. });
  158. hideAssociations_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  159. sort_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  160. sort_button.addActionListener(new java.awt.event.ActionListener() {
  161. public void actionPerformed(ActionEvent e) {
  162. sort_button_actionPerformed(e);
  163. }
  164. });
  165. sort_button.setIcon(Ajde.getDefault().getIconRegistry().getOrderIcon());
  166. sort_button.setToolTipText("Sort member");
  167. sort_button.setPreferredSize(new Dimension(20, 20));
  168. sort_button.setMinimumSize(new Dimension(20, 20));
  169. sort_button.setMaximumSize(new Dimension(24, 20));
  170. label_panel.add(currConfig_field, BorderLayout.CENTER);
  171. //label_panel.add(structureView_button, BorderLayout.WEST);
  172. this.add(spacer_panel, BorderLayout.CENTER);
  173. this.add(buttons_panel, BorderLayout.EAST);
  174. buttons_panel.add(navigation_panel, BorderLayout.CENTER);
  175. navigation_panel.add(back_button, BorderLayout.CENTER);
  176. navigation_panel.add(forward_button, BorderLayout.EAST);
  177. navigation_panel.add(jPanel2, BorderLayout.WEST);
  178. buttons_panel.add(navigation_panel1, BorderLayout.WEST);
  179. navigation_panel1.add(hideAssociations_button, BorderLayout.EAST);
  180. navigation_panel1.add(hideNonAJ_button, BorderLayout.CENTER);
  181. navigation_panel1.add(sort_button, BorderLayout.WEST);
  182. this.add(label_panel, BorderLayout.WEST);
  183. }
  184. private void forward_button_actionPerformed(ActionEvent e) {
  185. Ajde.getDefault().getStructureViewManager().fireNavigateForwardAction(currentView);
  186. }
  187. private void back_button_actionPerformed(ActionEvent e) {
  188. Ajde.getDefault().getStructureViewManager().fireNavigateBackAction(currentView);
  189. }
  190. void structureView_button_actionPerformed(ActionEvent e) {
  191. }
  192. private void hideNonAJ_button_actionPerformed(ActionEvent e) {
  193. if (hideNonAJEnabled) {
  194. hideNonAJ_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  195. hideNonAJEnabled = false;
  196. currentView.getViewProperties().setFilteredMemberKinds(new ArrayList());
  197. } else {
  198. hideNonAJ_button.setBorder(AjdeWidgetStyles.LOWERED_BEVEL_BORDER);
  199. hideNonAJEnabled = true;
  200. currentView.getViewProperties().setFilteredMemberKinds(
  201. IProgramElement.Kind.getNonAJMemberKinds()
  202. );
  203. }
  204. Ajde.getDefault().getStructureViewManager().refreshView(currentView);
  205. }
  206. private void hideAssociations_button_actionPerformed(ActionEvent e) {
  207. if (hideAssociationsEnabled) {
  208. hideAssociations_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  209. hideAssociationsEnabled = false;
  210. currentView.getViewProperties().setRelations(
  211. Ajde.getDefault().getStructureViewManager().getAvailableRelations()
  212. );
  213. } else {
  214. hideAssociations_button.setBorder(AjdeWidgetStyles.LOWERED_BEVEL_BORDER);
  215. hideAssociationsEnabled = true;
  216. currentView.getViewProperties().setRelations(new ArrayList());
  217. }
  218. Ajde.getDefault().getStructureViewManager().refreshView(currentView);
  219. }
  220. private void sort_button_actionPerformed(ActionEvent e) {
  221. if (sortEnabled) {
  222. sort_button.setBorder(AjdeWidgetStyles.DEFAULT_BORDER);
  223. sortEnabled = false;
  224. currentView.getViewProperties().setSorting(
  225. StructureViewProperties.Sorting.DECLARATIONAL
  226. );
  227. } else {
  228. sort_button.setBorder(AjdeWidgetStyles.LOWERED_BEVEL_BORDER);
  229. sortEnabled = true;
  230. currentView.getViewProperties().setSorting(
  231. StructureViewProperties.Sorting.ALPHABETICAL
  232. );
  233. }
  234. Ajde.getDefault().getStructureViewManager().refreshView(currentView);
  235. }
  236. }