Interface IVisualPart<V extends Node>

Type Parameters:
V - The visual node used by this IVisualPart.
All Superinterfaces:
IActivatable, IAdaptable, IAdaptable.Bound<IViewer>, IDisposable
All Known Subinterfaces:
IBendableContentPart<V>, IContentPart<V>, IFeedbackPart<V>, IHandlePart<V>, IResizableContentPart<V>, IRootPart<V>, ITransformableContentPart<V>
All Known Implementing Classes:
AbstractContentPart, AbstractFeedbackPart, AbstractHandlePart, AbstractSegmentHandlePart, AbstractVisualPart, CircleSegmentHandlePart, FocusFeedbackPart, HoverFeedbackPart, LayeredRootPart, RectangleSegmentHandlePart, SelectionFeedbackPart, SelectionLinkFeedbackPart, SnappingFeedbackPart, SquareSegmentHandlePart

public interface IVisualPart<V extends Node> extends IAdaptable, IAdaptable.Bound<IViewer>, IActivatable, IDisposable
An IVisualPart plays the controller role in the model-view-controller architecture. While it does not have to be bound to a model (actually only IContentParts are bound to model elements, IFeedbackParts and IHandleParts do not refer to model elements), an IVisualPart always controls a visual.

Within an IViewer, IVisualPart are organized in a hierarchy via a [1:n] parent-children relationship (getParent(), getChildrenUnmodifiable()), which roots in an IRootPart. Furthermore a [n:m] anchorage-anchored relationship ( getAnchoragesUnmodifiable() , getAnchoredsUnmodifiable()) may be established between IVisualParts located at arbitrary places within the hierarchy.

An IVisualPart is adaptable (IAdaptable). Usually, IPolicys and IBehaviors are adapted to it (but arbitrary adapters may indeed be registered as needed). IPolicys are usually required in case the IVisualPart is directly involved in user interaction (e.g. the user clicks on its controlled visual). They may be accessed type-safe by IGestures or other IPolicys ( IPolicys may delegate to other IPolicys)). IBehaviors are used to react to changes of the attached model (in case of an IContentParts), the viewer models, or others sources (e.g. adapters of the IViewer or IDomain), thereby reacting to changes of the interactive state.

IVisualParts are IActivatable activatable, and an activation/deactivation of an IVisualPart will result in the activation/deactivation of all registered adapters (i.e. IPolicys and IBehaviors).

An IVisualPart is responsible for registering itself for its visualization at the IViewer.getVisualPartMap() when it obtains a link to the IViewer. Equally, an IVisualPart is responsible for unregistering itself for its visualization from the IViewer.getVisualPartMap() when it loses a link to the IViewer.

Noimplement:
This interface is not intended to be implemented by clients. Instead, AbstractVisualPart should be subclassed.