1 package org.columba.core.gui.globalactions; 19 20 import java.awt.event.ActionEvent ; 21 import java.awt.event.ActionListener ; 22 import java.util.Enumeration ; 23 import java.util.Vector ; 24 25 import javax.swing.ButtonGroup ; 26 import javax.swing.JRadioButtonMenuItem ; 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 44 public class SwitchPerspectiveSubmenu extends IMenu implements ActionListener { 45 46 private ButtonGroup group; 47 48 private IExtensionHandler handler; 49 50 54 public SwitchPerspectiveSubmenu(IFrameMediator controller) { 55 super(controller, "Window", ((DefaultFrameController) controller) 56 .getViewItem().get("id")); 57 58 String id = ((DefaultFrameController) getFrameMediator()).getViewItem() 59 .get("id"); 60 61 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 [] 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 (); 88 89 for (int i = 0; i < managedFrames.length; i++) { 90 JRadioButtonMenuItem 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 [] getManagedFrames(IExtensionHandler handler) { 101 102 Vector result = new Vector (); 103 Enumeration _enum = handler.getExtensionEnumeration(); 104 while (_enum.hasMoreElements()) { 105 IExtension extension = (IExtension) _enum.nextElement(); 106 String 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 []) result.toArray(new String [0]); 116 117 } 118 121 private JRadioButtonMenuItem createMenu(String name, String actionCommand) { 122 JRadioButtonMenuItem menu = new JRadioButtonMenuItem (name); 123 group.add(menu); 124 menu.setActionCommand(actionCommand); 125 menu.addActionListener(this); 126 return menu; 127 } 128 129 132 public void actionPerformed(ActionEvent arg0) { 133 final String action = arg0.getActionCommand(); 134 135 javax.swing.SwingUtilities.invokeLater(new Runnable () { 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 |