Package org.eclipse.gef.mvc.fx.parts

# Interface IVisualPart<V extends javafx.scene.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 javafx.scene.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 `IContentPart`s are bound to model elements, `IFeedbackPart`s and `IHandlePart`s 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 `IVisualPart`s located at arbitrary places within the hierarchy.

An `IVisualPart` is adaptable (`IAdaptable`). Usually, `IPolicy`s and `IBehavior`s are adapted to it (but arbitrary adapters may indeed be registered as needed). `IPolicy`s 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 `IGesture`s or other `IPolicy`s ( `IPolicy`s may delegate to other `IPolicy`s)). `IBehavior`s are used to react to changes of the attached model (in case of an `IContentPart`s), the viewer models, or others sources (e.g. adapters of the `IViewer` or `IDomain`), thereby reacting to changes of the interactive state.

`IVisualPart`s are `IActivatable` activatable, and an activation/deactivation of an `IVisualPart` will result in the activation/deactivation of all registered adapters (i.e. `IPolicy`s and `IBehavior`s).

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.

## Property Summary

Properties
Type
Property
Description
`ReadOnlySetMultimapProperty<IVisualPart<? extends javafx.scene.Node>,String>`
`anchoragesUnmodifiable`
Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.
`ReadOnlyMultisetProperty<IVisualPart<? extends javafx.scene.Node>>`
`anchoredsUnmodifiable`
Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.
`javafx.beans.property.ReadOnlyListProperty<IVisualPart<? extends javafx.scene.Node>>`
`childrenUnmodifiable`
Returns an unmodifiable read-only property containing the children of this `IVisualPart`.
`javafx.beans.property.ReadOnlyObjectProperty<IVisualPart<? extends javafx.scene.Node>>`
`parent`
Returns a read-only property that refers to the parent of this `IVisualPart`.
`javafx.beans.property.BooleanProperty`
`refreshVisual`
A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.

### Properties inherited from interface org.eclipse.gef.common.activate.IActivatable

`active`

### Properties inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`adapters`

### Properties inherited from interface org.eclipse.gef.common.adapt.IAdaptable.Bound

`adaptable`

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`IAdaptable.Bound<A extends IAdaptable>`

## Nested classes/interfaces inherited from interface org.eclipse.gef.common.adapt.IAdaptable.Bound

`IAdaptable.Bound.Impl<T extends IAdaptable>`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`ANCHORAGES_PROPERTY`
Name of the property storing this part's anchorages.
`static final String`
`ANCHOREDS_PROPERTY`
Name of the property storing this part's anchoreds.
`static final String`
`CHILDREN_PROPERTY`
Name of the property storing this part's children.
`static final String`
`PARENT_PROPERTY`
Name of the property storing this part's parent.
`static final String`
`REFRESH_VISUAL_PROPERTY`
Name of the property storing the refresh visual boolean property.

### Fields inherited from interface org.eclipse.gef.common.activate.IActivatable

`ACTIVE_PROPERTY`

### Fields inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`ADAPTERS_PROPERTY`

## Method Summary

