C

MultiplexingInputMode

A composite IInputMode implementation that additionally can deal with exclusive instances.
ImplementsInheritance Hierarchy

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 = multiplexingInputMode

See Also

Developer's Guide

API

mutexOwner, add

Members

Show:

Constructors

Creates an instance with no initial modes.

Parameters

Properties

Gets the installed controller.
protectedreadonlyfinal
Gets or sets the cursor to use whenever no child mode prefers a different cursor.
The default is null
conversionfinal

See Also

Developer's Guide
API
adjustCursor
Gets or sets the enabled state of this input mode.
Clients can use this property to disable or reenable this instance. This will set the enabled property of the installed controller so a disabled instance should never try to acquire the input mutex.
Gets or sets a value indicating whether this mode will be the only one running when it has the mutex.

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.

final
Gets the IInputMode that currently owns the mutex.
readonlyfinal

Property Value

The IInputMode that currently owns the mutex or null.
Retrieves the IInputModeContext this mode has been installed in.
The value will be null if this mode is currently not installed. Use createInputModeContext to obtain a context that has this IInputMode as the inputMode.
protectedreadonlyfinal
Gets the priority of this input mode.
The priority will influence the order in which the modes will be installed into the CanvasComponent. The lower the priority value, the earlier it will be installed. If two modes are using the same priority value, the first one to be registered will be installed earlier.
final

Methods

Adds the given 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.

final

Parameters

mode: IInputMode
The input mode to add to this mode.

Throws

Exception ({ name: 'ArgumentError' })
If the same mode is 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 = multiplexingInputMode
const 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.
This method will set defaultCursor as the current cursor if no other preferredCursor has been specified.
Cancels all modes.
Called by the child context's lookup method.
protected

Parameters

type: Constructor
The type argument passed to lookup.

Return Value

any
The result of the lookup query, or null.

See Also

API
createInputModeContext
Yields an IInputModeContext for the child modes of this mode.
This method is called during installation to create a new context for the child modes and can be used by client code to obtain a suitable context object. The parentInputModeContext property is already set when this method is called. lookup calls for the created context will be resolved by this instance's childInputModeContextLookup method.

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.
protected

Parameters

context: IInputModeContext

An input mode context that is available in the InputModeEventArgs.

Can be null in 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.
final

Return Value

IList<IInputMode>
A list of the modes.
Performs one-time initialization of this instance.

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.

protected

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.
Invalidates the canvas this mode is currently installed in.
Called after the active property of the installed ConcurrencyController has been set to true.
This implementation reenables previously disabled concurrent child modes.
protected
Called after the active property of the installed ConcurrencyController has been set to false.
This implementation sets the preferredCursor property to null and releases the mutex if the mutex is currently owned by this instance. Also, all concurrent child modes will be disabled.
protected
Removes the given mode from this compound mode.
final

Parameters

mode: IInputMode
The mode to remove.
Called when the priority of an installed sub mode has changed.
This implementation uninstalls all sub modes and then re-installs them according to their new priorities.
protectedfinal
Tries to stop all modes.

Return Value

boolean
true if the editing process was successfully stopped, or if there was no edit in progress to stop; otherwise, false.
Uninstalls this mode from the given context.
This code should clean up all changes made to the canvas in the install method. After a mode has been uninstalled it can be installed again into the same or another canvas.

Parameters

context: IInputModeContext
The context to deregister from. This is the same instance that had been passed to install during installation.