Reputation: 5488
I am overriding the getActions
method in the Java based framework JHotDraw
, an open source project hosted here. The method getActions
creates a right click context menu on Figure
in the Drawingview
. I can correctly add addidtional context menu options using the code below. I need to know how to add a sub menu to the context menu.
@Override
public Collection<Action> getActions(Point2D.Double p) {
Collection<Action> popupMenu = new ArrayList<Action>();
popupMenu.add(new AbstractAction("add Context Option 1") {
public void actionPerformed(ActionEvent event) {
preformThisMethod("params");
}
});
popupMenu.add(new AbstractAction("add Context Option 2") {
public void actionPerformed(ActionEvent event) {
preformThisMethod("params");
}
});
// How to add a sub menu to the context menu?
return popupMenu;
}
Upvotes: 2
Views: 900
Reputation: 205875
Adding submenus is supported.
The class org.jhotdraw.gui.JPopupButton
extends JButton
to provide the popup menus used throughout the framework. The method add(javax.swing.JMenu submenu)
may be used to construct hierarchical submenus. For example, org.jhotdraw.samples.draw.DrawingPanel
adds a Zoom
submenu to the rightmost popup menu in creationToolbar
, along with other miscellaneous editing actions. The method createFontButton()
in org.jhotdraw.draw.action.ButtonFactory
is another example used to addFontButtonsTo()
the editor.
In contrast, right-clicking on the org.jhotdraw.draw.DefaultDrawingView
is handled by an instance of javax.swing.JPopupMenu
in org.jhotdraw.draw.DelegationSelectionTool
, as shown in org.jhotdraw.samples.mini.EditorSample
. In particular, the AbstractAction
property Actions.SUBMENU_KEY
identifies a submenu name. Set DEBUG = true
to see the effect. None are presently defined.
Upvotes: 3