- I
Remarks
Instances of this class can install and uninstall multiple IInputModes. Child input modes can be added using the add method. By providing priorities to the different modes, their installation order can be influenced. Input modes with lower priorities are handled earlier.
Child input modes can run exclusively while they hold the mutex. Other exclusive input modes are temporarily deactivated until the mutex is released. This can be controlled by setting the exclusive property on the controller. Input modes that disable the exclusive property will always run concurrently with all other input modes.
This class itself implements the IInputMode interface so that hierarchies of instances of this class can easily be built. This class will request the input mutex if one of its child modes requests the mutex. Also if the instance itself gets disabled, it will stop or cancel the current owner of the mutex.
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 = multiplexingInputModeSee Also
Developer's Guide
API
- mutexOwner, add
Members
Constructors
Properties
Gets the installed controller.
Gets or sets the cursor to use whenever no child mode prefers a different cursor.
The 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.
Gets the IInputMode that currently owns the mutex.
Retrieves 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.Implements
IInputMode.priorityMethods
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)Adjusts 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.
Implements
IInputMode.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.
See Also
Yields 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.
Returns a list of all modes managed by this instance sorted by their priority.
This 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
Installs 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.
Implements
IInputMode.installInvalidates the canvas this mode is currently installed in.
null and releases the mutex if the mutex is currently owned by this instance. Also, all concurrent child modes will be disabled.Overridden in
GraphInputMode.onConcurrencyControllerDeactivatedRemoves the given mode from this compound mode.
Return Value
- boolean
trueif the editing process was successfully stopped, or if there was no edit in progress to stop; otherwise,false.
Implements
IInputMode.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.