Search in sources :

Example 1 with IMenuContributor

use of org.freeplane.core.ui.IMenuContributor in project freeplane by freeplane.

the class Activator method start.

/*
	 * (non-Javadoc)
	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
	 */
@Override
public void start(final BundleContext context) throws Exception {
    final Hashtable<String, String[]> props = new Hashtable<String, String[]>();
    props.put("mode", new String[] { MModeController.MODENAME /*TODO: other modes too?*/
    });
    context.registerService(IModeControllerExtensionProvider.class.getName(), new IModeControllerExtensionProvider() {

        @Override
        public void installExtension(ModeController modeController) {
            final MenuBuilder menuBuilder = modeController.getUserInputListenerFactory().getMenuBuilder(MenuBuilder.class);
            final $$$$Action action = new $$$$Action();
            modeController.addAction(action);
            modeController.addMenuContributor(new IMenuContributor() {

                @Override
                public void updateMenus(ModeController modeController, MenuBuilder builder) {
                    menuBuilder.addAction("/menu_bar/file", action, MenuBuilder.AS_CHILD);
                }
            });
        }
    }, props);
}
Also used : IMenuContributor(org.freeplane.core.ui.IMenuContributor) Hashtable(java.util.Hashtable) MModeController(org.freeplane.features.mode.mindmapmode.MModeController) ModeController(org.freeplane.features.mode.ModeController) IModeControllerExtensionProvider(org.freeplane.main.osgi.IModeControllerExtensionProvider) MenuBuilder(org.freeplane.core.ui.MenuBuilder)

Example 2 with IMenuContributor

use of org.freeplane.core.ui.IMenuContributor in project freeplane by freeplane.

the class ModeController method updateMenus.

public void updateMenus(String menuStructure, final Set<String> plugins) {
    final IUserInputListenerFactory userInputListenerFactory = getUserInputListenerFactory();
    userInputListenerFactory.getAcceleratorManager().loadDefaultAcceleratorPresets();
    userInputListenerFactory.updateMenus(menuStructure, plugins);
    final MenuBuilder menuBuilder = userInputListenerFactory.getMenuBuilder(MenuBuilder.class);
    final Iterator<IMenuContributor> iterator = menuContributors.iterator();
    while (iterator.hasNext()) {
        iterator.next().updateMenus(this, menuBuilder);
    }
}
Also used : IMenuContributor(org.freeplane.core.ui.IMenuContributor) IUserInputListenerFactory(org.freeplane.core.ui.IUserInputListenerFactory) MenuBuilder(org.freeplane.core.ui.MenuBuilder)

Example 3 with IMenuContributor

use of org.freeplane.core.ui.IMenuContributor in project freeplane by freeplane.

the class MModeWorkspaceController method setupController.

