📄 mindmapcontroller.java
字号:
toolbar.selectFontSize(n.getFontSize()); toolbar.selectFontName(n.getFontFamilyName()); } } public void anotherNodeSelected(MindMapNode n) { super.anotherNodeSelected(n); toolbar.selectFontSize(((NodeAdapter)n).getFontSize()); toolbar.selectFontName(((NodeAdapter)n).getFontFamilyName()); } // fc, 14.12.2004: changes, such that different models can be used: private NewNodeCreator myNewNodeCreator = null; public interface NewNodeCreator { MindMapNode createNode(Object userObject); } public class DefaultMindMapNodeCreator implements NewNodeCreator { public MindMapNode createNode(Object userObject) { return new MindMapNodeModel(userObject, getFrame()); } } public void setNewNodeCreator(NewNodeCreator creator) { myNewNodeCreator = creator; } public MindMapNode newNode(Object userObject) { // singleton default: if (myNewNodeCreator == null) { myNewNodeCreator = new DefaultMindMapNodeCreator(); } return myNewNodeCreator.createNode(userObject); } // fc, 14.12.2004: end "different models" change //get/set methods /** * @param holder */ public void updateMenus(StructuredMenuHolder holder) { processMenuCategory(holder, mMenuStructure.getMenuCategory(), ""); /*MenuBar.MENU_BAR_PREFIX*/ // add hook actions to this holder. // hooks, fc, 1.3.2004: for (int i = 0; i < hookActions.size(); ++i) { Action hookAction = (Action) hookActions.get(i); List positions = (List) actionToMenuPositions.get(hookAction); for (Iterator j = positions.iterator(); j.hasNext();) { String pos = (String) j.next(); holder.addAction(hookAction, pos); } } // update popup and toolbar: popupmenu.update(holder); toolbar.update(holder); // editMenu.add(getExtensionMenu()); String formatMenuString = MenuBar.FORMAT_MENU; createPatternSubMenu(holder, formatMenuString);// editMenu.add(getIconMenu()); addIconsToMenu(holder, MenuBar.INSERT_MENU + "icons"); } public void addIconsToMenu(StructuredMenuHolder holder, String iconMenuString) { JMenu iconMenu = holder.addMenu(new JMenu(getText("icon_menu")), iconMenuString+"/.") ; holder.addAction(removeLastIconAction, iconMenuString+"/removeLastIcon"); holder.addAction(removeAllIconsAction, iconMenuString+"/removeAllIcons"); holder.addSeparator(iconMenuString); for (int i=0; i<iconActions.size(); ++i) { JMenuItem item = holder.addAction((Action) iconActions.get(i), iconMenuString+"/"+i); } } /** * @param holder * @param formatMenuString */ public JMenu createPatternSubMenu(StructuredMenuHolder holder, String formatMenuString) { JMenu extensionMenu = holder.addMenu(new JMenu(getText("extension_menu")), formatMenuString+"patterns/."); for (int i = 0; i < patterns.length; ++i) { JMenuItem item = holder.addAction( patterns[i], formatMenuString + "patterns/" + i); item.setAccelerator( KeyStroke.getKeyStroke( getFrame().getProperty( "keystroke_apply_pattern_" + (i + 1)))); } return extensionMenu; } public MenuStructure updateMenusFromXml(InputStream in) { // get from resources: try { Unmarshaller unmarshaller = JaxbTools.getInstance().createUnmarshaller(); unmarshaller.setValidating(true); MenuStructure menus = (MenuStructure) unmarshaller.unmarshal(in); return menus; } catch (JAXBException e) { logger.severe(e.getCause() + e.getLocalizedMessage() + e.getMessage()); e.printStackTrace(); throw new IllegalArgumentException("Menu structure could not be read."); } } /** * @param type */ public void processMenuCategory(StructuredMenuHolder holder, List list, String category) { String categoryCopy = category; for (Iterator i = list.iterator(); i.hasNext();) { Object obj = (Object) i.next(); if(obj instanceof MenuCategoryBase) { MenuCategoryBase cat = (MenuCategoryBase) obj; String newCategory = categoryCopy+"/"+cat.getName(); holder.addCategory(newCategory); if(cat instanceof MenuSubmenu) { MenuSubmenu submenu = (MenuSubmenu) cat; holder.addMenu(new JMenu(getText(submenu.getNameRef())), newCategory+"/."); } processMenuCategory(holder, cat.getMenuCategoryOrMenuSubmenuOrMenuAction(), newCategory); } else if( obj instanceof MenuActionBase ) { MenuActionBase action = (MenuActionBase) obj; String field = action.getField(); String name = action.getName(); if(name == null) { name = field; } String keystroke = action.getKeyRef(); try { Action theAction = (Action) this.getClass().getField(field).get(this); String theCategory = categoryCopy+"/"+name; if (obj instanceof MenuCheckedAction) { addCheckBox(holder, theCategory, theAction, keystroke); } else { add(holder, theCategory, theAction, keystroke); } } catch (Exception e1) { e1.printStackTrace(); } } else if (obj instanceof MenuSeparator) { holder.addSeparator(categoryCopy); } /* else exception */ } } public JPopupMenu getPopupMenu() { return popupmenu; } /** Link implementation: If this is a link, we want to make a popup with at least removelink available.*/ public JPopupMenu getPopupForModel(java.lang.Object obj) { if( obj instanceof MindMapArrowLinkModel) { // yes, this is a link. MindMapArrowLinkModel link = (MindMapArrowLinkModel) obj; JPopupMenu arrowLinkPopup = new JPopupMenu(); // block the screen while showing popup. arrowLinkPopup.addPopupMenuListener( this.popupListenerSingleton ); removeArrowLinkAction.setArrowLink(link); arrowLinkPopup.add(new RemoveArrowLinkAction(this, link)); arrowLinkPopup.add(new ColorArrowLinkAction(this, link)); arrowLinkPopup.addSeparator(); /* The arrow state as radio buttons: */ JRadioButtonMenuItem itemnn = new JRadioButtonMenuItem( new ChangeArrowsInArrowLinkAction(this, "none", "images/arrow-mode-none.gif",link, false, false) ); JRadioButtonMenuItem itemnt = new JRadioButtonMenuItem( new ChangeArrowsInArrowLinkAction(this, "forward", "images/arrow-mode-forward.gif",link, false, true) ); JRadioButtonMenuItem itemtn = new JRadioButtonMenuItem( new ChangeArrowsInArrowLinkAction(this, "backward", "images/arrow-mode-backward.gif",link, true, false) ); JRadioButtonMenuItem itemtt = new JRadioButtonMenuItem( new ChangeArrowsInArrowLinkAction(this, "both", "images/arrow-mode-both.gif",link, true, true) ); itemnn.setText(null); itemnt.setText(null); itemtn.setText(null); itemtt.setText(null); arrowLinkPopup.add( itemnn ); arrowLinkPopup.add( itemnt ); arrowLinkPopup.add( itemtn ); arrowLinkPopup.add( itemtt ); // select the right one: boolean a = !link.getStartArrow().equals("None"); boolean b = !link.getEndArrow().equals("None"); itemtt.setSelected(a&&b); itemnt.setSelected(!a&&b); itemtn.setSelected(a&&!b); itemnn.setSelected(!a&&!b); arrowLinkPopup.addSeparator(); arrowLinkPopup.add(new GotoLinkNodeAction(this, link.getSource())); arrowLinkPopup.add(new GotoLinkNodeAction(this, link.getTarget())); arrowLinkPopup.addSeparator(); // add all links from target and from source: HashSet NodeAlreadyVisited = new HashSet(); NodeAlreadyVisited.add(link.getSource()); NodeAlreadyVisited.add(link.getTarget()); Vector links = getMindMapMapModel().getLinkRegistry().getAllLinks(link.getSource()); links.addAll(getMindMapMapModel().getLinkRegistry().getAllLinks(link.getTarget())); for(int i = 0; i < links.size(); ++i) { MindMapArrowLinkModel foreign_link = (MindMapArrowLinkModel) links.get(i); if(NodeAlreadyVisited.add(foreign_link.getTarget())) { arrowLinkPopup.add(new GotoLinkNodeAction(this, foreign_link.getTarget())); } if(NodeAlreadyVisited.add(foreign_link.getSource())) { arrowLinkPopup.add(new GotoLinkNodeAction(this, foreign_link.getSource())); } } return arrowLinkPopup; } return null; } //convenience methods private MindMapMapModel getMindMapMapModel() { return (MindMapMapModel)getController().getModel(); } MindMapToolBar getToolBar() { return (MindMapToolBar)toolbar; } JToolBar getLeftToolBar() { return ((MindMapToolBar)toolbar).getLeftToolBar(); } /** * Enabled/Disabled all actions that are dependent on * whether there is a map open or not. */ protected void setAllActions(boolean enabled) { super.setAllActions(enabled); // own actions increaseNodeFont.setEnabled(enabled); decreaseNodeFont.setEnabled(enabled); exportBranch.setEnabled(enabled); exportBranchToHTML.setEnabled(enabled); editLong.setEnabled(enabled); newSibling.setEnabled(enabled); newPreviousSibling.setEnabled(enabled); setLinkByFileChooser.setEnabled(enabled); setImageByFileChooser.setEnabled(enabled); followLink.setEnabled(enabled); for (int i=0; i<iconActions.size(); ++i) { ((Action) iconActions.get(i)).setEnabled(enabled); } save.setEnabled(enabled); saveAs.setEnabled(enabled); getToolBar().setAllActions(enabled); exportBranch.setEnabled(enabled); exportToHTML.setEnabled(enabled); importBranch.setEnabled(enabled); importLinkedBranch.setEnabled(enabled); importLinkedBranchWithoutRoot.setEnabled(enabled); // hooks: for (int i=0; i<hookActions.size(); ++i) { ((Action) hookActions.get(i)).setEnabled(enabled); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -