ContextMenuTool class

The ContextMenuTool is used to create and show a context menu. It automatically disables any browser context menu.

Define context menus on individual GraphObjects by setting GraphObject#contextMenu. Define a context menu for the diagram background by setting Diagram#contextMenu.

This tool is a standard mouse-down tool, the ToolManager#contextMenuTool.

This tool does not utilize any tool handles. This tool does not modify the model or conduct any transaction, although any code invoked by context menu commands might do so.

There are examples of customizing this tool in the Custom Context Menu and HTML LightBox Context Menu samples.

If you want to programmatically show a context menu for a particular GraphObject or for the whole diagram, call CommandHandler#showContextMenu. That command method is also invoked by the Menu key on the keyboard.

Normally this shows a context menu (if available) on a right-mouse-up event. If you want it to happen on a right-mouse-down event, you'll need to move this tool from the ToolManager#mouseUpTools list to the ToolManager#mouseDownTools list:

myDiagram.toolManager.mouseDownTools.add(myDiagram.toolManager.replaceTool("ContextMenu", null));
Implemented types
Available extensions
Annotations
  • @JS()
  • @staticInterop

Constructors

ContextMenuTool()
factory

Properties

currentContextMenu ↔ dynamic

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Gets or sets the currently showing context menu, or null if there is none. This is typically only set in #showContextMenu and not by the user. It is also typically set to null in #hideContextMenu.
getter/setter pair
currentObject GraphObject?

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Gets or sets the GraphObject found at the mouse point that has a context menu. This property remembers the result returned by #findObjectWithContextMenu if it is a GraphObject. This value is passed to #showContextMenu as the second argument. The value will be null if the context menu is for the diagram rather than for a particular GraphObject.
getter/setter pair
defaultTouchContextMenu ↔ dynamic

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Gets or sets the HTMLInfo or Adornment that acts as the default touch context menu. On touch devices, this context menu will appear even there is no context menu defined.
getter/setter pair
diagram Diagram

Available on Tool, provided by the Tool$Typings extension

This read-only property returns the Diagram that owns this tool and for which this tool is handling input events.
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
isActive bool

Available on Tool, provided by the Tool$Typings extension

Gets or sets whether this tool is started and is actively doing something.
getter/setter pair
isEnabled bool

Available on Tool, provided by the Tool$Typings extension

Gets or sets whether this tool can be started by a mouse event.
getter/setter pair
mouseDownPoint Point

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

This read-only property returns the original mouse-down point in document coordinates.
getter/setter pair
name String

Available on Tool, provided by the Tool$Typings extension

Gets or sets the name of this tool. The default name is an empty string, but the constructor for each instance of a subclass of Tool will initialize it appropriately. For example, the name of the DragSelectingTool is "DragSelecting".
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
transactionResult String?

Available on Tool, provided by the Tool$Typings extension

Gets or sets the name of the transaction to be committed by #stopTransaction
getter/setter pair

Methods

cancelWaitAfter() → void

Available on Tool, provided by the Tool$Typings extension

This is called to cancel any running "WaitAfter" timer.
canStart() bool

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Return true if it's a single mouse right click that hasn't moved Tool#isBeyondDragSize and that is on a GraphObject with a GraphObject#contextMenu. This is also true if the mouse right click is in the diagram background and the diagram's Diagram#contextMenu is non-null.
canStart() bool

Available on Tool, provided by the Tool$Typings extension

This predicate is used by the ToolManager to decide if this tool can be started mode-lessly by mouse and touch events. Implementations of this method can look at Diagram#lastInput to get the mouse event and input state.
canStartMultiTouch() bool

Available on Tool, provided by the Tool$Typings extension

Called by ToolManager#doMouseDown and ToolManager#doMouseMove, this method determines whether or not to allow pinch zooming from a multi-touch event. By default this predicate just returns true. This method may be overridden. Please read the Introduction page on Extensions for how to override methods and how to call this base method. @expose @return {boolean} @see #standardPinchZoomStart @see #standardPinchZoomMove @since 1.5
doActivate() → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Do nothing, activation is special and relies on doMouseUp
doActivate() → void