Modifier and Type
Method
Description
`void`
`addChild(IVisualPart<? extends javafx.scene.Node> child)`
Adds the given child to the list of this part's children.
`void`
`addChild(IVisualPart<? extends javafx.scene.Node> child, int index)`
Adds the given child to the list of this part's children at the specified index.
`void`
`addChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children)`
Adds the given children to the list of this part's children.
`void`
`addChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children, int index)`
Adds the given children to the list of this part's children at the specified index.
`ReadOnlySetMultimapProperty<IVisualPart<? extends javafx.scene.Node>,String>`
`anchoragesUnmodifiableProperty()`
Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.
`ReadOnlyMultisetProperty<IVisualPart<? extends javafx.scene.Node>>`
`anchoredsUnmodifiableProperty()`
Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.
`void`
`attachAnchored(IVisualPart<? extends javafx.scene.Node> anchored)`
Used by an anchored `IVisualPart` to establish an anchorage-anchored relationship with this anchorage `IVisualPart`.
`void`
`attachToAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage)`
Attaches the given `IVisualPart` to the given anchorage under the "default" role.
`void`
`attachToAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage, String role)`
Attaches the given `IVisualPart` to the given anchorage under the given role.
`javafx.beans.property.ReadOnlyListProperty<IVisualPart<? extends javafx.scene.Node>>`
`childrenUnmodifiableProperty()`
Returns an unmodifiable read-only property containing the children of this `IVisualPart`.
`void`
`detachAnchored(IVisualPart<? extends javafx.scene.Node> anchored)`
Used by an anchored `IVisualPart` to unestablish an anchorage-anchored relationship with this anchorage `IVisualPart`.
`void`
`detachFromAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage)`
Detaches this `IVisualPart` from the given anchorage `IVisualPart` under the 'default' role.
`void`
`detachFromAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage, String role)`
Detaches this `IVisualPart` from the given anchorage `IVisualPart` under the given role.
`ObservableSetMultimap<IVisualPart<? extends javafx.scene.Node>,String>`
`getAnchoragesUnmodifiable()`
Returns an unmodifiable `ObservableSetMultimap` of this part's anchorages and their corresponding roles.
`ObservableMultiset<IVisualPart<? extends javafx.scene.Node>>`
`getAnchoredsUnmodifiable()`
Returns an unmodifiable `ObservableMultiset` of this part's anchoreds.
`Map<AdapterKey<? extends IBehavior>,IBehavior>`
`getBehaviors()`
Returns a `Map` of this part's behaviors and their corresponding `AdapterKey`s.
`javafx.collections.ObservableList<IVisualPart<? extends javafx.scene.Node>>`
`getChildrenUnmodifiable()`
Returns an unmodifiable `ObservableList` of this part's children.
`Map<AdapterKey<? extends org.eclipse.gef.mvc.fx.handlers.IHandler>,org.eclipse.gef.mvc.fx.handlers.IHandler>`
`getHandlers()`
Returns a `Map` of this part's handlers and their corresponding `AdapterKey`s.
`IVisualPart<? extends javafx.scene.Node>`
`getParent()`
Returns the parent of this part.
`Map<AdapterKey<? extends IPolicy>,IPolicy>`
`getPolicies()`
Returns a `Map` of this part's policies and their corresponding `AdapterKey`s.
`IRootPart<? extends javafx.scene.Node>`
`getRoot()`
Returns the `IRootPart`.
`default IViewer`
`getViewer()`
Returns the `IViewer` this `IVisualPart` is bound to.
`V`
`getVisual()`
Returns this part's visual.
`boolean`
`isRefreshVisual()`
Returns `true` if this part is allowed to refresh its visualization based on its content.
`javafx.beans.property.ReadOnlyObjectProperty<IVisualPart<? extends javafx.scene.Node>>`
`parentProperty()`
Returns a read-only property that refers to the parent of this `IVisualPart`.
`void`
`refreshVisual()`
Refreshes this part's visualization based on this part's content.
`javafx.beans.property.BooleanProperty`
`refreshVisualProperty()`
A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.
`void`
`removeChild(IVisualPart<? extends javafx.scene.Node> child)`
Removes the given `IVisualPart` from the list of this part's children.
`void`
`removeChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children)`
Removes the given `IVisualPart`s from the list of this part's children.
`void`
`reorderChild(IVisualPart<? extends javafx.scene.Node> child, int index)`
Swaps the given `IVisualPart` with the part at the given index position within this part's list of children.
`void`
`setParent(IVisualPart<? extends javafx.scene.Node> parent)`
Used by a parent `IVisualPart` to establish/unestablish a parent-child relationship with this child `IVisualPart`.
`void`
`setRefreshVisual(boolean refreshVisual)`
Allows to temporarily turn `refreshVisual()` into a no-op operation.

### Methods inherited from interface org.eclipse.gef.common.activate.IActivatable

`activate, activeProperty, deactivate, isActive`

### Methods inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`adaptersProperty, getAdapter, getAdapter, getAdapter, getAdapterKey, getAdapters, getAdapters, getAdapters, setAdapter, setAdapter, setAdapter, setAdapter, unsetAdapter`

