C

NodeReshapeHandlerHandle

The default IHandle implementation for nodes that uses IReshapeHandler for the actual reshaping.

Remarks

In addition to the ReshapeHandlerHandle this implementation supports snapping if the node provides an INodeReshapeSnapResultProvider in its lookup and an active GraphSnapContext is found.

Furthermore orthogonal edges attached to the node are kept orthogonal during the reshape gesture if an active OrthogonalEdgeEditingContext is found.

Examples

Provider with custom settings for lower-right handle
class MyNodeReshapeHandleProvider extends NodeReshapeHandleProvider {
  constructor(node: INode, reshapeHandler: IReshapeHandler) {
    super(node, reshapeHandler, HandlePositions.CORNERS)
  }

  getHandle(
    inputModeContext: IInputModeContext,
    position: HandlePositions,
  ): IHandle {
    const handle = new NodeReshapeHandlerHandle(
      this.node,
      this.reshapeHandler,
      position,
    )
    if (position === HandlePositions.BOTTOM_RIGHT) {
      // bottom-right handle should always keep aspect ratio
      handle.reshapePolicy = ReshapePolicy.PROJECTION
      handle.ratioReshapeRecognizer = EventRecognizers.ALWAYS
    }
    return handle
  }
}

Members

Show:

Constructors

Default constructor that creates a handle for the given position to reshape the node using the given reshapeHandler.

Parameters

node: INode
The node to reshape with this handle.
reshapeHandler: IReshapeHandler
The reshapeable to write the changes to.
position: HandlePositions
The position of the handle.

Properties

Gets or sets the event recognizer that determines if the center of the reshapeable is kept during the reshape gesture.
The default detects the current platform and delegates either to META_IS_DOWN (macOS) or CTRL_IS_DOWN (other platforms).
final

Examples

Always keeping the center of the reshapeable
// always keep the center of the node
handle.centerReshapeRecognizer = EventRecognizers.ALWAYS

See Also

API
ratioReshapeRecognizer
Gets or sets the cursor to display when the mouse hovers over or drags this handle.
conversionfinal
Gets a view of the center of the handle.
The point describes the current world coordinate of the element that can be modified by this handle.
readonlyfinal
Gets or sets the maximal bounds this reshapeable may fill.
The value is stored by reference. The default is INFINITE, which does not restrict the area at all.
conversionfinal
Gets or sets the maximum size allowed for the reshapeable.
The value is stored by reference. If no explicit value is set, the sizeConstraintProvider is queried for a maximum size. If sizeConstraintProvider is not set as well, INFINITE is returned.
conversion
Gets or sets the minimum enclosed area that needs to be encompassed by this reshapeable.
The value is stored by reference. If no explicit value is set, the sizeConstraintProvider is queried for a minimum enclosed area. If sizeConstraintProvider is not set as well, EMPTY is returned, which does not restrict the area at all.
conversion
Gets or sets the minimum size allowed for the reshapeable.
The value is stored by reference. If no explicit value is set, the sizeConstraintProvider is queried for a minimum size. If sizeConstraintProvider is not set as well, ZERO is returned.
conversion
Gets the node to reshape with this handle.
readonlyfinal
Gets the position of the handle.
readonlyfinal
Gets or sets the event recognizer that determines if the width/height ratio of the reshapeable is kept during the reshape gesture.
The default value is null and if no value is set, handleMove instead tries to find the HandleInputMode that manages this handle and calls its isDirectionalConstrained method.
final

Examples

Always keep the aspect ratio of the reshapeable
// always keep the aspect ratio
handle.ratioReshapeRecognizer = EventRecognizers.ALWAYS

See Also

API
centerReshapeRecognizer
Gets the IReshapeHandler instance to write the changes to.
Gets or sets the policy that determines how the mouse location is interpreted when the reshape gesture shall keep the aspect ratio.

The ratioReshapeRecognizer is used to determine whether the aspect ratio shall be kept at all.

The default value is PROJECTION.

conversionfinal

Examples

Extend the reshapeable bounds to the mouse location
// when keeping the aspect ratio extend the node bounds to the mouse location
handle.reshapePolicy = ReshapePolicy.MAXIMUM
Gets or sets an INodeSizeConstraintProvider that is queried in minimumSize, maximumSize and minimumEnclosedArea if no explicit value was set.
final
Gets or sets the optional tag object associated with the handle.
Gets or sets the type of the handle that can be used by the rendering engine to render types differently.
conversionfinal

Methods

Delegates the cancel request to the IReshapeHandler.

Parameters

inputModeContext: IInputModeContext
The context to retrieve information about the drag from.
originalLocation: Point
The value of the coordinate of the location property at the time of initializeDrag.
Delegates the finish request to the IReshapeHandler using the last bounds calculated by handleMove.

Parameters

inputModeContext: IInputModeContext
The context to retrieve information about the drag from.
originalLocation: Point
The value of the location property at the time of initializeDrag.
newLocation: Point
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.
Ignore clicks.

Parameters

evt: ClickEventArgs
Arguments describing the click.
Translates the move request into new bounds and delegates applying the new bounds to the handleReshape method.

Parameters

inputModeContext: IInputModeContext
The context to retrieve information about the drag from.
originalLocation: Point
The value of the location property at the time of initializeDrag.
newLocation: Point
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.
Called by clients to indicate that the element is going to be dragged.
This call will be followed by one or more calls to handleMove, and a final dragFinished or cancelDrag.

Parameters

inputModeContext: IInputModeContext
The context to retrieve information about the drag from.
Returns if the reshapeHandler should keep the aspect ratio.

If reshapePolicy is NONE, this method will return false. Otherwise, if ratioReshapeRecognizer is set, it is queried with the lastInputEvent.

If ratioReshapeRecognizer is null but the inputMode is a HandleInputMode, its isDirectionalConstrained method is called.

protectedfinal

Parameters

context: IInputModeContext
The context to retrieve information about the drag from.

Return Value

boolean
Whether the reshapeHandler should keep the aspect ratio.