KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > aspectj > ajde > ui > swing > BrowserStructureViewToolPanel


1
2 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
3  *
4  * This file is part of the IDE support for the AspectJ(tm)
5  * programming language; see http://aspectj.org
6  *
7  * The contents of this file are subject to the Mozilla Public License
8  * Version 1.1 (the "License"); you may not use this file except in
9  * compliance with the License. You may obtain a copy of the License at
10  * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/.
11  *
12  * Software distributed under the License is distributed on an "AS IS" basis,
13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14  * for the specific language governing rights and limitations under the
15  * License.
16  *
17  * The Original Code is AspectJ.
18  *
19  * The Initial Developer of the Original Code is Xerox Corporation. Portions
20  * created by Xerox Corporation are Copyright (C) 1999-2002 Xerox Corporation.
21  * All Rights Reserved.
22  *
23  * Contributor(s):
24  */

25
26 package org.aspectj.ajde.ui.swing;
27
28 import java.awt.*;
29 import java.awt.event.*;
30 import java.io.File JavaDoc;
31 import javax.swing.*;
32 import javax.swing.event.*;
33 import java.util.*;
34 import org.aspectj.ajde.*;
35 import org.aspectj.asm.*;
36 import org.aspectj.asm.views.*;
37 import org.aspectj.ajde.ui.*;
38 import javax.swing.border.*;
39
40 public class BrowserStructureViewToolPanel extends JPanel {
41
42     private StructureView currentView;
43     private StructureViewPanel viewPanel;
44     protected BorderLayout borderLayout1 = new BorderLayout();
45     protected Border border1;
46     protected Border border2;
47     AJButtonMenuCombo granularityCombo;
48     AJButtonMenuCombo filterCombo;
49     AJButtonMenuCombo relationsCombo;
50     JPanel buttons_panel = new JPanel();
51     JPanel spacer_panel = new JPanel();
52     BorderLayout borderLayout2 = new BorderLayout();
53     BorderLayout borderLayout3 = new BorderLayout();
54     JPanel view_panel = new JPanel();
55     JComboBox view_comboBox = null;
56     JLabel view_label = new JLabel();
57     BorderLayout borderLayout4 = new BorderLayout();
58
59     public BrowserStructureViewToolPanel(
60         java.util.List JavaDoc structureViews,
61         StructureView currentView,
62         StructureViewPanel viewPanel) {
63
64         this.currentView = currentView;
65         this.viewPanel = viewPanel;
66         view_comboBox = new JComboBox();
67         view_comboBox.setFont(AjdeWidgetStyles.DEFAULT_LABEL_FONT);
68
69         for (Iterator it = structureViews.iterator(); it.hasNext(); ) {
70             view_comboBox.addItem(it.next());
71         }
72
73         try {
74             jbInit();
75         } catch (Exception JavaDoc e) {
76             Ajde.getDefault().getErrorHandler().handleError("Could not initialize GUI.", e);
77         }
78         initToolBar();
79     }
80
81     private void initToolBar() {
82         try {
83             granularityCombo = new AJButtonMenuCombo(
84                 "Visible granularity",
85                 "Visible granularity",
86                 AjdeUIManager.getDefault().getIconRegistry().getGranularityIcon(),
87                 createGranularityMenu(),
88                 false);
89
90             filterCombo = new AJButtonMenuCombo(
91                 "Filter members",
92                 "Filter members",
93                 AjdeUIManager.getDefault().getIconRegistry().getFilterIcon(),
94                 createFilterMenu(),
95                 false);
96
97             relationsCombo = new AJButtonMenuCombo(
98                 "Filter associations",
99                 "Filter associations",
100                 AjdeUIManager.getDefault().getIconRegistry().getRelationsIcon(),
101                 createRelationsMenu(),
102                 false);
103
104             buttons_panel.add(granularityCombo, BorderLayout.WEST);
105             buttons_panel.add(filterCombo, BorderLayout.CENTER);
106             buttons_panel.add(relationsCombo, BorderLayout.EAST);
107         } catch(Exception JavaDoc e) {
108             Ajde.getDefault().getErrorHandler().handleError("Could not initialize GUI.", e);
109         }
110     }
111
112     private JPopupMenu createFilterMenu() {
113         JPopupMenu filterMenu = new JPopupMenu();
114         ProgramElementNode.Accessibility[] accessibility = ProgramElementNode.Accessibility.ALL;
115         for (int i = 0; i < accessibility.length; i++) {
116             CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(accessibility[i]);
117             menuItem.setIcon(AjdeUIManager.getDefault().getIconRegistry().getAccessibilitySwingIcon(accessibility[i]));
118             filterMenu.add(menuItem);
119         }
120         filterMenu.add(new JSeparator());
121
122         ProgramElementNode.Kind[] kinds = ProgramElementNode.Kind.ALL;
123         for (int i = 0; i < kinds.length; i++) {
124             if (kinds[i].isMemberKind()) {
125                 CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(kinds[i]);
126                 menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getStructureIcon(kinds[i]).getIconResource());
127                 filterMenu.add(menuItem);
128             }
129         }
130         filterMenu.add(new JSeparator());
131
132         ProgramElementNode.Modifiers[] modifiers = ProgramElementNode.Modifiers.ALL;
133         for (int i = 0; i < modifiers.length; i++) {
134             CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(modifiers[i]);
135             filterMenu.add(menuItem);
136         }
137         return filterMenu;
138     }
139
140     private JPopupMenu createRelationsMenu() {
141         JPopupMenu relationsMenu = new JPopupMenu();
142
143         java.util.List JavaDoc relations = Ajde.getDefault().getStructureViewManager().getAvailableRelations();
144         for (Iterator it = relations.iterator(); it.hasNext(); ) {
145             Relation relation = (Relation)it.next();
146             CheckBoxSelectionMenuButton menuItem = new CheckBoxSelectionMenuButton(relation);
147             menuItem.setIcon((Icon)AjdeUIManager.getDefault().getIconRegistry().getRelationIcon(relation).getIconResource());
148             relationsMenu.add(menuItem);
149         }
150
151         return relationsMenu;
152     }
153
154     private JPopupMenu createGranularityMenu() {
155         JPopupMenu orderMenu = new JPopupMenu();
156
157         StructureViewProperties.Granularity[] granularity = StructureViewProperties.Granularity.ALL;
158         ButtonGroup group = new ButtonGroup();
159         for (int i = 0; i < granularity.length; i++) {
160             RadioSelectionMenuButton menuItem = new RadioSelectionMenuButton(granularity[i], group);
161             orderMenu.add(menuItem);
162             if (granularity[i].equals(StructureViewProperties.Granularity.MEMBER)) {
163                 menuItem.setSelected(true);
164             }
165         }
166         return orderMenu;
167     }
168
169     private class RadioSelectionMenuButton extends JRadioButtonMenuItem {
170         public RadioSelectionMenuButton(StructureViewProperties.Granularity granularity, ButtonGroup group) {
171             super(granularity.toString());
172             super.setFont(AjdeWidgetStyles.DEFAULT_LABEL_FONT);
173             group.add(this);
174             this.addActionListener(new RadioSelectionMenuActionListener(granularity));
175         }
176     }
177
178     private class RadioSelectionMenuActionListener implements ActionListener {
179         private StructureViewProperties.Granularity granularity;
180
181         public RadioSelectionMenuActionListener(StructureViewProperties.Granularity granularity) {
182             this.granularity = granularity;
183         }
184
185         public void actionPerformed(ActionEvent e) {
186             currentView.getViewProperties().setGranularity(granularity);
187             Ajde.getDefault().getStructureViewManager().refreshView(currentView);
188         }
189     }
190
191     private class CheckBoxSelectionMenuButton extends JCheckBoxMenuItem {
192
193         public CheckBoxSelectionMenuButton(String JavaDoc name) {
194             super(name);
195             this.setFont(AjdeWidgetStyles.DEFAULT_LABEL_FONT);
196             this.setBackground(AjdeWidgetStyles.DEFAULT_BACKGROUND_COLOR);
197             //super.setSelected(true);
198
}
199
200         public CheckBoxSelectionMenuButton(ProgramElementNode.Accessibility accessibility) {
201             this(accessibility.toString());
202             this.addActionListener(new CheckBoxSelectionMenuActionListener(accessibility));
203         }
204
205         public CheckBoxSelectionMenuButton(ProgramElementNode.Kind kind) {
206             this(kind.toString());
207             this.addActionListener(new CheckBoxSelectionMenuActionListener(kind));
208         }
209
210         public CheckBoxSelectionMenuButton(ProgramElementNode.Modifiers modifiers) {
211             this(modifiers.toString());
212             this.addActionListener(new CheckBoxSelectionMenuActionListener(modifiers));
213         }
214
215         public CheckBoxSelectionMenuButton(StructureViewProperties.Sorting sorting) {
216             this(sorting.toString());
217             this.addActionListener(new CheckBoxSelectionMenuActionListener(sorting));
218         }
219
220         public CheckBoxSelectionMenuButton(Relation relation) {
221             this(relation.toString());
222             this.addActionListener(new CheckBoxSelectionMenuActionListener(relation));
223         }
224     }
225
226     /**
227      * Ewwwwww!
228      */