Available on Tool, provided by the Tool$Typings extension

The Diagram calls this method after setting Diagram#currentTool, to make the new tool active. This should set #isActive to true. Overrides of this method might call #startTransaction, if this tool's activity involves modification of the model. Implementations of this method can look at Diagram#lastInput to get the mouse event and input state.
doCancel() → void

Available on Tool, provided by the Tool$Typings extension

The diagram will call this method when the user wishes to cancel the current tool's operation. Typically this is called when the user hits the ESCAPE key. This should restore the original state of what was modified by this tool, and then it should call #stopTool. This method is not responsible for cleaning up any side-effects that should be performed by #doDeactivate and/or #doStop, which will always be called whether the tool stops normally or abnormally.
doDeactivate() → void

Available on Tool, provided by the Tool$Typings extension

The Diagram calls this method on the old tool when Diagram#currentTool is set to a new tool. This needs to set #isActive to false. Overrides of this method might call #stopTransaction, if this tool's activity involves modification of the model.
doKeyDown() → void

Available on Tool, provided by the Tool$Typings extension

The diagram will call this method upon a key down event. By default this just calls #doCancel if the key is the ESCAPE key. Implementations of this method can look at Diagram#lastInput to get the key.
doKeyUp() → void

Available on Tool, provided by the Tool$Typings extension

The diagram will call this method upon a key up event. Implementations of this method can look at Diagram#lastInput to get the key.
doMouseDown() → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Activate this but also execute the normal behavior that would happen on a mouse-up if this tool is in the ToolManager#mouseDownTools list. Perform ActionTool#doMouseDown if a ContextMenuButton was hit.
doMouseDown() → void

Available on Tool, provided by the Tool$Typings extension

The diagram will call this method upon a mouse down event. This is normally overridden for mouse-down tools; it is not called for mouse-move or mouse-up tools. However it may also be called when the tool is run in a modal fashion, when code explicitly sets the diagram's Diagram#currentTool. Implementations of this method can look at Diagram#lastInput to get the mouse event and input state.
doMouseMove() → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Handle mouse-enter, mouse-over, and mouse-leave events, as well as tooltips.
doMouseMove() → void

Available on Tool, provided by the Tool$Typings extension

The diagram will call this method upon a mouse move event. This is normally overridden for mouse-move tools; it is not called for mouse-up tools. However it may also be called when the tool is run in a modal fashion, when code explicitly sets the diagram's Diagram#currentTool. An override of this method usually does nothing when #isActive is false. Implementations of this method can look at Diagram#lastInput to get the mouse event and input state.
doMouseUp() → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

If there is something found by #findObjectWithContextMenu, call #showContextMenu with that object's GraphObject#contextMenu or the Diagram#contextMenu.
doMouseUp() → void

Available on Tool, provided by the Tool$Typings extension

The diagram will call this method upon a mouse up event. This is normally overridden for mouse-up tools. An override of this method usually does nothing when #isActive is false, except for calling #stopTool. Tools normally stop upon a mouse up, by calling #stopTool. If you want to handle multiple mouse down-up gestures in one tool activation, you will need to override this method to only stop the tool when you want. Implementations of this method can look at Diagram#lastInput to get the mouse event and input state.
doMouseWheel() → void

Available on Tool, provided by the Tool$Typings extension

The diagram will call this method as the mouse wheel is rotated. Implementations of this method can look at Diagram#lastInput to get the mouse event and input state.
doStart() → void

Available on Tool, provided by the Tool$Typings extension

The Diagram calls this method when this tool becomes the current tool; you should not call this method. Tool implementations should perform their per-use initialization here, such as setting up internal data structures, or capturing the mouse. Implementations of this method can look at Diagram#lastInput to get the mouse event and input state.
doStop() → void

Available on Tool, provided by the Tool$Typings extension

The Diagram calls this method when this tool stops being the current tool; you should not call this method. Tool implementations should perform their per-use cleanup here, such as releasing mouse capture.
doWaitAfter(InputEvent event) → void

Available on Tool, provided by the Tool$Typings extension

