- I
Remarks
This mode can be used in a viewer-centric application where there is no need to modify the IGraph but browsing of the graph should be convenient. This mode allows for clicking or tapping on items using mouse, touch, or stylus, displaying tool tips for items, showing a context menu, allowing for easy navigation and traversal, moving the view port, and optionally doing marquee selection. Also ItemHoverInputMode can be used to get notified of the elements that the mouse is hovering over.
Due to the viewer-centric nature of this input mode, collapsing and expanding groups is disabled per default. To enable this feature, set allowCollapseGroup and allowExpandGroup to true.
This input mode manages a set of specialized input modes, each handling a specific part of the interaction with the graph. The following list details those along with their default priorities. Lower priorities come earlier when handing events.
- waitInputMode (−1) – Disables this input mode when layouts or animations run.
- keyboardInputMode (0) – Handles commands and arbitrary keyboard shortcuts.
- clickInputMode (20) – Handles mouse and stylus clicks and double-clicks as well as touch taps and double-taps.
- lassoSelectionInputMode (150) – Allows dragging a lasso path to select items within it. Disabled by default.
- marqueeSelectionInputMode (160) – Allows dragging a rectangle to select items within it.
- moveViewportInputMode (190) – Allows panning the viewport.
- itemHoverInputMode (200) – Provides events to indicate that the mouse pointer hovers over an item.
- navigationInputMode (210) – Provides general navigation facilities, such as navigating from one item to another with the arrow keys.
- contextMenuInputMode (220) – Handles querying the context menu contents based on a location as well as preparing the menu for display.
- toolTipInputMode (400) – Handles tooltips.
Examples
GraphViewerInputMode can be installed by setting it as inputMode on the GraphComponent it handles.graphComponent.inputMode = new GraphViewerInputMode({
toolTipItems: GraphItemTypes.LABEL_OWNER,
clickableItems: GraphItemTypes.NODE,
focusableItems: GraphItemTypes.NODE,
selectableItems: GraphItemTypes.NONE,
marqueeSelectableItems: GraphItemTypes.NONE,
})See Also
Developer's Guide
Members
Constructors
Initializes a new instance of the GraphViewerInputMode class.
Parameters
Properties
trueExamples
mode.allowClipboardOperations = falseDefined in
GraphInputMode.allowClipboardOperationsGets a collection of commands that this input mode will handle.
Defined in
GraphInputMode.availableCommandsGets or sets which types of items should be reported through the item click events.
This also affects taps.
The default is ALL.
Examples
mode.clickableItems = GraphItemTypes.NODE | GraphItemTypes.EDGESee Also
Defined in
GraphInputMode.clickableItemsGets or sets a predicate that is queried to determine whether an item can be clicked.
See Also
Defined in
GraphInputMode.clickablePredicateGets or sets the order of the types of items that should be used to determine what item has been clicked or tapped.
Change this field to adjust which items will be selected if there are multiple items at a given location. The default order is the Z-Order but with a prioritization for elements behind labels. shouldSkipHitLabel.
Arrays that contain strings describing the name of GraphItemTypes are converted to an array of GraphItemTypes. For example:
['node', 'edge']
['NODE', 'EDGE']Examples
mode.clickHitTestOrder = [
GraphItemTypes.BEND,
GraphItemTypes.NODE | GraphItemTypes.EDGE,
GraphItemTypes.LABEL,
]See Also
Defined in
GraphInputMode.clickHitTestOrderGets or sets the ClickInputMode that is used by this instance to determine clicks.
Whenever the mode detects a click, this mode will use the IHitTester from the parentInputModeContext to determine the items being hit. If they match the clickableItems type, the item-clicked event will be triggered. If they are focusable, the item will be set as the current item.
Upon change, the onClickInputModeChanged method will be called.
By default, this input mode has a priority of 20.
Examples
mode.clickInputMode.enabled = falseSee Also
Defined in
GraphInputMode.clickInputModeGets or sets which types of items should be selectable by mouse clicks.
Examples
// Nodes, edges, and bends are selectable
mode.selectableItems =
GraphItemTypes.NODE | GraphItemTypes.EDGE | GraphItemTypes.BEND
// Only nodes and bends are selectable by marquee selection
mode.marqueeSelectableItems = GraphItemTypes.NODE | GraphItemTypes.BEND
// Only nodes and edges are selectable by click selection
mode.clickSelectableItems = GraphItemTypes.NODE | GraphItemTypes.EDGESee Also
Defined in
GraphInputMode.clickSelectableItemsGets or sets a predicate that is queried to determine whether an item should be selected when clicked with the primary mouse button.
See Also
Defined in
GraphInputMode.clickSelectablePredicateGets or sets the ContextMenuInputMode which handles context menus on a CanvasComponent.
Upon change, the onContextMenuInputModeChanged method will be called.
By default, this input mode has a priority of 220.
Examples
mode.contextMenuInputMode.enabled = false// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
mode.contextMenuItems = GraphItemTypes.NODE
mode.addEventListener('populate-item-context-menu', (evt) => {
// Get the node which is handled or null if the item is not a node
const node = evt.item
// Create the context menu items
if (node !== null) {
// Create a menu item to delete the node
// Show the menu
evt.contextMenu = [
{ label: 'Delete Item', action: () => graph.remove(node) },
]
}
})Defined in
GraphInputMode.contextMenuInputModeGets or sets the types of items a context menu should be queried for.
Examples
// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
mode.contextMenuItems = GraphItemTypes.NODE
mode.addEventListener('populate-item-context-menu', (evt) => {
// Get the node which is handled or null if the item is not a node
const node = evt.item
// Create the context menu items
if (node !== null) {
// Create a menu item to delete the node
// Show the menu
evt.contextMenu = [
{ label: 'Delete Item', action: () => graph.remove(node) },
]
}
})Defined in
GraphInputMode.contextMenuItemsGets the installed controller.
Defined in
MultiplexingInputMode.controllerGets or sets the event recognizer that determines if a click or tap should cycle through all the items that are currently under the mouse cursor.
If the recognizer determines that the user wanted to use the cyclic click selection behavior, the hitTester will be queried for the given item and previously reported items will be ignored. E.g. if multiple nodes are overlapping each other, clicking on them will report the first item for the first click, the second one for the second click and so on. If all elements have been reported previously, the first one is going to be reported again. If the order of the elements at the clicked location changes, the cyclic selection is restarted anew.
The default is ALT_IS_DOWN.
Property Value
Sample Graphs
Defined in
GraphInputMode.cyclicSelectionRecognizerGets or sets the cursor to use whenever no child mode prefers a different cursor.
nullSee Also
Developer's Guide
API
- adjustCursor
Defined in
MultiplexingInputMode.defaultCursorGets or sets the event recognizer that determines if a click or tap should select the item that is currently visible under the pointer cursor, without giving more important items higher priority.
If the recognizer determines that the user wanted to use the detail clicking behavior, the hitTester will be queried for the given item and the first item that is returned will be considered a hit. Otherwise, all hit items are examined and are prioritized by item type. E.g. by default clicking on a node will select the node, even if there is a node label which has been clicked at the same point. If detail selection is recognized, the label will be selected.
The default is SHIFT_IS_DOWN.
Property Value
Examples
mode.detailSelectionRecognizer = EventRecognizers.SHIFT_IS_DOWNSample Graphs
Defined in
GraphInputMode.detailSelectionRecognizerGets or sets a predicate that is queried to determine whether an item can be double clicked.
See Also
Defined in
GraphInputMode.doubleClickablePredicateGets or sets the order of the types of items that should be used to determine what item has been double-clicked or double-tapped.
Change this field to adjust which items will be considered when double-clicked if there are multiple items at a given location. The default order is
Arrays that contain strings describing the name of GraphItemTypes are converted to an array of GraphItemTypes. For example:
['node', 'edge']
['NODE', 'EDGE']Examples
mode.doubleClickHitTestOrder = [
GraphItemTypes.BEND,
GraphItemTypes.NODE | GraphItemTypes.EDGE,
GraphItemTypes.LABEL,
]See Also
Defined in
GraphInputMode.doubleClickHitTestOrderDefined in
MultiplexingInputMode.enabledThe value of this property will be delegated to the exclusive property of the controller.
If this mode is marked as exclusive and has the mutex, all other modes added to the same MultiplexingInputMode will be deactivated. Otherwise, it will always run concurrently with all other modes.
Defined in
MultiplexingInputMode.exclusiveGets or sets the items that can be given focus via the setCurrentItem method.
Examples
mode.focusableItems = GraphItemTypes.NODE | GraphItemTypes.EDGEDefined in
GraphInputMode.focusableItemsGets or sets a predicate that is queried to determine whether an item should be set to the current item.
See Also
Defined in
GraphInputMode.focusablePredicateGets the graph instance from the parentInputModeContext.
Gets the graph selection from the parentInputModeContext.
Defined in
GraphInputMode.graphSelectionGets or sets the hitTester property.
Defined in
GraphInputMode.hitTesterfalse the invisible elements are not selectable by mouse clicks or marquee selection since their hit testable always returns false.Property Value
true if void styles should be ignored for selection and focus; false otherwise. Default is true.Defined in
GraphInputMode.ignoreVoidStylesGets or sets the ItemHoverInputMode that is provided by this instance to detect when the cursor hovers over a graph item.
Note that initially the hoverItems property is set to NONE, which effectively disables the functionality of the mode initially. In order to get the mode to fire events, the property should be set to a corresponding value.
If the backing field has not yet been initialized upon first access, a new instance will be assigned. Upon change, onItemHoverInputModeChanged will be called.
By default, this input mode has a priority of 200.
Examples
mode.itemHoverInputMode.enabled = falsenull. One can also configure the item types which are reported:// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
// enable the ItemHoverInputMode and let it handle edges and nodes
mode.itemHoverInputMode.enabled = true
mode.itemHoverInputMode.hoverItems =
GraphItemTypes.EDGE | GraphItemTypes.NODE
// handle changes on the hovered items
mode.itemHoverInputMode.addEventListener(
'hovered-item-changed',
(evt) => {
const oldItem = evt.oldItem
// e.g. remove the highlight from oldItem here
const newItem = evt.item
// e.g. add a highlight to newItem here
},
)Defined in
GraphInputMode.itemHoverInputModeGets or sets the KeyboardInputMode associated with this instance.
0.Property Value
Examples
mode.keyboardInputMode.enabled = false// Execute the command if the Insert key is pressed
graphEditorInputMode.keyboardInputMode.addKeyBinding(
'Insert',
ModifierKeys.NONE,
() => {
graphEditorInputMode.createNode(
graphEditorInputMode.graphComponent!.viewport.center,
)
},
)Defined in
GraphInputMode.keyboardInputModeGets or sets the LassoSelectionInputMode which handles the selection of multiple elements by drawing a polygon around them.
Upon change, the onLassoSelectionInputModeChanged method will be called.
The lassoSelectionInputMode respects the selectableItems and the marqueeSelectableItems used by marqueeSelectablePredicate.
By default, this input mode has a priority of 150 and is disabled.
Defined in
GraphInputMode.lassoSelectionInputModeGets or sets which types of items should be selected during marquee selections or lasso selection.
Examples
// Nodes, edges, and bends are selectable
mode.selectableItems =
GraphItemTypes.NODE | GraphItemTypes.EDGE | GraphItemTypes.BEND
// Only nodes and bends are selectable by marquee selection
mode.marqueeSelectableItems = GraphItemTypes.NODE | GraphItemTypes.BEND
// Only nodes and edges are selectable by click selection
mode.clickSelectableItems = GraphItemTypes.NODE | GraphItemTypes.EDGESee Also
Defined in
GraphInputMode.marqueeSelectableItemsSee Also
Gets or sets the MarqueeSelectionInputMode which handles the selection of multiple elements by drawing a rectangle around them.
Upon change, the onMarqueeSelectionInputModeChanged method will be called.
The marqueeSelectionInputMode respects the selectableItems and the marqueeSelectableItems used by marqueeSelectablePredicate.
By default, this input mode has a priority of 160.
For GraphViewerInputMode, the default values of beginRecognizer and subtractSelectionRecognizer conflict, so in this case you will usually want to change one of these recognizers.
Examples
mode.marqueeSelectionInputMode.enabled = falseDefined in
GraphInputMode.marqueeSelectionInputModeGets or sets the MoveViewportInputMode associated with this instance.
Upon change, the onMoveViewportInputModeChanged method will be called.
By default, this input mode has a priority of 190.
Examples
mode.moveViewportInputMode.enabled = falseDefined in
GraphInputMode.moveViewportInputModeGets or sets the event recognizer that determines if a click or tap is deemed a multi-selection gesture.
If the multiSelectionRecognizer returns true for the current gesture, the element which is selected with that gesture will be added to the current selection. Otherwise, the selection will be cleared before adding the newly selected element.
The default detects the current system and delegates either to META_IS_DOWN (macOS) or CTRL_IS_DOWN (other systems).
Defined in
GraphInputMode.multiSelectionRecognizerGets the IInputMode that currently owns the mutex.
Property Value
null.Defined in
MultiplexingInputMode.mutexOwnerUpon change the onNavigationInputModeChanged method will be called.
By default, this input mode has a priority of 210.
Examples
mode.navigationInputMode.enabled = falseThe navigationInputMode supports e.g. opening and closing group nodes. These actions can be configured in details:
// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
// enable expanding and collapsing group nodes
mode.navigationInputMode.allowCollapseGroup = true
mode.navigationInputMode.allowExpandGroup = true
// do not fit the content after expand/collapse
mode.navigationInputMode.fitContentAfterGroupActions = false
// expand/collapse group nodes in a way that their
// top right corner stays at its current coordinates
mode.navigationInputMode.autoGroupNodeAlignmentPolicy =
NodeAlignmentPolicy.TOP_RIGHTIt also reports when groups are opened or collapsed interactively by raising the following events:
// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
mode.navigationInputMode.addEventListener('group-expanding', (evt) => {
const node = evt.item
// do something with the node before it will be expanded
})
mode.navigationInputMode.addEventListener('group-expanded', (evt) => {
const node = evt.item
// do something with the node after it has been expanded
})
mode.navigationInputMode.addEventListener('group-collapsing', () => {
/* same for collapse operations */
})
mode.navigationInputMode.addEventListener('group-collapsed', () => {
/* same for collapse operations */
})Defined in
GraphInputMode.navigationInputModeRetrieves the IInputModeContext this mode has been installed in.
null if this mode is currently not installed. Use createInputModeContext to obtain a context that has this IInputMode as the inputMode.Gets or sets a predicate that is queried to determine whether a context menu should be shown for an item.
See Also
Defined in
MultiplexingInputMode.priorityGets or sets a predicate that is queried to determine whether a tool tip should be queried for an item.
See Also
Defined in
GraphInputMode.queryToolTipPredicateGets or sets which types of items should be selectable at all.
Examples
// Nodes, edges, and bends are selectable
mode.selectableItems =
GraphItemTypes.NODE | GraphItemTypes.EDGE | GraphItemTypes.BEND
// Only nodes and bends are selectable by marquee selection
mode.marqueeSelectableItems = GraphItemTypes.NODE | GraphItemTypes.BEND
// Only nodes and edges are selectable by click selection
mode.clickSelectableItems = GraphItemTypes.NODE | GraphItemTypes.EDGESee Also
API
- setSelected
Defined in
GraphInputMode.selectableItemsGets or sets a predicate that is queried to determine whether a given IModelItem is selectable.
Examples
mode.selectablePredicate = (item: IModelItem): boolean =>
item.tag === 'I am selectable'Defined in
GraphInputMode.selectablePredicateGets or sets a value that specifies whether during hit testing, labels should be skipped at all.
Since typically users don't want to click a label when it covers a node or edge, but they typically want to click the label, but otherwise the Z-order should be considered, this setting will determine whether shouldSkipHitLabel should be queried during hit test enumeration if labels are hit before other elements.
This is only applicable when the respective clickHitTestOrder or doubleClickHitTestOrder is not explicit about the order.
This setting will influence the ILookup behavior of the IInputModeContext via childInputModeContextLookup so that the IHitTester interface swaps the order of the hits to report skipped labels only after the items behind the labels.
By default, this feature is enabled.
Defined in
GraphInputMode.skipHitLabelsGets or sets the toolTipInputMode which is responsible for displaying Tooltips on a CanvasComponent.
Upon change, the onToolTipInputModeChanged method will be called.
By default, this input mode has a priority of 400.
Examples
mode.toolTipInputMode.enabled = false// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
mode.toolTipItems = GraphItemTypes.NODE
// register a listener
mode.addEventListener('query-item-tool-tip', (evt) => {
if (evt.handled) {
// A tooltip has already been assigned -> nothing to do.
return
}
// We can safely cast here because we set ToolTipItems to only Node.
const hitNode = evt.item as INode
if (hitNode.labels.size > 0) {
// Show the text of the first label as tooltip.
evt.toolTip = hitNode.labels.get(0).text
// Indicate that the tooltip content has been set.
evt.handled = true
}
})Defined in
GraphInputMode.toolTipInputModeGets or sets the types of the items that should be queried for a tooltip.
Examples
// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
mode.toolTipItems = GraphItemTypes.NODE
// register a listener
mode.addEventListener('query-item-tool-tip', (evt) => {
if (evt.handled) {
// A tooltip has already been assigned -> nothing to do.
return
}
// We can safely cast here because we set ToolTipItems to only Node.
const hitNode = evt.item as INode
if (hitNode.labels.size > 0) {
// Show the text of the first label as tooltip.
evt.toolTip = hitNode.labels.get(0).text
// Indicate that the tooltip content has been set.
evt.handled = true
}
})Defined in
GraphInputMode.toolTipItemsGets or sets the WaitInputMode that is provided by this instance for those who need to make use of it.
Upon change, the onWaitInputModeChanged method will be called.
By default, this input mode has a priority of -1.
Examples
mode.waitInputMode.enabled = falsegraphEditorInputMode.waiting = true
await longRunningAsyncProcess()
graphEditorInputMode.waiting = falseSee Also
API
- waiting
Defined in
GraphInputMode.waitInputModeMethods
Adds the given mode.
mode.The input modes will be ordered according to their priority: Input modes with lower priority will be installed earlier.
Input modes will run exclusively if the exclusive property of their installed controller is set to true. Otherwise they cannot and will not be deactivated if another IInputMode acquires the mutex.
Parameters
- mode: IInputMode
- The input mode to add to this mode.
Throws
- Exception ({ name: 'ArgumentError' })
- If the same
modeis already added to this instance.
Examples
const multiplexingInputMode = new MultiplexingInputMode()
const waitInputMode = new WaitInputMode()
waitInputMode.priority = 0
multiplexingInputMode.add(waitInputMode)
const moveInputMode = new MoveViewportInputMode()
moveInputMode.priority = 5
multiplexingInputMode.add(moveInputMode)
graphComponent.inputMode = multiplexingInputModeconst mode = new GraphEditorInputMode()
const customInputMode = new CustomInputMode()
customInputMode.priority = 10
mode.add(customInputMode)Defined in
MultiplexingInputMode.addAdjusts the cursor of the CanvasComponent according to the current input mutex owner or the first mode in the list whose ConcurrencyController returns a non-null preferredCursor.
Defined in
MultiplexingInputMode.adjustCursorDefined in
MultiplexingInputMode.cancelCalled by the child context's lookup method.
Parameters
- type: Constructor
- The type argument passed to lookup.
Return Value
- any
- The result of the lookup query, or
null.
Clears the selection on the current graphSelection.
Defined in
GraphInputMode.clearSelectionActually performs the click or tap on the given item.
Parameters
- item: IModelItem
- The item that has been clicked.
- evt: ClickEventArgs
- The original event arguments for the click. Setting its handled property to
truewill indicate that the click was handled. By default, this happens when the clicked item is either selected or focused.
Defined in
GraphInputMode.clickClears the selection on click if the click is not recognized by multiSelectionRecognizer.
This method is only called if no item has been hit and at least one item is currently selected.
This will use the clearSelection method to deselect all items.
Parameters
- context: IInputModeContext
- The context where the click appeared.
Return Value
- boolean
- Whether the selection has been cleared by this method.
Defined in
GraphInputMode.clickClearSelectionYields an IInputModeContext for the child modes of this mode.
Return Value
- IInputModeContext
- A new instance that delegates to the parent's context.
Helper method that yields a suitably configured InputModeEventArgs for this input mode.
Parameters
- context: IInputModeContext
An input mode context that is available in the InputModeEventArgs.
Can be
nullin which case a new context for this instance is created automatically.
Return Value
- InputModeEventArgs
- An input mode event argument that is configured for this instance.
Actually performs a double-tap on the given item.
Parameters
- item: IModelItem
- The item that has been double-clicked.
- evt: ClickEventArgs
- The original event arguments for the click. Setting its handled property to
truewill indicate that the double-click was handled and events on other items in the same location are no longer raised.
Defined in
GraphInputMode.doubleClickUsed as a callback to find the items hit underneath a certain point.
Parameters
- location: Point
- The location to test.
- tests: GraphItemTypes[]
- An array of GraphItemTypes values that encode for which model items the hit test should be performed for prioritizing. Arrays that contain strings describing the name of GraphItemTypes are converted to an array of GraphItemTypes. For example:
['node', 'edge'] ['NODE', 'EDGE'] - filter?: function(IModelItem): boolean
- The predicate that can be used to filter the results. May be
null.
Return Value
- IEnumerable<IModelItem>
- An enumerable over the items that have been found for the location.
Examples
function HandleItemAtLocation(
context: IInputModeContext,
location: Point,
): void {
const graphEditorInputMode = context.lookup(
GraphEditorInputMode,
) as GraphEditorInputMode
const graphItem = graphEditorInputMode
.findItems(location, [GraphItemTypes.NODE | GraphItemTypes.EDGE])
.at(0)
if (graphItem instanceof INode) {
// ... handle node
} else if (graphItem instanceof IEdge) {
// ... handle edge
}
}Defined in
GraphInputMode.findItemsUsed as a callback to find the items hit underneath a certain point.
Parameters
- context: IInputModeContext
- The context to use for the isHit callback.
- location: Point
- The location to test.
- tests: GraphItemTypes[]
- An array of GraphItemTypes values that encode for which model items the hit test should be performed for prioritizing. Arrays that contain strings describing the name of GraphItemTypes are converted to an array of GraphItemTypes. For example:
['node', 'edge'] ['NODE', 'EDGE'] - filter?: function(IModelItem): boolean
- The predicate that can be used to filter the results. May be
null.
Return Value
- IEnumerable<IModelItem>
- An enumerable over the items that have been found for the location.
Examples
function HandleItemAtLocation(
context: IInputModeContext,
location: Point,
): void {
const graphEditorInputMode = context.lookup(
GraphEditorInputMode,
) as GraphEditorInputMode
const graphItem = graphEditorInputMode
.findItems(location, [GraphItemTypes.NODE | GraphItemTypes.EDGE])
.at(0)
if (graphItem instanceof INode) {
// ... handle node
} else if (graphItem instanceof IEdge) {
// ... handle edge
}
}Defined in
GraphInputMode.findItemsReturns a list of all modes managed by this instance sorted by their priority.
Return Value
- IList<IInputMode>
- A list of the modes.
Defined in
MultiplexingInputMode.getSortedModestrue.Parameters
- context: IInputModeContext
- The context for the click.
- item: IModelItem
- The item that has been clicked.
- location: Point
- The click location.
Return Value
- boolean
- Whether the action has been invoked and handling should be stopped.
See Also
API
- IClickListener, click
Defined in
GraphInputMode.handleClickListenerThis method should not be invoked by subclasses. This will be done automatically upon first installation of this mode.
This code will be executed only once per instance. The parentInputModeContext property will be null when this code is executed. This method should not be used to install this mode into a specific canvas. Subclasses should always call base.Initialize() first.
See Also
API
- install
Defined in
MultiplexingInputMode.initializeInstalls this mode into the given context that is provided by the canvas.
In general a mode can only be installed into a single canvas at all times.
This method is called to initialize this instance. Implement this method to register the corresponding event handlers for the various input events this mode will listen to.
When this instance gets uninstalled from the context the same context instance will be passed to it.
Implementations may hold a reference to the context instance and use it while installed.
Parameters
- context: IInputModeContext
- The context that this instance shall be installed into. The same instance will be passed to this instance during uninstall. A reference to the context may be kept and queried while the mode is installed.
- controller: ConcurrencyController
- The ConcurrencyController for this mode.
Defined in
GraphInputMode.installInvalidates the canvas this mode is currently installed in.
Defined in
MultiplexingInputMode.invalidatePerforms lasso-selection with the given path.
Parameters
- lassoPath: GeneralPath
- The lasso selection path.
- selectionPolicy?: SelectionPolicy
- The policy to use for changing the selection of the elements.
Defined in
GraphInputMode.lassoSelectPerforms marquee selection with the given rectangle.
Parameters
- marqueeRectangle: Rect
- The selection rectangle.
- selectionPolicy?: SelectionPolicy
- The policy to use for changing the selection of the elements.
Defined in
GraphInputMode.marqueeSelectRaises the canvas-clicked event.
true.Parameters
- evt: ClickEventArgs
- The ClickEventArgs instance that contains the information about the click.
Defined in
GraphInputMode.onCanvasClickedCalled when the clickInputMode property value changes and after initialization of the property.
Parameters
- oldMode: ClickInputMode
- the old value, which may be
nullthe first time - newMode: ClickInputMode
- the new value
Defined in
GraphInputMode.onClickInputModeChangednull and releases the mutex if the mutex is currently owned by this instance. Also, all concurrent child modes will be disabled.onContextMenuInputModeChanged
(oldMode: ContextMenuInputMode, newMode: ContextMenuInputMode)protectedCalled when the ContextMenuInputMode property value changes and after initialization of the property.
onContextMenuInputModeChanged
(oldMode: ContextMenuInputMode, newMode: ContextMenuInputMode)Parameters
- oldMode: ContextMenuInputMode
- the old value, which may be
nullthe first time - newMode: ContextMenuInputMode
- the new value
Raises the item-clicked event.
true.Parameters
- evt: ItemClickedEventArgs<IModelItem>
- The ItemClickedEventArgs<T> instance that contains the item that has been clicked.
Defined in
GraphInputMode.onItemClickedRaises the item-double-clicked event.
true.Parameters
- evt: ItemClickedEventArgs<IModelItem>
- The ItemClickedEventArgs<T> instance that contains the item that has been double-clicked.
Defined in
GraphInputMode.onItemDoubleClickedCalled when the itemHoverInputMode property value changes and after initialization of the property.
Parameters
- oldMode: ItemHoverInputMode
- the old value, which may be
nullthe first time - newMode: ItemHoverInputMode
- the new value
Raises the item-left-clicked event.
true.Parameters
- evt: ItemClickedEventArgs<IModelItem>
- The ItemClickedEventArgs<T> instance that contains the item that has been clicked.
Defined in
GraphInputMode.onItemLeftClickedRaises the item-left-double-clicked event.
true.Parameters
- evt: ItemClickedEventArgs<IModelItem>
- The ItemClickedEventArgs<T> instance that contains the item that has been double-clicked.
Defined in
GraphInputMode.onItemLeftDoubleClickedRaises the item-right-clicked event.
true.Parameters
- evt: ItemClickedEventArgs<IModelItem>
- The ItemClickedEventArgs<T> instance that contains the item that has been clicked.
Defined in
GraphInputMode.onItemRightClickedRaises the item-right-double-clicked event.
true.Parameters
- evt: ItemClickedEventArgs<IModelItem>
- The ItemClickedEventArgs<T> instance that contains the item that has been double clicked.
Defined in
GraphInputMode.onItemRightDoubleClickedCalled when the keyboardInputMode changes.
Parameters
- oldMode: KeyboardInputMode
- The old keyboardInputMode.
- newMode: KeyboardInputMode
- The new keyboardInputMode.
Parameters
- context: IInputModeContext
- The input mode context.
- lassoPath: GeneralPath
- The lasso selection path.
- selectionPolicy: SelectionPolicy
- The policy to use for changing the selection of the elements.
Defined in
GraphInputMode.onLassoSelectonLassoSelectionInputModeChanged
(oldMode: LassoSelectionInputMode, newMode: LassoSelectionInputMode)protectedCalled when the lassoSelectionInputMode property value changes and after initialization of the property.
onLassoSelectionInputModeChanged
(oldMode: LassoSelectionInputMode, newMode: LassoSelectionInputMode)Parameters
- oldMode: LassoSelectionInputMode
- the old value, which may be
nullthe first time - newMode: LassoSelectionInputMode
- the new value
Parameters
- context: IInputModeContext
- The input mode context.
- marqueeRectangle: Rect
- The selection rectangle.
- selectionPolicy: SelectionPolicy
- The policy for changing the selection.
Defined in
GraphInputMode.onMarqueeSelectonMarqueeSelectionInputModeChanged
(oldMode: MarqueeSelectionInputMode, newMode: MarqueeSelectionInputMode)protectedCalled when the marqueeSelectionInputMode property value changes and after initialization of the property.
onMarqueeSelectionInputModeChanged
(oldMode: MarqueeSelectionInputMode, newMode: MarqueeSelectionInputMode)Parameters
- oldMode: MarqueeSelectionInputMode
- the old value, which may be
nullthe first time - newMode: MarqueeSelectionInputMode
- the new value
onMoveViewportInputModeChanged
(oldMode: MoveViewportInputMode, newMode: MoveViewportInputMode)protectedCalled when the moveViewportInputMode property value changes and after initialization of the property.
onMoveViewportInputModeChanged
(oldMode: MoveViewportInputMode, newMode: MoveViewportInputMode)Parameters
- oldMode: MoveViewportInputMode
- the old value, which may be
nullthe first time - newMode: MoveViewportInputMode
- the new value
Raises the multi-selection-finished event.
Parameters
- evt: SelectionEventArgs<IModelItem>
- The SelectionEventArgs<IModelItem> that provides the selection.
Defined in
GraphInputMode.onMultiSelectionFinishedRaises the multi-selection-started event.
Parameters
- evt: SelectionEventArgs<IModelItem>
- The SelectionEventArgs<IModelItem> that provides the selection.
Defined in
GraphInputMode.onMultiSelectionStartedParameters
- oldMode: NavigationInputMode
- the old value, which may be
nullthe first time - newMode: NavigationInputMode
- the new value
Raises the populate-item-context-menu event.
Parameters
- evt: PopulateItemContextMenuEventArgs<IModelItem>
- The PopulateItemContextMenuEventArgs<TModelItem> instance containing the event data.
Defined in
GraphInputMode.onPopulateItemContextMenuRaises the query-item-tool-tip event.
Parameters
- evt: QueryItemToolTipEventArgs<IModelItem>
- The QueryItemToolTipEventArgs<TModelItem> instance containing the event data.
Defined in
GraphInputMode.onQueryItemToolTipCalled when the toolTipInputMode property value changes and after initialization of the property.
Parameters
- oldMode: ToolTipInputMode
- the old value, which may be
nullthe first time - newMode: ToolTipInputMode
- the new value
Defined in
GraphInputMode.onToolTipInputModeChangedCalled when the waitInputMode property value changes and after initialization of the property.
Parameters
- oldMode: WaitInputMode
- the old value, which may be
nullthe first time - newMode: WaitInputMode
- the new value
Defined in
GraphInputMode.onWaitInputModeChangedRemoves the given mode from this compound mode.
See Also
Defined in
GraphInputMode.selectAllCalled by this instance to set the current item on the NavigationInputMode
Parameters
- item: IModelItem
- The item to set as the new "current" item.
Defined in
GraphInputMode.setCurrentItemUses the graphSelection to select the given item.
Parameters
- item: IModelItem
- The item to set the selection state on.
- selected: boolean
- The new selection state.
Defined in
GraphInputMode.setSelectedCallback function that is used during hit testing, when an ILabel was hit tested before another non-label underneath it was reported.
This method can be used to prioritize the hit testing order for items below labels, depending on the label.
This implementation returns false if skipHitLabels is false or if the context's inputMode is not a GraphInputMode or MoveInputMode.
Parameters
- context: IInputModeContext
- The context in which the hit testing is performed.
- hitLabel: ILabel
- The label that was hit before a non-label at the same location.
- location: Point
- The location the label was hit.
Return Value
- boolean
- Whether to first report the non-label during hit testing.
Defined in
GraphInputMode.shouldSkipHitLabelReturn Value
- boolean
trueif the editing process was successfully stopped, or if there was no edit in progress to stop; otherwise,false.
Defined in
MultiplexingInputMode.tryStopUninstalls this mode from the given context.
Parameters
- context: IInputModeContext
- The context to deregister from. This is the same instance that had been passed to install during installation.
Defined in
GraphInputMode.uninstallEvents
Occurs when the empty canvas area has been clicked or tapped.
true the event will not be propagated anymore.Properties of
ClickEventArgs- altKey: boolean
- Gets a value indicating whether the alt modifier was pressed at the time of the click.
- clickCount: number
- Gets the number of clicks associated with this event.
- context: IInputModeContext
- Gets the context for the current event.
- ctrlKey: boolean
- Gets a value indicating whether the control modifier was pressed at the time of the click.
- handled: booleanwritable
- Gets or sets a value indicating whether this instance has been handled.
- location: Point
- Gets the location of the click.
- metaKey: boolean
- Gets a value indicating whether the meta modifier was pressed at the time of the click.
- modifiers: ModifierKeys
- Gets the state of the modifiers at the time of the click.
- originalEventArgs: PointerEventArgs
- Gets the pointer event args that caused this event.
- pointerButtons: PointerButtons
- Gets the PointerButtons that have changed for this event.
- pointerType: PointerType
- Gets the type of the pointer that was the source of this event.
- shiftKey: boolean
- Gets a value indicating whether the shift modifier was pressed at the time of the click.
See Also
API
- item-clicked
Defined in
GraphInputMode.canvas-clickedOccurs when an item has been clicked or tapped.
If one of the event handlers sets the handled property to true the event will not be propagated anymore.
Button-specific and input type specific events (item-left-clicked and item-right-clicked) will be raised before this event. If one of those is marked handled this event will not be raised anymore.
Properties of
ItemClickedEventArgs<IModelItem>- altKey: boolean
- Gets a value indicating whether the alt modifier was pressed at the time of the click.
- clickCount: number
- Gets the number of clicks associated with this event.
- context: IInputModeContext
- Gets the context for the current event.
- ctrlKey: boolean
- Gets a value indicating whether the control modifier was pressed at the time of the click.
- handled: booleanwritable
- Gets or sets a value indicating whether this instance has been handled.
- item: T
- Gets the item that is the subject of the event.
- location: Point
- Gets the location of the click.
- metaKey: boolean
- Gets a value indicating whether the meta modifier was pressed at the time of the click.
- modifiers: ModifierKeys
- Gets the state of the modifiers at the time of the click.
- originalEventArgs: PointerEventArgs
- Gets the pointer event args that caused this event.
- pointerButtons: PointerButtons
- Gets the PointerButtons that have changed for this event.
- pointerType: PointerType
- Gets the type of the pointer that was the source of this event.
- shiftKey: boolean
- Gets a value indicating whether the shift modifier was pressed at the time of the click.
Examples
mode.addEventListener('item-clicked', (evt) => {
const node = evt.item
if (node !== null) {
doSomethingWithNode(node)
evt.handled = true
}
})See Also
Developer's Guide
API
- clickableItems, item-double-clicked, item-left-clicked, item-right-clicked
Defined in
GraphInputMode.item-clickedOccurs when an item has been double-clicked or double-tapped.
If one of the event handlers sets the handled property to true the event will not be propagated anymore.
Depending on the value of the clickReportingPolicy property of clickInputMode this event may be preceded by no, one, or two item-clicked events (as well as the corresponding button-specific event).
Button-specific and input-type specific events (item-left-double-clicked and item-right-double-clicked) will be raised before this event. If one of those is marked handled this event will not be raised anymore.
Properties of
ItemClickedEventArgs<IModelItem>- altKey: boolean
- Gets a value indicating whether the alt modifier was pressed at the time of the click.
- clickCount: number
- Gets the number of clicks associated with this event.
- context: IInputModeContext
- Gets the context for the current event.
- ctrlKey: boolean
- Gets a value indicating whether the control modifier was pressed at the time of the click.
- handled: booleanwritable
- Gets or sets a value indicating whether this instance has been handled.
- item: T
- Gets the item that is the subject of the event.
- location: Point
- Gets the location of the click.
- metaKey: boolean
- Gets a value indicating whether the meta modifier was pressed at the time of the click.
- modifiers: ModifierKeys
- Gets the state of the modifiers at the time of the click.
- originalEventArgs: PointerEventArgs
- Gets the pointer event args that caused this event.
- pointerButtons: PointerButtons
- Gets the PointerButtons that have changed for this event.
- pointerType: PointerType
- Gets the type of the pointer that was the source of this event.
- shiftKey: boolean
- Gets a value indicating whether the shift modifier was pressed at the time of the click.
Examples
mode.addEventListener('item-double-clicked', (evt) => {
const node = evt.item
if (node !== null) {
doSomethingWithNode(node)
evt.handled = true
}
})See Also
Developer's Guide
API
- item-clicked, clickableItems, item-left-double-clicked, item-right-double-clicked
Defined in
GraphInputMode.item-double-clickedOccurs when an item has been left-clicked.
This event will be raised before the item-clicked event. If one of the event handlers sets the handled property to true the event will not be propagated anymore. This also means that the item-clicked event will not be raised in that case.
The term "left click" refers to a click with the left mouse button or a stylus tap.
Properties of
ItemClickedEventArgs<IModelItem>- altKey: boolean
- Gets a value indicating whether the alt modifier was pressed at the time of the click.
- clickCount: number
- Gets the number of clicks associated with this event.
- context: IInputModeContext
- Gets the context for the current event.
- ctrlKey: boolean
- Gets a value indicating whether the control modifier was pressed at the time of the click.
- handled: booleanwritable
- Gets or sets a value indicating whether this instance has been handled.
- item: T
- Gets the item that is the subject of the event.
- location: Point
- Gets the location of the click.
- metaKey: boolean
- Gets a value indicating whether the meta modifier was pressed at the time of the click.
- modifiers: ModifierKeys
- Gets the state of the modifiers at the time of the click.
- originalEventArgs: PointerEventArgs
- Gets the pointer event args that caused this event.
- pointerButtons: PointerButtons
- Gets the PointerButtons that have changed for this event.
- pointerType: PointerType
- Gets the type of the pointer that was the source of this event.
- shiftKey: boolean
- Gets a value indicating whether the shift modifier was pressed at the time of the click.
Examples
mode.addEventListener('item-left-clicked', (evt) => {
const node = evt.item
if (node !== null) {
doSomethingWithNode(node)
evt.handled = true
}
})See Also
Defined in
GraphInputMode.item-left-clickedOccurs when an item has been left double-clicked.
true the event will not be propagated anymore. This also means that the item-double-clicked event will not be raised in that case.Properties of
ItemClickedEventArgs<IModelItem>- altKey: boolean
- Gets a value indicating whether the alt modifier was pressed at the time of the click.
- clickCount: number
- Gets the number of clicks associated with this event.
- context: IInputModeContext
- Gets the context for the current event.
- ctrlKey: boolean
- Gets a value indicating whether the control modifier was pressed at the time of the click.
- handled: booleanwritable
- Gets or sets a value indicating whether this instance has been handled.
- item: T
- Gets the item that is the subject of the event.
- location: Point
- Gets the location of the click.
- metaKey: boolean
- Gets a value indicating whether the meta modifier was pressed at the time of the click.
- modifiers: ModifierKeys
- Gets the state of the modifiers at the time of the click.
- originalEventArgs: PointerEventArgs
- Gets the pointer event args that caused this event.
- pointerButtons: PointerButtons
- Gets the PointerButtons that have changed for this event.
- pointerType: PointerType
- Gets the type of the pointer that was the source of this event.
- shiftKey: boolean
- Gets a value indicating whether the shift modifier was pressed at the time of the click.
Examples
mode.addEventListener('item-left-double-clicked', (evt) => {
const node = evt.item
if (node !== null) {
doSomethingWithNode(node)
evt.handled = true
}
})See Also
Defined in
GraphInputMode.item-left-double-clickedOccurs when an item has been right-clicked.
true the event will not be propagated anymore. This also means that the item-clicked event will not be raised in that case.Properties of
ItemClickedEventArgs<IModelItem>- altKey: boolean
- Gets a value indicating whether the alt modifier was pressed at the time of the click.
- clickCount: number
- Gets the number of clicks associated with this event.
- context: IInputModeContext
- Gets the context for the current event.
- ctrlKey: boolean
- Gets a value indicating whether the control modifier was pressed at the time of the click.
- handled: booleanwritable
- Gets or sets a value indicating whether this instance has been handled.
- item: T
- Gets the item that is the subject of the event.
- location: Point
- Gets the location of the click.
- metaKey: boolean
- Gets a value indicating whether the meta modifier was pressed at the time of the click.
- modifiers: ModifierKeys
- Gets the state of the modifiers at the time of the click.
- originalEventArgs: PointerEventArgs
- Gets the pointer event args that caused this event.
- pointerButtons: PointerButtons
- Gets the PointerButtons that have changed for this event.
- pointerType: PointerType
- Gets the type of the pointer that was the source of this event.
- shiftKey: boolean
- Gets a value indicating whether the shift modifier was pressed at the time of the click.
Examples
mode.addEventListener('item-right-clicked', (evt) => {
const node = evt.item
if (node !== null) {
doSomethingWithNode(node)
evt.handled = true
}
})See Also
Defined in
GraphInputMode.item-right-clickedOccurs when an item has been right double-clicked.
true the event will not be propagated anymore. This also means that the item-double-clicked event will not be raised in that case.Properties of
ItemClickedEventArgs<IModelItem>- altKey: boolean
- Gets a value indicating whether the alt modifier was pressed at the time of the click.
- clickCount: number
- Gets the number of clicks associated with this event.
- context: IInputModeContext
- Gets the context for the current event.
- ctrlKey: boolean
- Gets a value indicating whether the control modifier was pressed at the time of the click.
- handled: booleanwritable
- Gets or sets a value indicating whether this instance has been handled.
- item: T
- Gets the item that is the subject of the event.
- location: Point
- Gets the location of the click.
- metaKey: boolean
- Gets a value indicating whether the meta modifier was pressed at the time of the click.
- modifiers: ModifierKeys
- Gets the state of the modifiers at the time of the click.
- originalEventArgs: PointerEventArgs
- Gets the pointer event args that caused this event.
- pointerButtons: PointerButtons
- Gets the PointerButtons that have changed for this event.
- pointerType: PointerType
- Gets the type of the pointer that was the source of this event.
- shiftKey: boolean
- Gets a value indicating whether the shift modifier was pressed at the time of the click.
Examples
mode.addEventListener('item-right-double-clicked', (evt) => {
const node = evt.item
if (node !== null) {
doSomethingWithNode(node)
evt.handled = true
}
})See Also
Defined in
GraphInputMode.item-right-double-clickedOccurs when the copy operation finished successfully.
Properties of
ItemsEventArgs- context: IInputModeContext
- Gets the context for the current event.
- items: IListEnumerable<IModelItem>
- Gets the items that are the subjects for this event.
See Also
Developer's Guide
Defined in
GraphInputMode.items-copiedOccurs when a single or multi select operation has been finished.
Properties of
SelectionEventArgs<IModelItem>- context: IInputModeContext
- Gets the context for the current event.
- selection: IObservableCollection<T>
- Gets the selection these event arguments refer to.
Defined in
GraphInputMode.multi-selection-finishedOccurs when a single or multi select operation has been started.
Properties of
SelectionEventArgs<IModelItem>- context: IInputModeContext
- Gets the context for the current event.
- selection: IObservableCollection<T>
- Gets the selection these event arguments refer to.
Defined in
GraphInputMode.multi-selection-startedProperties of
PopulateItemContextMenuEventArgs<IModelItem>- context: IInputModeContext
- Gets the context for the current event.
- contextMenu: ContextMenuContentwritable
- Gets or sets the context menu content to use.
- handled: booleanwritable
- Gets or sets a value indicating whether this PopulateContextMenuEventArgs has been handled.
- item: TModelItem
- Gets the item for which the context menu is queried.
- queryLocation: Point
- Gets the queried location in world coordinates.
- showMenu: booleanwritable
- Gets or sets a value indicating whether to actually display the context menu.
Examples
// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
mode.contextMenuItems = GraphItemTypes.NODE
mode.addEventListener('populate-item-context-menu', (evt) => {
// Get the node which is handled or null if the item is not a node
const node = evt.item
// Create the context menu items
if (node !== null) {
// Create a menu item to delete the node
// Show the menu
evt.contextMenu = [
{ label: 'Delete Item', action: () => graph.remove(node) },
]
}
})Occurs when the mouse is hovering over an item to determine the tool tip to display.
Properties of
QueryItemToolTipEventArgs<IModelItem>- context: IInputModeContext
- Gets the context for the current event.
- handled: booleanwritable
- Gets or sets a value indicating whether this QueryToolTipEventArgs has been handled.
- item: TModelItem
- Gets the item for which the tool tip is queried.
- queryLocation: Point
- Gets the query location in world coordinates.
- toolTip: anywritable
- Gets or sets the tooltip content to use.
Examples
// mode is either an instance of GraphEditorInputMode or GraphViewerInputMode
mode.toolTipItems = GraphItemTypes.NODE
// register a listener
mode.addEventListener('query-item-tool-tip', (evt) => {
if (evt.handled) {
// A tooltip has already been assigned -> nothing to do.
return
}
// We can safely cast here because we set ToolTipItems to only Node.
const hitNode = evt.item as INode
if (hitNode.labels.size > 0) {
// Show the text of the first label as tooltip.
evt.toolTip = hitNode.labels.get(0).text
// Indicate that the tooltip content has been set.
evt.handled = true
}
})