229     private class CheckBoxSelectionMenuActionListener implements ActionListener {
230         private ProgramElementNode.Accessibility accessibility = null;
231         private ProgramElementNode.Kind kind = null;
232         private ProgramElementNode.Modifiers modifiers = null;
233         private StructureViewProperties.Sorting sorting = null;
234         private Relation relation = null;
235
236         public CheckBoxSelectionMenuActionListener(ProgramElementNode.Accessibility accessibility) {
237             this.accessibility = accessibility;
238         }
239
240         public CheckBoxSelectionMenuActionListener(ProgramElementNode.Kind kind) {
241             this.kind = kind;
242         }
243
244         public CheckBoxSelectionMenuActionListener(ProgramElementNode.Modifiers modifiers) {
245             this.modifiers = modifiers;
246         }
247
248         public CheckBoxSelectionMenuActionListener(StructureViewProperties.Sorting sorting) {
249             this.sorting = sorting;
250         }
251
252         public CheckBoxSelectionMenuActionListener(Relation relation) {
253             this.relation = relation;
254         }
255
256         public void actionPerformed(ActionEvent e) {
257             if (!(e.getSource() instanceof CheckBoxSelectionMenuButton)) return;
258             CheckBoxSelectionMenuButton checkMenu = (CheckBoxSelectionMenuButton)e.getSource();
259             if (accessibility != null) {
260                 if (checkMenu.isSelected()) {
261                     currentView.getViewProperties().addFilteredMemberAccessibility(accessibility);
262                 } else {
263                     currentView.getViewProperties().removeFilteredMemberAccessibility(accessibility);
264                 }
265             } else if (kind != null) {
266                 if (checkMenu.isSelected()) {
267                     currentView.getViewProperties().addFilteredMemberKind(kind);
268                 } else {
269                     currentView.getViewProperties().removeFilteredMemberKind(kind);
270                 }
271             } else if (modifiers != null) {
272                 if (checkMenu.isSelected()) {
273                     currentView.getViewProperties().addFilteredMemberModifiers(modifiers);
274                 } else {
275                     currentView.getViewProperties().removeFilteredMemberModifiers(modifiers);
276                 }
277             } else if (sorting != null) {
278                 if (checkMenu.isSelected()) {
279                     currentView.getViewProperties().setSorting(sorting);
280                 } else {
281                     currentView.getViewProperties().setSorting(StructureViewProperties.Sorting.DECLARATIONAL);
282                 }
283             } else if (relation != null) {
284                 if (checkMenu.isSelected()) {
285                     currentView.getViewProperties().removeRelation(relation);
286                 } else {
287                     currentView.getViewProperties().addRelation(relation);
288                 }
289             }
290             Ajde.getDefault().getStructureViewManager().refreshView(
291                 currentView
292             );
293         }
294     }
295
296 // public void highlightNode(ProgramElementNode node) {
297
// treeManager.navigationAction(node, true, true);
298
// }
299