### Methods inherited from interface org.eclipse.gef.common.adapt.IAdaptable.Bound

`adaptableProperty, getAdaptable, setAdaptable`

### Methods inherited from interface org.eclipse.gef.common.dispose.IDisposable

`dispose`

## Property Details

### anchoragesUnmodifiable

ReadOnlySetMultimapProperty<IVisualPart<? extends javafx.scene.Node>,String> anchoragesUnmodifiableProperty
Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.

See Also:
  - `getAnchoragesUnmodifiable()`

### anchoredsUnmodifiable

ReadOnlyMultisetProperty<IVisualPart<? extends javafx.scene.Node>> anchoredsUnmodifiableProperty
Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.

See Also:
  - `getAnchoredsUnmodifiable()`

### childrenUnmodifiable

javafx.beans.property.ReadOnlyListProperty<IVisualPart<? extends javafx.scene.Node>> childrenUnmodifiableProperty
Returns an unmodifiable read-only property containing the children of this `IVisualPart`.

See Also:
  - `getChildrenUnmodifiable()`

### parent

javafx.beans.property.ReadOnlyObjectProperty<IVisualPart<? extends javafx.scene.Node>> parentProperty
Returns a read-only property that refers to the parent of this `IVisualPart`.

See Also:
  - `getParent()`
  - `setParent(IVisualPart)`

### refreshVisual

javafx.beans.property.BooleanProperty refreshVisualProperty
A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.

See Also:
  - `isRefreshVisual()`
  - `setRefreshVisual(boolean)`

## Field Details

### PARENT_PROPERTY

static final String PARENT_PROPERTY
Name of the property storing this part's parent.

See Also:
  - Constant Field Values

### CHILDREN_PROPERTY

static final String CHILDREN_PROPERTY
Name of the property storing this part's children.

See Also:
  - Constant Field Values

### ANCHORAGES_PROPERTY

static final String ANCHORAGES_PROPERTY
Name of the property storing this part's anchorages.

See Also:
  - Constant Field Values

### ANCHOREDS_PROPERTY

static final String ANCHOREDS_PROPERTY
Name of the property storing this part's anchoreds.

See Also:
  - Constant Field Values

### REFRESH_VISUAL_PROPERTY

static final String REFRESH_VISUAL_PROPERTY
Name of the property storing the refresh visual boolean property.

See Also:
  - Constant Field Values

## Method Details

### addChild

void addChild(IVisualPart<? extends javafx.scene.Node> child)
Adds the given child to the list of this part's children.

Parameters:
  `child` - The `IVisualPart` which is added to the list of this part's children.

### addChild

void addChild(IVisualPart<? extends javafx.scene.Node> child, int index)
Adds the given child to the list of this part's children at the specified index.

Parameters:
  `child` - The `IVisualPart` which is added to the list of this part's children.
  `index` - The index at which the given `IVisualPart` is inserted into this part's children list.

### addChildren

void addChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children)
Adds the given children to the list of this part's children.

Parameters:
  `children` - The `IVisualPart`s which are added to the list of this part's children.

### addChildren

void addChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children, int index)
Adds the given children to the list of this part's children at the specified index.

Parameters:
  `children` - The `IVisualPart`s which are added to the list of this part's children.
  `index` - The index at which the given `IVisualPart`s are inserted into this part's children list.

### anchoragesUnmodifiableProperty

ReadOnlySetMultimapProperty<IVisualPart<? extends javafx.scene.Node>,String> anchoragesUnmodifiableProperty()
Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.

See Also:
  - `getAnchoragesUnmodifiable()`

### anchoredsUnmodifiableProperty

ReadOnlyMultisetProperty<IVisualPart<? extends javafx.scene.Node>> anchoredsUnmodifiableProperty()
Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.

See Also:
  - `getAnchoredsUnmodifiable()`

### attachAnchored

void attachAnchored(IVisualPart<? extends javafx.scene.Node> anchored)
Used by an anchored `IVisualPart` to establish an anchorage-anchored relationship with this anchorage `IVisualPart`.

