private static NodeModel insertAsNodeModel( final NodeModel nodeModel, final DefaultMutableTreeNode treeNode, final MapController mapController) { final MenuEntry menuEntry = (MenuEntry) treeNode.getUserObject(); final String text = menuEntry.getKeyStroke() == null ? menuEntry.getLabel() : menuEntry.getLabel() + ": " + MenuUtils.formatKeyStroke(menuEntry.getKeyStroke()); final NodeModel newNodeModel = mapController.newNode(text, nodeModel.getMap()); if (!treeNode.isLeaf()) { newNodeModel.setFolded(true); } if (menuEntry.getIconKey() != null) { final MindIcon mindIcon = menuEntry.createMindIcon(); if (mindIcon != null) newNodeModel.addIcon(mindIcon); } nodeModel.insert(newNodeModel); return newNodeModel; }
// filters out non-acceleratable menu entries @SuppressWarnings("rawtypes") private static void addAcceleratableChildrenRecursively( final DefaultMutableTreeNode target, final Enumeration sourceChildren) { while (sourceChildren.hasMoreElements()) { final DefaultMutableTreeNode sourceChild = (DefaultMutableTreeNode) sourceChildren.nextElement(); final MenuEntry menuEntry = (MenuEntry) sourceChild.getUserObject(); if (sourceChild.isLeaf()) { if (menuEntry.getKeyStroke() != null) { target.add(new DefaultMutableTreeNode(menuEntry)); } } else { final DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(menuEntry); target.add(newNode); MenuUtils.addAcceleratableChildrenRecursively(newNode, sourceChild.children()); if (newNode.isLeaf()) { target.remove(newNode); } } } }