private void setupController(ModeController modeController) {
    modeController.removeExtension(UrlManager.class);
    UrlManager.install(new MModeWorkspaceUrlManager());
    modeController.removeExtension(LinkController.class);
    LinkController.install(MModeWorkspaceLinkController.getController());
    // add link type entry to the chooser
    MModeWorkspaceLinkController.getController().prepareOptionPanelBuilder(((MModeController) modeController).getOptionPanelBuilder());
    modeController.addINodeViewLifeCycleListener(new INodeViewLifeCycleListener() {

        public void onViewCreated(Container nodeView) {
            NodeView node = (NodeView) nodeView;
            final DropTarget dropTarget = new DropTarget(node.getMainView(), new MNodeDropListener() {

                public void drop(final DropTargetDropEvent dtde) {
                    DropTargetDropEvent evt = dtde;
                    if (dtde.getTransferable().isDataFlavorSupported(WorkspaceTransferable.WORKSPACE_NODE_FLAVOR)) {
                        evt = new DropTargetDropEvent(dtde.getDropTargetContext(), dtde.getLocation(), dtde.getDropAction(), dtde.getSourceActions(), false);
                    }
                    super.drop(evt);
                }
            });
            dropTarget.setActive(true);
        }

        public void onViewRemoved(Container nodeView) {
        }
    });
    modeController.addMenuContributor(new IMenuContributor() {

        public void updateMenus(ModeController modeController, MenuBuilder builder) {
            final String MENU_PROJECT_KEY = "/menu_bar/project";
            // insert project menu into main menu
            JMenu projectMenu = new JMenu(TextUtils.getText("menu.project.entry.label"));
            projectMenu.setMnemonic('o');
            builder.addMenuItem("/menu_bar/format", projectMenu, MENU_PROJECT_KEY, MenuBuilder.AFTER);
            builder.addAction(MENU_PROJECT_KEY, WorkspaceController.getAction(WorkspaceNewProjectAction.KEY), MenuBuilder.AS_CHILD);
            builder.addAction(MENU_PROJECT_KEY, WorkspaceController.getAction(WorkspaceImportProjectAction.KEY), MenuBuilder.AS_CHILD);
            builder.addSeparator(MENU_PROJECT_KEY, MenuBuilder.AS_CHILD);
            final String MENU_PROJECT_ADD_KEY = builder.getMenuKey(MENU_PROJECT_KEY, "new");
            final JMenu addMenu = new JMenu(TextUtils.getText("workspace.action.new.label"));
            builder.addMenuItem(MENU_PROJECT_KEY, addMenu, MENU_PROJECT_ADD_KEY, MenuBuilder.AS_CHILD);
            builder.addAction(MENU_PROJECT_ADD_KEY, new NodeNewFolderAction(), MenuBuilder.AS_CHILD);
            builder.addAction(MENU_PROJECT_ADD_KEY, new NodeNewLinkAction(), MenuBuilder.AS_CHILD);
            final WorkspaceRemoveProjectAction rmProjectAction = new WorkspaceRemoveProjectAction();
            builder.addAction(MENU_PROJECT_KEY, rmProjectAction, MenuBuilder.AS_CHILD);
            builder.addSeparator(MENU_PROJECT_KEY, MenuBuilder.AS_CHILD);
            setDefaultAccelerator(builder.getShortcutKey(builder.getMenuKey(MENU_PROJECT_KEY, WorkspaceProjectOpenLocationAction.KEY)), "control alt L");
            final WorkspaceProjectOpenLocationAction openLocAction = new WorkspaceProjectOpenLocationAction();
            builder.addAction(MENU_PROJECT_KEY, openLocAction, MenuBuilder.AS_CHILD);
            projectMenu.getPopupMenu().addPopupMenuListener(new PopupMenuListener() {

                public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
                    rmProjectAction.setEnabled();
                    openLocAction.setEnabled();
                    if (WorkspaceController.getCurrentProject() == null) {
                        addMenu.setEnabled(false);
                    } else {
                        addMenu.setEnabled(true);
                    }
                }

                public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
                }

                public void popupMenuCanceled(PopupMenuEvent e) {
                }
            });
        }

        private void setDefaultAccelerator(final String shortcutKey, String accelerator) {
            if (accelerator != null) {
                if (null == ResourceController.getResourceController().getProperty(shortcutKey, null)) {
                    if (Compat.isMacOsX()) {
                        accelerator = accelerator.replaceFirst("CONTROL", "META").replaceFirst("control", "meta");
                    }
                    ResourceController.getResourceController().setDefaultProperty(shortcutKey, accelerator);
                }
            }
        }
    });
}
Also used : PopupMenuListener(javax.swing.event.PopupMenuListener) ModeController(org.freeplane.features.mode.ModeController) MModeController(org.freeplane.features.mode.mindmapmode.MModeController) NodeView(org.freeplane.view.swing.map.NodeView) MenuBuilder(org.freeplane.core.ui.MenuBuilder) PopupMenuEvent(javax.swing.event.PopupMenuEvent) INodeViewLifeCycleListener(org.freeplane.features.ui.INodeViewLifeCycleListener) Container(java.awt.Container) IMenuContributor(org.freeplane.core.ui.IMenuContributor) NodeNewFolderAction(org.freeplane.plugin.workspace.actions.NodeNewFolderAction) NodeNewLinkAction(org.freeplane.plugin.workspace.actions.NodeNewLinkAction) MNodeDropListener(org.freeplane.view.swing.ui.mindmapmode.MNodeDropListener) WorkspaceRemoveProjectAction(org.freeplane.plugin.workspace.actions.WorkspaceRemoveProjectAction) DropTarget(java.awt.dnd.DropTarget) WorkspaceProjectOpenLocationAction(org.freeplane.plugin.workspace.actions.WorkspaceProjectOpenLocationAction) DropTargetDropEvent(java.awt.dnd.DropTargetDropEvent) JMenu(javax.swing.JMenu)

Aggregations

IMenuContributor (org.freeplane.core.ui.IMenuContributor)3 MenuBuilder (org.freeplane.core.ui.MenuBuilder)3 ModeController (org.freeplane.features.mode.ModeController)2 MModeController (org.freeplane.features.mode.mindmapmode.MModeController)2 Container (java.awt.Container)1 DropTarget (java.awt.dnd.DropTarget)1 DropTargetDropEvent (java.awt.dnd.DropTargetDropEvent)1 Hashtable (java.util.Hashtable)1 JMenu (javax.swing.JMenu)1 PopupMenuEvent (javax.swing.event.PopupMenuEvent)1 PopupMenuListener (javax.swing.event.PopupMenuListener)1 IUserInputListenerFactory (org.freeplane.core.ui.IUserInputListenerFactory)1 INodeViewLifeCycleListener (org.freeplane.features.ui.INodeViewLifeCycleListener)1 IModeControllerExtensionProvider (org.freeplane.main.osgi.IModeControllerExtensionProvider)1 NodeNewFolderAction (org.freeplane.plugin.workspace.actions.NodeNewFolderAction)1 NodeNewLinkAction (org.freeplane.plugin.workspace.actions.NodeNewLinkAction)1 WorkspaceProjectOpenLocationAction (org.freeplane.plugin.workspace.actions.WorkspaceProjectOpenLocationAction)1 WorkspaceRemoveProjectAction (org.freeplane.plugin.workspace.actions.WorkspaceRemoveProjectAction)1 NodeView (org.freeplane.view.swing.map.NodeView)1 MNodeDropListener (org.freeplane.view.swing.ui.mindmapmode.MNodeDropListener)1