Clients should never call this operation directly but instead add the anchorage to its anchored via the `attachToAnchorage(IVisualPart)` and `attachToAnchorage(IVisualPart, String)` operations, which will indirectly lead to a call here.

Parameters:
  `anchored` - An `IVisualPart` to attach to this anchorage `IVisualPart` as anchored.
Noreference:
  Clients should call `attachToAnchorage(IVisualPart)`, `attachToAnchorage(IVisualPart, String)` instead to establish an anchored-anchorage relationship.

### attachToAnchorage

void attachToAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage)
Attaches the given `IVisualPart` to the given anchorage under the "default" role.

Parameters:
  `anchorage` - The anchorage `IVisualPart` to attach this part to.

### attachToAnchorage

void attachToAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage, String role)
Attaches the given `IVisualPart` to the given anchorage under the given role.

Parameters:
  `anchorage` - The anchorage `IVisualPart` to attach this part to.
  `role` - The role under which this `IVisualPart` is attached to the given anchorage. `null`.

### childrenUnmodifiableProperty

javafx.beans.property.ReadOnlyListProperty<IVisualPart<? extends javafx.scene.Node>> childrenUnmodifiableProperty()
Returns an unmodifiable read-only property containing the children of this `IVisualPart`.

See Also:
  - `getChildrenUnmodifiable()`

### detachAnchored

void detachAnchored(IVisualPart<? extends javafx.scene.Node> anchored)
Used by an anchored `IVisualPart` to unestablish an anchorage-anchored relationship with this anchorage `IVisualPart`.

Clients should never call this operation directly but instead remove the anchorage from its anchored via the `detachFromAnchorage(IVisualPart)` or `detachFromAnchorage(IVisualPart, String)` operations, which will indirectly lead to a call here.

Parameters:
  `anchored` - An `IVisualPart` (currently attached as anchored to this anchorage `IVisualPart`) to detach from this anchorage `IVisualPart` as anchored.
Noreference:
  Clients should call `detachFromAnchorage(IVisualPart)` or `detachFromAnchorage(IVisualPart, String)` instead to unestablish an anchored-anchorage relationship.

### detachFromAnchorage

void detachFromAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage)
Detaches this `IVisualPart` from the given anchorage `IVisualPart` under the 'default' role.

Parameters:
  `anchorage` - The anchorage `IVisualPart` to detach this part from.

### detachFromAnchorage

void detachFromAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage, String role)
Detaches this `IVisualPart` from the given anchorage `IVisualPart` under the given role.

Parameters:
  `anchorage` - The anchorage `IVisualPart` to detach this part from.
  `role` - The role under which the `IVisualPart` can be found in this part's anchorages.

### getAnchoragesUnmodifiable

ObservableSetMultimap<IVisualPart<? extends javafx.scene.Node>,String> getAnchoragesUnmodifiable()
Returns an unmodifiable `ObservableSetMultimap` of this part's anchorages and their corresponding roles.

Returns:
  A `ObservableSetMultimap` of this part's anchorages and their corresponding roles.

### getAnchoredsUnmodifiable

ObservableMultiset<IVisualPart<? extends javafx.scene.Node>> getAnchoredsUnmodifiable()
Returns an unmodifiable `ObservableMultiset` of this part's anchoreds.

Returns:
  An unmodifiable `ObservableMultiset` of this part's anchoreds.

### getBehaviors

Map<AdapterKey<? extends IBehavior>,IBehavior> getBehaviors()
Returns a `Map` of this part's behaviors and their corresponding `AdapterKey`s.

Returns:
  A `Map` of this part's behaviors and their corresponding `AdapterKey`s.

### getChildrenUnmodifiable

javafx.collections.ObservableList<IVisualPart<? extends javafx.scene.Node>> getChildrenUnmodifiable()
Returns an unmodifiable `ObservableList` of this part's children.

Returns:
  A `ObservableList` of this part's children.

### getHandlers

