KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > gui > globalactions > SwitchPerspectiveSubmenu


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.core.gui.globalactions;
19
20 import java.awt.event.ActionEvent JavaDoc;
21 import java.awt.event.ActionListener JavaDoc;
22 import java.util.Enumeration JavaDoc;
23 import java.util.Vector JavaDoc;
24
25 import javax.swing.ButtonGroup JavaDoc;
26 import javax.swing.JRadioButtonMenuItem JavaDoc;
27
28 import org.columba.api.gui.frame.IContainer;
29 import org.columba.api.gui.frame.IFrameMediator;
30 import org.columba.api.plugin.IExtension;
31 import org.columba.api.plugin.IExtensionHandler;
32 import org.columba.api.plugin.IExtensionHandlerKeys;
33 import org.columba.api.plugin.PluginHandlerNotFoundException;
34 import org.columba.api.plugin.PluginLoadingFailedException;
35 import org.columba.core.gui.frame.DefaultFrameController;
36 import org.columba.core.gui.frame.FrameManager;
37 import org.columba.core.gui.menu.IMenu;
38 import org.columba.core.plugin.PluginManager;
39
40 /**
41  * @author fdietz
42  *
43  */

44 public class SwitchPerspectiveSubmenu extends IMenu implements ActionListener JavaDoc {
45
46     private ButtonGroup JavaDoc group;
47
48     private IExtensionHandler handler;
49
50     /**
51      * @param controller
52      * @param caption
53      */

54     public SwitchPerspectiveSubmenu(IFrameMediator controller) {
55         super(controller, "Window", ((DefaultFrameController) controller)
56                 .getViewItem().get("id"));
57
58         String JavaDoc id = ((DefaultFrameController) getFrameMediator()).getViewItem()
59                 .get("id");
60
61         // check if this is a management frame instance
62
// -> if so create submenu to switch perspectives
63
// -> otherwise, don't create submenu
64
boolean isManagedFrame = false;
65
66         try {
67             handler = PluginManager.getInstance()
68                     .getExtensionHandler(IExtensionHandlerKeys.ORG_COLUMBA_CORE_FRAME);
69         } catch (PluginHandlerNotFoundException e) {
70             e.printStackTrace();
71         }
72
73         String JavaDoc[] managedFrames = null;
74         if (id != null) {
75             managedFrames = getManagedFrames(handler);
76             for (int i = 0; i < managedFrames.length; i++) {
77                 if (id.equals(managedFrames[i]))
78                     isManagedFrame = true;
79             }
80         }
81
82         if (!isManagedFrame) {
83             setEnabled(false);
84             return;
85         }
86
87         group = new ButtonGroup JavaDoc();
88
89         for (int i = 0; i < managedFrames.length; i++) {
90             JRadioButtonMenuItem JavaDoc menu = createMenu(managedFrames[i],
91                     managedFrames[i]);
92             if (id.equals(managedFrames[i]))
93                 menu.setSelected(true);
94
95             add(menu);
96         }
97
98     }
99
100     public String JavaDoc[] getManagedFrames(IExtensionHandler handler) {
101
102         Vector JavaDoc result = new Vector JavaDoc();
103         Enumeration JavaDoc _enum = handler.getExtensionEnumeration();
104         while (_enum.hasMoreElements()) {
105             IExtension extension = (IExtension) _enum.nextElement();
106             String JavaDoc managed = extension.getMetadata().getAttribute("managed");
107             if (managed == null)
108                 managed = "false";
109
110             if (managed.equals("true"))
111                 result.add(extension.getMetadata().getId());
112
113         }
114
115         return (String JavaDoc[]) result.toArray(new String JavaDoc[0]);
116
117     }
118     /**
119      * @return
120      */

121     private JRadioButtonMenuItem JavaDoc createMenu(String JavaDoc name, String JavaDoc actionCommand) {
122         JRadioButtonMenuItem JavaDoc menu = new JRadioButtonMenuItem JavaDoc(name);
123         group.add(menu);
124         menu.setActionCommand(actionCommand);
125         menu.addActionListener(this);
126         return menu;
127     }
128
129     /**
130      * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
131      */

132     public void actionPerformed(ActionEvent JavaDoc arg0) {
133         final String JavaDoc action = arg0.getActionCommand();
134
135         // awt-event-thread
136
javax.swing.SwingUtilities.invokeLater(new Runnable JavaDoc() {
137             public void run() {
138
139                 IFrameMediator mediator = getFrameMediator();
140
141                 IContainer container = mediator.getContainer();
142
143                 try {
144                     FrameManager.getInstance().switchView(container, action);
145                 } catch (PluginLoadingFailedException e) {
146                     e.printStackTrace();
147                 }
148             }
149         });
150
151     }
152
153 }
Popular Tags