1 2 25 26 package org.aspectj.ajde.ui.swing; 27 28 import java.awt.*; 29 import java.awt.event.*; 30 import java.io.File ; 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 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 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 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 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 name) { 194 super(name); 195 this.setFont(AjdeWidgetStyles.DEFAULT_LABEL_FONT); 196 this.setBackground(AjdeWidgetStyles.DEFAULT_BACKGROUND_COLOR); 197 } 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 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 300 private void order_comboBox_actionPerformed(ActionEvent e) { 301 Ajde.getDefault().getStructureViewManager().refreshView( 302 currentView 303 ); 304 } 305 306 private void jbInit() throws Exception { 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 () { 312 public void actionPerformed(ActionEvent e) { 313 view_comboBox_actionPerformed(e); 314 } 315 }); 316 view_label.setFont(new java.awt.Font ("Dialog", 0, 11)); 317 view_label.setText(" Global View "); 318 view_comboBox.setFont(new java.awt.Font ("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 |