This is called a certain delay after a call to #standardWaitAfter if there has not been any call to #cancelWaitAfter. The ToolManager overrides this method in order to implement support for mouse-hover behavior and tooltips.
findObjectWithContextMenu([Object? obj]) → dynamic

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Find a GraphObject at the current mouse point with a GraphObject#contextMenu, or return the Diagram if there is a Diagram#contextMenu.
findToolHandleAt(Point p, String category) GraphObject?

Available on Tool, provided by the Tool$Typings extension

This convenience function finds the front-most GraphObject that is at a given point and that is an element of an Adornment that is of a given category. The tool handle must be an immediate element of the Adornment, not a GraphObject that is nested within Panels within the Adornment.
hideContextMenu() → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Hide any context menu.
hideDefaultContextMenu() → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

This is the HTMLInfo#hide method for the #defaultTouchContextMenu.
isBeyondDragSize([Point? first, Point? last]) bool

Available on Tool, provided by the Tool$Typings extension

Return true when the last mouse point is far enough away from the first mouse down point to constitute a drag operation instead of just a potential click.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
positionContextMenu(Adornment contextmenu, [GraphObject? obj]) → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

This is called by #showContextMenu to position the context menu within the viewport. It normally goes just below the cursor. But if the mouse is too close to the right edge or the bottom edge of the viewport, it is positioned left and/or above the cursor.
showContextMenu(Object contextmenu, [GraphObject? obj]) → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

Show an Adornment or HTMLInfo as a context menu.
showDefaultContextMenu() → void

Available on ContextMenuTool, provided by the ContextMenuTool$Typings extension

This is the HTMLInfo#show method for the #defaultTouchContextMenu.
standardMouseClick<T extends GraphObject>([T? navig(GraphObject)?, bool pred(T)?]) bool

Available on Tool, provided by the Tool$Typings extension

Implement the standard behavior for mouse clicks, searching for and calling click handler functions on GraphObjects or on Diagram, and raising the corresponding DiagramEvent.
standardMouseOver() → void

Available on Tool, provided by the Tool$Typings extension

Implement the standard behavior for mouse enter, over, and leave events, where the mouse is moving but no button is pressed. This should be called by mouse move event handlers when wanting to detect and invoke mouse enter/over/leave event handlers.
standardMouseSelect() → void

Available on Tool, provided by the Tool$Typings extension

Implement the standard behavior for selecting parts with the mouse, depending on the control and shift modifier keys.
standardMouseWheel() → void

Available on Tool, provided by the Tool$Typings extension

Implement the standard behavior for mouse wheel events. ToolManager#doMouseWheel calls this method.
standardPinchZoomMove() → void

Available on Tool, provided by the Tool$Typings extension

Continues pinch-zooming (started by #standardPinchZoomStart on multi-touch devices.
standardPinchZoomStart() → void

Available on Tool, provided by the Tool$Typings extension

Initiates pinch-zooming on multi-touch devices.
standardWaitAfter(num delay, [InputEvent? event]) → void

Available on Tool, provided by the Tool$Typings extension

This is called to start a new timer to call #doWaitAfter after a given delay. It first cancels any previously running "WaitAfter" timer, by calling #cancelWaitAfter.
startTransaction([String? tname]) bool

Available on Tool, provided by the Tool$Typings extension

Call Diagram#startTransaction with the given transaction name. This always sets #transactionResult to null.
stopTool() → void

Available on Tool, provided by the Tool$Typings extension

If the Diagram#currentTool is this tool, stop this tool and start the Diagram#defaultTool by making it be the new current tool. The implementation of various tool methods can call this method to stop the current tool. This will call #doStop -- you should not call that method directly.
stopTransaction() bool

Available on Tool, provided by the Tool$Typings extension

If #transactionResult is null, call Diagram#rollbackTransaction, otherwise call Diagram#commitTransaction.
toString() String
A string representation of this object.
inherited
updateAdornments(Part part) → void

Available on Tool, provided by the Tool$Typings extension

The diagram asks each tool to update any adornments the tool might use for a given part. If the tool uses its own tool handles, this should display them or hide them as appropriate. Typically this should only show them if the part is selected.

Operators

operator ==(Object other) bool
The equality operator.
inherited