1 18 package org.columba.core.scripting.extensions; 19 20 import java.util.logging.Logger ; 21 22 import javax.swing.JFrame ; 23 24 import org.columba.api.gui.frame.IContainer; 25 import org.columba.core.gui.action.AbstractColumbaAction; 26 import org.columba.core.gui.frame.FrameManager; 27 import org.columba.core.gui.menu.ExtendableMenuBar; 28 29 41 public class MenuExtensionPoint extends AbstractExtensionPoint { 42 43 public static final String EXTENSION_POINT_ID = "main_menu"; 44 45 private static final Logger LOG = Logger.getLogger(MenuExtensionPoint.class 46 .getName()); 47 48 public MenuExtensionPoint() { 49 super(EXTENSION_POINT_ID); 50 } 51 52 64 public void addAction(AbstractColumbaAction action, String menuId, 65 String placeholderId) { 66 67 ExtendableMenuBar menu = getDefaultMenubar(); 68 if (menu == null) { 69 70 throw new RuntimeException ("Could not retrieve default menu bar"); 71 } 72 73 menu.insertAction(menuId, placeholderId, action); 74 75 } 76 77 private IContainer getFirstContainer() { 78 IContainer[] frames = FrameManager.getInstance().getOpenFrames(); 79 if (frames.length == 0) { 80 LOG.warning(getClass().getName() + ": Not enough open frames!"); 81 return null; 82 } 83 return frames[0]; 84 } 85 86 private ExtendableMenuBar getDefaultMenubar() { 87 JFrame frame = (JFrame ) getFirstContainer(); 88 return (ExtendableMenuBar) frame.getJMenuBar(); 89 } 90 } 91 | Popular Tags |