KickJava   Java API By Example, From Geeks To Geeks.

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


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.JMenuItem JavaDoc;
26
27 import org.columba.api.gui.frame.IFrameMediator;
28 import org.columba.api.plugin.IExtension;
29 import org.columba.api.plugin.IExtensionHandler;
30 import org.columba.api.plugin.IExtensionHandlerKeys;
31 import org.columba.api.plugin.PluginException;
32 import org.columba.api.plugin.PluginHandlerNotFoundException;
33 import org.columba.api.plugin.PluginLoadingFailedException;
34 import org.columba.core.gui.action.AbstractColumbaAction;
35 import org.columba.core.gui.base.CMenuItem;
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 public class NewSubmenu extends IMenu implements ActionListener JavaDoc {
41
42     public NewSubmenu(IFrameMediator controller) {
43         super(controller, controller.getString("menu", "mainframe",
44                 "menu_file_new"), "NewSubMenu");
45
46         IExtensionHandler frameHandler = null;
47         try {
48             frameHandler = PluginManager.getInstance().getExtensionHandler(
49                     IExtensionHandlerKeys.ORG_COLUMBA_CORE_FRAME);
50         } catch (PluginHandlerNotFoundException e) {
51             e.printStackTrace();
52             return;
53         }
54
55         IExtensionHandler newItemHandler = null;
56         try {
57             newItemHandler = PluginManager.getInstance().getExtensionHandler(
58                     IExtensionHandlerKeys.ORG_COLUMBA_CORE_NEWITEM);
59         } catch (PluginHandlerNotFoundException e) {
60             e.printStackTrace();
61             return;
62         }
63
64         // create menuitems for all registered frame extensions
65
String JavaDoc[] managedFrames = getManagedFrames(frameHandler);
66         for (int i = 0; i < managedFrames.length; i++) {
67             JMenuItem JavaDoc menu = createMenu(managedFrames[i], managedFrames[i]);
68             add(menu);
69         }
70
71         addSeparator();
72
73         // create menuitems for all registered new items
74
String JavaDoc[] ids = getAllItems(newItemHandler);
75         for ( int i=0; i<ids.length; i++) {
76             JMenuItem JavaDoc item = createNewItemMenuItem(newItemHandler, ids[i]);
77             if ( item == null ) continue;
78             add(item);
79         }
80
81     }
82
83     private JMenuItem JavaDoc createNewItemMenuItem(IExtensionHandler newItemHandler, String JavaDoc id) {
84         AbstractColumbaAction action = null;
85         IExtension extension = newItemHandler.getExtension(id);
86         if ( extension == null ) return null;
87         
88         try {
89             action = (AbstractColumbaAction) extension.instanciateExtension(new Object JavaDoc[]{getFrameMediator()});
90             return new CMenuItem(action);
91         } catch (PluginException e) {
92             e.printStackTrace();
93             return null;
94         }
95     }
96
97     private JMenuItem JavaDoc createMenu(String JavaDoc name, String JavaDoc actionCommand) {
98         JMenuItem JavaDoc menu = new CMenuItem(name);
99         menu.setActionCommand(actionCommand);
100         menu.addActionListener(this);
101         return menu;
102     }
103
104     public String JavaDoc[] getManagedFrames(IExtensionHandler handler) {
105         Vector JavaDoc<String JavaDoc> result = new Vector JavaDoc<String JavaDoc>();
106         Enumeration JavaDoc _enum = handler.getExtensionEnumeration();
107         while (_enum.hasMoreElements()) {
108             IExtension extension = (IExtension) _enum.nextElement();
109             String JavaDoc managed = extension.getMetadata().getAttribute("managed");
110             if (managed == null)
111                 managed = "false";
112
113             if (managed.equals("true"))
114                 result.add(extension.getMetadata().getId());
115         }
116         return (String JavaDoc[]) result.toArray(new String JavaDoc[0]);
117     }
118
119     public String JavaDoc[] getAllItems(IExtensionHandler handler) {
120         Vector JavaDoc<String JavaDoc> result = new Vector JavaDoc<String JavaDoc>();
121         Enumeration JavaDoc _enum = handler.getExtensionEnumeration();
122         while (_enum.hasMoreElements()) {
123             IExtension extension = (IExtension) _enum.nextElement();
124             result.add(extension.getMetadata().getId());
125         }
126         return (String JavaDoc[]) result.toArray(new String JavaDoc[0]);
127     }
128
129     public void actionPerformed(ActionEvent JavaDoc event) {
130         final String JavaDoc action = event.getActionCommand();
131
132         try {
133             FrameManager.getInstance().openView(action);
134         } catch (PluginLoadingFailedException e) {
135             e.printStackTrace();
136         }
137
138     }
139
140 }
141
Popular Tags