Map<AdapterKey<? extends org.eclipse.gef.mvc.fx.handlers.IHandler>,org.eclipse.gef.mvc.fx.handlers.IHandler> getHandlers()
Returns a `Map` of this part's handlers and their corresponding `AdapterKey`s.

Returns:
  A `Map` of this part's handlers and their corresponding `AdapterKey`s.

### getParent

IVisualPart<? extends javafx.scene.Node> getParent()
Returns the parent of this part.

Returns:
  The parent of this part.

### getPolicies

Map<AdapterKey<? extends IPolicy>,IPolicy> getPolicies()
Returns a `Map` of this part's policies and their corresponding `AdapterKey`s.

Returns:
  A `Map` of this part's policies and their corresponding `AdapterKey`s.

### getRoot

IRootPart<? extends javafx.scene.Node> getRoot()
Returns the `IRootPart`. This method should only be called internally or by helpers such as edit policies. The root can be used to get the viewer.

Returns:
  `null` or the `IRootPart`

### getViewer

default IViewer getViewer()
Returns the `IViewer` this `IVisualPart` is bound to.

Returns:
  The `IViewer` this `IVisualPart` is attached to.

### getVisual

V getVisual()
Returns this part's visual.

Returns:
  This part's visual.

### isRefreshVisual

boolean isRefreshVisual()
Returns `true` if this part is allowed to refresh its visualization based on its content. Otherwise returns `false`.

Returns:
  `true` if this part is allowed to refresh its visualization based on its content, otherwise `false`.

### parentProperty

javafx.beans.property.ReadOnlyObjectProperty<IVisualPart<? extends javafx.scene.Node>> parentProperty()
Returns a read-only property that refers to the parent of this `IVisualPart`.

See Also:
  - `getParent()`
  - `setParent(IVisualPart)`

### refreshVisual

void refreshVisual()
Refreshes this part's visualization based on this part's content.

### refreshVisualProperty

javafx.beans.property.BooleanProperty refreshVisualProperty()
A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.

See Also:
  - `isRefreshVisual()`
  - `setRefreshVisual(boolean)`

### removeChild

void removeChild(IVisualPart<? extends javafx.scene.Node> child)
Removes the given `IVisualPart` from the list of this part's children.

Parameters:
  `child` - The `IVisualPart` which is removed from the list of this part's children.

### removeChildren

void removeChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children)
Removes the given `IVisualPart`s from the list of this part's children.

Parameters:
  `children` - The `IVisualPart`s which are removed from the list of this part's children.

### reorderChild

void reorderChild(IVisualPart<? extends javafx.scene.Node> child, int index)
Swaps the given `IVisualPart` with the part at the given index position within this part's list of children.

Parameters:
  `child` - The `IVisualPart` which is reordered.
  `index` - The index to which the part is reordered.

### setParent

void setParent(IVisualPart<? extends javafx.scene.Node> parent)
Used by a parent `IVisualPart` to establish/unestablish a parent-child relationship with this child `IVisualPart`.

Clients should never call this operation directly but instead add the children to its parent via the `addChild(IVisualPart)`, `addChild(IVisualPart, int)`, `addChildren(List)`, or `addChildren(List, int)` or remove it via the `removeChild(IVisualPart)` or `removeChildren(List)` operations, which will indirectly lead to a call here.

Parameters:
  `parent` - The new parent `IVisualPart` or `null`.
Noreference:
  Clients should use `addChild(IVisualPart)`, `addChild(IVisualPart, int)`, `addChildren(List)`, `addChildren(List, int)`, `removeChild(IVisualPart)`, or `removeChildren(List)` to establish/unestablish a parent-child relationship instead.

### setRefreshVisual

void setRefreshVisual(boolean refreshVisual)
Allows to temporarily turn `refreshVisual()` into a no-op operation. This may for instance be used to disable visual updates that are initiated by the model (in case of `IContentPart`s) while interacting with the `IVisualPart`.

Parameters:
  `refreshVisual` - Whether `refreshVisual()` should perform updates of the visual (`true`) or behave like a no-op operation ( `false`).