300     private void order_comboBox_actionPerformed(ActionEvent e) {
301         Ajde.getDefault().getStructureViewManager().refreshView(
302             currentView
303         );
304     }
305
306     private void jbInit() throws Exception JavaDoc {
307         this.setLayout(borderLayout2);
308         buttons_panel.setLayout(borderLayout3);
309         buttons_panel.setMinimumSize(new Dimension(105, 10));
310         buttons_panel.setPreferredSize(new Dimension(105, 10));
311         view_comboBox.addActionListener(new java.awt.event.ActionListener JavaDoc() {
312             public void actionPerformed(ActionEvent e) {
313                 view_comboBox_actionPerformed(e);
314             }
315         });
316         view_label.setFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
317         view_label.setText(" Global View ");
318         view_comboBox.setFont(new java.awt.Font JavaDoc("SansSerif", 0, 11));
319         view_comboBox.setPreferredSize(new Dimension(125, 22));
320         view_panel.setLayout(borderLayout4);
321         view_panel.add(view_label, BorderLayout.WEST);
322         this.add(buttons_panel, BorderLayout.EAST);
323         this.add(spacer_panel, BorderLayout.CENTER);
324         this.add(view_panel, BorderLayout.WEST);
325         view_panel.add(view_comboBox, BorderLayout.CENTER);
326
327     }
328
329     private void order_button_actionPerformed(ActionEvent e) {
330
331     }
332
333     private void orderPopup_button_actionPerformed(ActionEvent e) {
334
335     }
336
337     void separator_button_actionPerformed(ActionEvent e) {
338
339     }
340
341     void view_comboBox_actionPerformed(ActionEvent e) {
342         StructureView view = (StructureView)view_comboBox.getSelectedItem();
343         viewPanel.setCurrentView(view);
344         if (((GlobalStructureView)view).getGlobalViewProperties().getHierarchy()
345             == StructureViewProperties.Hierarchy.DECLARATION) {
346             granularityCombo.setEnabled(true);
347             relationsCombo.setEnabled(true);
348             filterCombo.setEnabled(true);
349         } else {
350             granularityCombo.setEnabled(false);
351             relationsCombo.setEnabled(false);
352             filterCombo.setEnabled(false);
353         }
354     }
355 }
356
Popular Tags