An implementation of IPositionHandler that shows the various label position candidates and lets the user move a label to one of those candidate positions.
Gets or sets a property that determines whether the handler should refuse to move the label when there are other, possibly conflicting items being moved at the same time.
To avoid difficult-to-follow and understand behavior when both items in a graph and labels are moved at the same time when they are part of a multi-selection, this property determines whether labels should only be moved when they are moved alone or as part of a multi-selection that consists of labels only. When set to true, and this instance is used in a compositeIInputModeContext within a MoveInputMode that has affectedItems other than just labels, it will not move the label and basically act as a void implementation that does not influence the output.
Gets or sets the recognizer that determines whether the user wants to manually enable the usage of ILabelModelParameterFinder to specify the position for new label.
The default detects the current platform and delegates either to META_IS_DOWN (macOS) or CTRL_IS_DOWN (other platforms).
Called by clients to indicate that the dragging has been canceled by the user.
This method may be called after the initial initializeDrag and zero or more invocations of handleMove. Implementations should reset the position of the items they modify to their initial state. Alternatively to this method the dragFinished method might be called.
Called by clients to indicate that the repositioning has just been finished.
This method may be called after the initial initializeDrag and zero or more invocations of handleMove. Alternatively to this method the cancelDrag method might be called.
The coordinates in the world coordinate system that the client wants the handle to be at. Depending on the implementation the location may or may not be modified to reflect the new value. This is the same value as delivered in the last invocation of handleMove.
Called by clients to indicate that the element has been dragged and its position should be updated.
This method may be called more than once after an initial initializeDrag and the final call will be followed by either one dragFinished or one cancelDrag call.
The coordinates in the world coordinate system that the client wants the handle to be at. Depending on the implementation, the location may or may not be modified to reflect the new value.
When preventConflictingMixedMoves is enabled, this predicate will be called when the MoveInputMode from the IInputModeContext has drag-started. This implementation checks whether the label is not using FreeLabelModel and the affectedItems contains elements that the position of this label might depend upon. E.g. if the owner is also moved interactively, the label will not be moved along explicitly, but only implicitly through its owner.