C

DelegatingPortStyle
abstract

A foundational abstract implementation of IPortStyle that delegates its behavior to pre-configured style instances.

Remarks

This class supports three primary use cases:

  • Wrapping another style with a customized API. This is ideal for providing a simpler or domain-specific API by mapping properties from a subclass to the corresponding values of the delegated style. Subclasses typically return the preconfigured instance from getStyle and modify it in the constructor or through custom property setters.
  • Dynamically reconfiguring a style based on the target port. In this scenario, the implementation keeps one or more style instances as fields and switches between them in getStyle, depending on attributes of the port, such as its tag property. This approach may also involve dynamically reconfiguring the style instance for specific port instances. When appropriate, implementations may override clone to simply return this.
  • Replacing one part of the implementation of another style. Instead of subclassing another style, the implementation delegates to all but a subset of the various aspects to an existing implementation and provides its own implementation, otherwise, via overriding specific methods of the base PortStyleBase<TVisual> class.

Subclasses must implement getStyle and should ensure that it executes quickly and without allocations.

See Also

Developer's Guide

API

getStyle

Members

Show:

Constructors

Creates a new instance of this style.

Properties

Gets the renderer implementation for this instance.
The private implementation will delegate all API calls back to this instance.
readonlyfinal

Methods

Returns a memberwise clone.
Note that stateless subclasses that implement the flyweight pattern and do not carry any state can override this method and return this, instead, as the base implementation is completely stateless.

Return Value

Object
A clone of this instance.
Creates the visual with the style from getStyle and the port from getPort.
protected

Parameters

context: IRenderContext
The render context.
port: IPort
The port to which this style instance is assigned.

Return Value

Visual
The visual as required by the createVisual interface.

See Also

API
updateVisual
Gets the bounds with the style from getStyle and the port from getPort.
protected

Parameters

context: ICanvasContext
The canvas context.
port: IPort
The port to which this style instance is assigned.

Return Value

Rect
The visual bounds of the visual representation.
Returns the port used for rendering.
Overriding this method allows for advanced customizations such as using a SimplePort with modified locationParameter and use it for rendering while preserving the original port's structure.
protected

Parameters

port: IPort
The original port to be rendered.

Return Value

IPort
The port used for rendering. By default, this method returns the provided port. Subclasses can override this method to return a different port, such as a SimplePort, to customize rendering behavior.
Provides the core implementation of this style, returning the instance to delegate rendering logic.
This method should ideally return the same instance for identical items to ensure optimal performance. It should avoid performing expensive operations as it will be invoked frequently during rendering and other operations like hit-testing. Ideally, it should be implemented allocation-free.
protectedabstract

Parameters

port: IPort
The port for which the style instance should be returned and applied.

Return Value

IPortStyle
The IPortStyle instance responsible for handling all related requests.
Determines with the style from getStyle whether the visualization of the port from getPort is hit at the given location.
protected

Parameters

context: IInputModeContext
The input mode context.
location: Point
The point to test.
port: IPort
The port to which this style instance is assigned.

Return Value

boolean
true if the specified port is hit; false otherwise.
Determines with the style from getStyle whether the visualization of the port from getPort is included in the marquee selection.
protected

Parameters

context: IInputModeContext
The input mode context.
rectangle: Rect
The marquee selection box.
port: IPort
The port to which this style instance is assigned.

Return Value

boolean
true if the specified port is visible and selected by the marquee rectangle; false otherwise.
Determines with the style from getStyle whether the visualization of the port from getPort is included in the lasso selection.
protected

Parameters

context: IInputModeContext
The input mode context.
path: GeneralPath
The lasso selection path.
port: IPort
The port to which this style instance is assigned.

Return Value

boolean
true if the specified port is visible and selected by the lasso path; false otherwise.
Determines with the style from getStyle whether the visualization of the port from getPort is visible.
protected

Parameters

context: ICanvasContext
The canvas context.
rectangle: Rect
The clipping rectangle.
port: IPort
The port to which this style instance is assigned.

Return Value

boolean
true if the specified port is visible in the clipping rectangle; false otherwise.
Performs the lookup operation with the style from getStyle and the port from getPort.
protected

Parameters

port: IPort
The port to use for the context lookup.
type: Constructor
The type to query.

Return Value

any
An implementation of the type or null.
Updates the visual with the style from getStyle and the port from getPort.
protected

Parameters

context: IRenderContext
The render context.
oldVisual: Visual
The visual that has been created in the call to createVisual.
port: IPort
The port to which this style instance is assigned.

Return Value

Visual
The visual as required by the createVisual interface.

See Also

API
createVisual