public abstract class MenuManager
extends java.lang.Object
MenuManager
can be
used to retrieve, create, insert, and remove menus and menu items.
Extension writers should use this API when working with menus in
order to have a complete integration with the IDE's menu management.This class should not be subclassed by extension writers.
Modifier and Type | Class and Description |
---|---|
protected static class |
MenuManager.CustomMenu |
Modifier and Type | Method and Description |
---|---|
void |
add(java.awt.Component child)
Appends a component into the MenuManager's GUI.
|
void |
add(java.awt.Component child,
float sectionId)
Adds a component into the MenuManager's GUI.
|
void |
add(java.awt.Component child,
javax.swing.JMenu parent)
Appends a component into the given parent.
|
void |
add(java.awt.Component child,
javax.swing.JMenu parent,
float sectionId)
Appends a component into the given parent.
|
void |
addMenuFilter(MenuFilter menuFilter)
Adds a menu filter to the menu manager.
|
protected void |
addMenuManagerAsListener(java.awt.Component component) |
void |
applyGlobalFilter(MenuFilter filter)
Applies a filter globally.
|
protected void |
applyGlobalFilterImpl(MenuFilter filter)
Implements the
applyGlobalFilter(MenuFilter) method. |
void |
clearGlobalFilter()
Clears the currently applied global filter, resetting menus to their
default state.
|
protected void |
clearGlobalFilterImpl()
Implements the
clearGlobalFilter() method. |
boolean |
contains(java.awt.Component component) |
javax.swing.JMenu |
createMenu(java.lang.String caption,
float weight)
Creates a new menu suitable for insertion into JDeveloper's top
level menu bar.
|
javax.swing.JMenu |
createMenu(java.lang.String caption,
float weight,
float addinSectionId)
Creates a new menu suitable for insertion into JDeveloper's top
level menu bar.
|
javax.swing.JMenu |
createMenu(java.lang.String caption,
java.lang.Integer mnemonic)
Creates a new menu suitable for insertion into JDeveloper's top
level menu bar.
|
javax.swing.JMenu |
createMenu(java.lang.String caption,
java.lang.Integer mnemonic,
float weight)
Creates a new menu suitable for insertion into JDeveloper's top
level menu bar.
|
javax.swing.JMenu |
createMenu(java.lang.String caption,
java.lang.Integer mnemonic,
float weight,
float addinSectionId)
Creates a new menu suitable for insertion into JDeveloper's top
level menu bar.
|
javax.swing.JMenuItem |
createMenuItem(ToggleAction action)
Creates a new menu item for the supplied
ToggleAction . |
javax.swing.JMenuItem |
createMenuItem(ToggleAction action,
float menuWeight)
Creates a new menu item for the supplied
ToggleAction with
the supplied menu weight. |
javax.swing.JMenu |
createSubMenu(java.lang.String caption,
java.lang.Integer mnemonic)
Creates a new menu suitable for insertion into JDeveloper's menu bar
or into another menu.
|
javax.swing.JMenu |
createSubMenu(java.lang.String caption,
java.lang.Integer mnemonic,
float weight)
Creates a new menu suitable for insertion into JDeveloper's menu bar
or into another menu.
|
javax.swing.JMenu |
createSubMenu(java.lang.String caption,
java.lang.Integer mnemonic,
float weight,
float sectionId)
Creates a new menu suitable for insertion into JDeveloper's menu bar
or into another menu.
|
java.awt.Component |
getChildById(java.awt.Container parent,
int commandId)
Returns the child with the specified command id.
|
protected java.awt.event.ContainerListener |
getContainerListener()
Gets the MenuManager's container listener.
|
abstract java.awt.Container |
getGUI(boolean create)
Gets the MenuManager's GUI.
|
java.lang.String |
getId(java.awt.Component menuComponent)
Returns the id of the specified menu component.
|
int |
getIndexOfChild(java.awt.Container parent,
java.awt.Component child)
Returns the index of the specified component.
|
int |
getIndexOfCommandId(java.awt.Container parent,
int commandId)
Returns the index of the specified command.
|
static javax.swing.JMenu |
getJMenu(java.lang.String id)
Gets the main menu with the specified ID.
|
int |
getKeyboardMnemonic(java.lang.String menuLabel,
java.lang.Integer mnemonic)
Returns an int that corresponds to a VK_xxx key code defined in
KeyEvent and maps to a single key on the keyboard. |
static java.lang.String |
getMenuId(javax.swing.JMenu menu)
Returns the identifier for a menu previously set by
setMenuId(JMenu,String)
or registered using the putJMenu(String,JMenu) method. |
protected boolean |
isMenuComponentAccepted(java.awt.Component component)
Returns true if all registered MenuFilters accept
the specified menu component.
|
protected static boolean |
isMenuComponentAccepted(java.awt.Component component,
java.util.Collection<MenuFilter> filters) |
java.lang.Float |
lookupMenuSection(java.lang.String menuId,
java.lang.String sectionId)
Retrieves the section value for a specific menu section in a given menu.
|
static void |
putJMenu(java.lang.String id,
javax.swing.JMenu menu)
Puts the main menu with the specified ID.
|
protected void |
registerFilterContainerListener(javax.swing.JMenu menu) |
void |
remove(java.awt.Component child)
Removes a child from the MenuManager's GUI.
|
void |
remove(java.awt.Component child,
javax.swing.JMenu parent)
Removes a child from the given parent.
|
void |
removeAll(javax.swing.JMenu parent) |
void |
removeMenuFilter(MenuFilter menuFilter)
Removes a menu filter from the menu manager.
|
protected void |
removeMenuManagerAsListener(java.awt.Component component) |
void |
removeMenuManagerMenuListener(javax.swing.JMenu menu)
INTERNAL method.
|
void |
resolveMnemonicsForMenuItemsInSection(javax.swing.JMenu menu,
float sectionID)
Ensures that the mnemonics for the menu items in the specified
section are resolved before the menu is shown.
|
static void |
setMenuId(javax.swing.JMenu menu,
java.lang.String id)
Sets the identifier for a menu.
|
protected void |
setWeight(java.awt.Component component,
float weight,
java.lang.String weightId)
Checks to see if section Id is the default section,
if so, only replace the client property if child is unset.
|
void |
sortContainer(java.awt.Container container) |
void |
sortSectionByName(javax.swing.JComponent menu,
float sectionID)
Sorts the commands in the specified section alphabetically by
the menu item name, rather than sorting by weight.
|
void |
storeMenuSection(java.lang.String menuId,
java.lang.String sectionId,
java.lang.Float section)
Stores a section value for a menu section in a specific menu.
|
protected void |
unregisterFilterContainerListener(javax.swing.JMenu menu) |
public void addMenuFilter(MenuFilter menuFilter)
Note that a menu filter added via Ide.getMenubar().addMenuFilter()
will be applied to all context menus as well.
menuFilter
- a menu filter. Must not be null.public void removeMenuFilter(MenuFilter menuFilter)
menuFilter
- a filter previously added using
addMenuFilter(MenuFilter)
.
Note that a menu filter removed via Ide.getMenubar().addMenuFilter()
will be removed from all context menus as well.public final void applyGlobalFilter(MenuFilter filter)
Only one filter can be in effect at any given time. If you attempt to apply a global filter while a filter is already in effect, the previous filter will be canceled.
This method primarily exists to support the ability for layouts to control
menus. See the oracle.ide.layout.Layouts#registerMenuFilter(oracle.ide.layout.Layout,MenuFilter)
method for details.
filter
- a filter to apply globally. Must not be null.java.lang.IllegalStateException
- if a filter is already in effect.java.lang.NullPointerException
- if filter is null.clearGlobalFilter()
protected void applyGlobalFilterImpl(MenuFilter filter)
applyGlobalFilter(MenuFilter)
method.This implementation does nothing.
filter
- the filter to apply.public final void clearGlobalFilter()
You may call this method safely even if no filter is currently applied.
protected void clearGlobalFilterImpl()
clearGlobalFilter()
method.This implementation does nothing.
public java.lang.Float lookupMenuSection(java.lang.String menuId, java.lang.String sectionId)
menuId
- the id that identifies the menusectionId
- the id used to identify the sectionSECTION_UNDEFINED
if the menu or section ID was not foundpublic void storeMenuSection(java.lang.String menuId, java.lang.String sectionId, java.lang.Float section)
Note: Although this method is public, it is not intended to be called except by the JSR198 implementation classes.
menuId
- the id that identifies the menu; should be non-nullsectionId
- the id used to identify the section; should be non-nullpublic static final void setMenuId(javax.swing.JMenu menu, java.lang.String id)
menu
- a menu instance. Must not be null.id
- an identifier for the menu. If null, any existing identifier for
the menu is cleared.public static final java.lang.String getMenuId(javax.swing.JMenu menu)
setMenuId(JMenu,String)
or registered using the putJMenu(String,JMenu)
method.menu
- a menu, must not be null.protected final boolean isMenuComponentAccepted(java.awt.Component component)
component
- a component.protected static final boolean isMenuComponentAccepted(java.awt.Component component, java.util.Collection<MenuFilter> filters)
public static final javax.swing.JMenu getJMenu(java.lang.String id)
public static final void putJMenu(java.lang.String id, javax.swing.JMenu menu)
public javax.swing.JMenu createMenu(java.lang.String caption, java.lang.Integer mnemonic)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".mnemonic
- the mnemonic to associate with the resulting JMenu.JMenu
public javax.swing.JMenu createMenu(java.lang.String caption, float weight, float addinSectionId)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".weight
- a float used to indicate the menu's position in the menu
bar. Menus are sorted in ascending order from the left to right.addinSectionId
- menu items which are not explicitly added to a menu
section are added to this section.JMenu
public javax.swing.JMenu createMenu(java.lang.String caption, java.lang.Integer mnemonic, float weight)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".mnemonic
- mnemonic to associate with the resulting JMenu.weight
- a float used to indicate the menu's position in the menu
bar. Menus are sorted in ascending order from the left to right.JMenu
public javax.swing.JMenu createMenu(java.lang.String caption, float weight)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".weight
- a float used to indicate the menu's position in the menu
bar. Menus are sorted in ascending order from the left to right.JMenu
public javax.swing.JMenu createMenu(java.lang.String caption, java.lang.Integer mnemonic, float weight, float addinSectionId)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".mnemonic
- mnemonic to associate with the resulting JMenu.weight
- a float used to indicate the menu's position in the menu
bar. Menus are sorted in ascending order from the left to right.addinSectionId
- menu items which are not explicitly added to a menu
section are added to this section.JMenu
public int getKeyboardMnemonic(java.lang.String menuLabel, java.lang.Integer mnemonic)
KeyEvent
and maps to a single key on the keyboard. If the menu
label text has a mnemonic, that takes precedence over the suppied Integer.
If neither menu label, nor mnemonic contains a valid
mnemonic, KeyEvent.VK_UNDEFINED
is returned.menuLabel
- the menu label; must not be nullmnemonic
- the menu mnemonicKeyEvent.VK_UNDEFINED
if a none could be determinedAbstractButton.setMnemonic(int)
public javax.swing.JMenu createSubMenu(java.lang.String caption, java.lang.Integer mnemonic)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".mnemonic
- the mnemonic to associate with the resulting JMenu.JMenu
public javax.swing.JMenu createSubMenu(java.lang.String caption, java.lang.Integer mnemonic, float weight)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".mnemonic
- mnemonic to associate with the resulting JMenu.weight
- a float used to indicate the menu's position in the menu
bar. Menus are sorted in ascending order from the left to right.JMenu
public javax.swing.JMenu createSubMenu(java.lang.String caption, java.lang.Integer mnemonic, float weight, float sectionId)
caption
- localized string to be displayed in the bar or supermenu;
value should be non-null. A mnemonic may be embedded into the string in
the style of "&File".mnemonic
- mnemonic to associate with the resulting JMenu.weight
- a float used to indicate the menu's position in the menu
bar. Menus are sorted in ascending order from the left to right.sectionId
- menu items which are not explicitly added to a menu
section are added to this section.JMenu
protected void registerFilterContainerListener(javax.swing.JMenu menu)
protected final void unregisterFilterContainerListener(javax.swing.JMenu menu)
public javax.swing.JMenuItem createMenuItem(ToggleAction action)
ToggleAction
. By
default, the menu weight is WEIGHT_UNDEFINED
unless the action has a defined menu weight, in which
case that value is used.public javax.swing.JMenuItem createMenuItem(ToggleAction action, float menuWeight)
ToggleAction
with
the supplied menu weight. If the ToggleAction
has a defined
menu weight, the supplied weight overwrites it, except in the case where
the supplied menu weight is
MenuConstants.WEIGHT_UNDEFINED
then the
menu weight stored in the ToggleAction
, if any, is set in
the menu item.action
- The action for this menu itemmenuWeight
- The menu weight to use to sort this item when
it is added to a menucreateMenuItem(ToggleAction)
,
ToggleAction
,
ToggleAction.setMenuWeight(float)
public void add(java.awt.Component child)
child
- the child to add.public void add(java.awt.Component child, float sectionId)
child
- the child to add.sectionId
- the menu section to which to add the child. Menu
sections are automatically split by JSeparators.public void add(java.awt.Component child, javax.swing.JMenu parent)
child
- the child to be inserted.parent
- the parent in which to insert the child.public void add(java.awt.Component child, javax.swing.JMenu parent, float sectionId)
child
- the child to add.parent
- the parent in which to insert the child.sectionId
- a float which indicates the menu section to
which the child will be added. Menu sections are automatically
split by JSeparators. Menu section constants are defined in the
MenuConstants
interface.MenuConstants
public boolean contains(java.awt.Component component)
public void remove(java.awt.Component child)
child
- the child to be removed.public void remove(java.awt.Component child, javax.swing.JMenu parent)
child
- the child to remove.parent
- the parent from which to remove the child.public void removeAll(javax.swing.JMenu parent)
public abstract java.awt.Container getGUI(boolean create)
create
- force a creation of the GUI if it does not yet exist.protected java.awt.event.ContainerListener getContainerListener()
public int getIndexOfChild(java.awt.Container parent, java.awt.Component child)
parent
- the Container to search for the child componentchild
- the Component to findpublic int getIndexOfCommandId(java.awt.Container parent, int commandId)
parent
- the Container in which to search for the child commandcommandId
- the commandId to findpublic java.awt.Component getChildById(java.awt.Container parent, int commandId)
parent
- the Container in which to search for the child commandcommandId
- the command id to findpublic void sortSectionByName(javax.swing.JComponent menu, float sectionID)
menu
- The menu componentsectionID
- The section that contains the commands commands
to sort alphabetically. If none of the commands the menu are in the
specified section, the commands will be sorted in the default order.public void resolveMnemonicsForMenuItemsInSection(javax.swing.JMenu menu, float sectionID)
menu
- The menu containersectionID
- The section that contains the menu items whose
mnemonics to resolve.public void removeMenuManagerMenuListener(javax.swing.JMenu menu)
protected void setWeight(java.awt.Component component, float weight, java.lang.String weightId)
public void sortContainer(java.awt.Container container)
protected final void addMenuManagerAsListener(java.awt.Component component)
protected final void removeMenuManagerAsListener(java.awt.Component component)
public final java.lang.String getId(java.awt.Component menuComponent)
getMenuId(JMenu)
method.menuComponent
- a component to get the id of. Must not be null.