org.freeplane.core.util

## Class MenuUtils

- java.lang.Object
- - org.freeplane.core.util.MenuUtils

-     public class MenuUtils
      extends java.lang.Object

  Utilities for dealing with the Freeplane menu: In scripts available as "global variable" menuUtils.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `MenuUtils.MenuEntry` The userObject type for createMenuEntryTree().
    `static class` | `MenuUtils.MenuEntryTreeBuilder`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MenuUtils()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static javax.swing.tree.DefaultMutableTreeNode` | `createAcceleratebleMenuEntryTree(java.lang.String menuRootKey)` Used as the basis for dynamic generation of hotkey list.
    `static javax.swing.tree.DefaultMutableTreeNode` | `createMenuEntryTree(java.lang.String menuRootKey)` returns a tree of all `JMenuItem` nodes the menu contains (omitting Strings and Separators).
    `static void` | `executeMenuItems(java.util.List<java.lang.String> menuItemKeys)` to be used from scripts to execute menu items.
    `static org.freeplane.core.ui.IndexedTree.Node` | `findAssignedMenuItemNodeRecursively(javax.swing.tree.DefaultMutableTreeNode menubarNode, javax.swing.KeyStroke keystroke)` there are little reasons to use this in scripts.
    `static java.lang.String` | `formatKeyStroke(javax.swing.KeyStroke keyStroke)` pretty print a keystroke.
    `static javax.swing.Icon` | `getMenuItemIcon(java.lang.String menuItemKey)` returns the icon for a menuItemKey or null if it has none.
    `static void` | `insertAsNodeModelRecursively(org.freeplane.features.map.NodeModel nodeModel, java.util.Enumeration children, org.freeplane.features.map.MapController mapController)` Could be (but currently isn't) used to generate a mindmap representation of the menu.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MenuUtils

          public MenuUtils()

  - ### Method Detail

    - #### createMenuEntryTree

          public static javax.swing.tree.DefaultMutableTreeNode createMenuEntryTree(java.lang.String menuRootKey)

      returns a tree of all `JMenuItem` nodes the menu contains (omitting Strings and Separators). The tree is build from `DefaultMutableTreeNode` nodes having `MenuEntry` objects as their userObjects. Note that the root node may have null as userObject if the menu item at `menuRootKey` doesn't contain a `JMenuItem`!
      Parameters:
        `menuRootKey` - the key of the node that should form the root of the output.
      Throws:
        `java.lang.IllegalArgumentException` - if the menuRootKey does not point to an entry in the menu tree

    - #### createAcceleratebleMenuEntryTree

          public static javax.swing.tree.DefaultMutableTreeNode createAcceleratebleMenuEntryTree(java.lang.String menuRootKey)

      Used as the basis for dynamic generation of hotkey list. Same as `createMenuEntryTree(String)` but all MenuEntries without associated accelerator and (then) empty submenus are removed from the result.
      Throws:
        `java.lang.IllegalArgumentException` - if the menuRootKey does not point to an entry in the menu tree

    - #### insertAsNodeModelRecursively

          public static void insertAsNodeModelRecursively(org.freeplane.features.map.NodeModel nodeModel,
                                                          java.util.Enumeration children,
                                                          org.freeplane.features.map.MapController mapController)

      Could be (but currently isn't) used to generate a mindmap representation of the menu.
      Parameters:
        `children` - Enumeration of DefaultMutableTreeNode from the menu tree.

    - #### formatKeyStroke

          public static java.lang.String formatKeyStroke(javax.swing.KeyStroke keyStroke)

      pretty print a keystroke.

    - #### findAssignedMenuItemNodeRecursively

          public static org.freeplane.core.ui.IndexedTree.Node findAssignedMenuItemNodeRecursively(javax.swing.tree.DefaultMutableTreeNode menubarNode,
                                                                                                   javax.swing.KeyStroke keystroke)

      there are little reasons to use this in scripts.

    - #### executeMenuItems

          public static void executeMenuItems(java.util.List<java.lang.String> menuItemKeys)

      to be used from scripts to execute menu items. Find out the menuItemKey of a menu item with the devtools add-on. It contains a tool for that.

    - #### getMenuItemIcon

          public static javax.swing.Icon getMenuItemIcon(java.lang.String menuItemKey)

      returns the icon for a menuItemKey or null if it has none.