public abstract class AbstractAnchor extends java.lang.Object implements IAnchor
AbstractAnchor is the abstract base implementation for
IAnchors. It provides the facility to bind an anchor to an anchorage
Node (anchorageProperty()), to attach and detach
Nodes via AnchorKeys, and to provide positions (
positionsUnmodifiableProperty()) for the attached AnchorKey
s.
It also registers the necessary listeners at the anchorage Node and
the attached Nodes as well as relevant ancestor Nodes, to
trigger the (re-)computation of positions.
The actual computation of positions for attached nodes is delegated to
computePosition(AnchorKey), thus left to subclasses. If a subclass
needs additional information to compute positions for attached
AnchorKeys, it may request that an IAdaptable info gets
passed into attach(AnchorKey) and detach(AnchorKey), and
may overwrite both methods to get access to it.
| Type | Property and Description |
|---|---|
javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> |
anchorage
Provides a read-only property with the anchorage
Node this
IAnchor is bound to. |
javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> |
positionsUnmodifiable
Provides a read-only (map) property with positions (in local coordinates
of the anchored
Nodes) for all attached AnchorKeys. |
| Constructor and Description |
|---|
AbstractAnchor(javafx.scene.Node anchorage)
Creates a new
AbstractAnchor for the given anchorage
Node. |
| Modifier and Type | Method and Description |
|---|---|
javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> |
anchorageProperty()
Provides a read-only property with the anchorage
Node this
IAnchor is bound to. |
void |
attach(AnchorKey key)
|
protected abstract Point |
computePosition(AnchorKey key)
Recomputes the position for the given attached
AnchorKey by
delegating to the respective IComputationStrategy. |
void |
detach(AnchorKey key)
|
javafx.scene.Node |
getAnchorage()
Gets the value of the property anchorage.
|
protected java.util.Set<AnchorKey> |
getKeys()
Returns all keys maintained by this anchor.
|
protected com.google.common.collect.SetMultimap<javafx.scene.Node,AnchorKey> |
getKeysByNode()
|
Point |
getPosition(AnchorKey key)
Provides a position for the given
AnchorKey. |
javafx.collections.ObservableMap<AnchorKey,Point> |
getPositionsUnmodifiable()
Gets the value of the property positionsUnmodifiable.
|
boolean |
isAttached(AnchorKey key)
|
javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> |
positionsUnmodifiableProperty()
Provides a read-only (map) property with positions (in local coordinates
of the anchored
Nodes) for all attached AnchorKeys. |
protected void |
registerVCL(javafx.scene.Node anchored)
Registers a
VisualChangeListener for the given anchored
Node. |
protected void |
registerVCLs()
Registers
VisualChangeListeners for all anchored Nodes,
or schedules their registration if the VCL cannot be registered yet. |
protected void |
setAnchorage(javafx.scene.Node anchorage)
Sets the anchorage of this
AbstractAnchor to the given value. |
protected void |
unregisterVCL(javafx.scene.Node anchored)
Unregisters the
VisualChangeListeners for the given anchored
Node. |
protected void |
unregisterVCLs()
Unregisters the
VisualChangeListeners for all anchored
Nodes. |
protected void |
updatePosition(AnchorKey key)
Updates the position for the given
AnchorKey, i.e. |
protected void |
updatePositions()
Updates the positions for all attached
AnchorKeys. |
public javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> anchorageProperty
anchorageProperty in interface IAnchorNode.getAnchorage(),
setAnchorage(Node)public javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> positionsUnmodifiableProperty
positionsUnmodifiableProperty in interface IAnchorAnchorKeys.getPositionsUnmodifiable()public AbstractAnchor(javafx.scene.Node anchorage)
AbstractAnchor for the given anchorage
Node.anchorage - The anchorage Node for this AbstractAnchor.public javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> anchorageProperty()
IAnchorNode this
IAnchor is bound to. The property value may be null
in case this IAnchor is not bound to an anchorage Node.anchorageProperty in interface IAnchorNode.getAnchorage(),
setAnchorage(Node)protected abstract Point computePosition(AnchorKey key)
AnchorKey by
delegating to the respective IComputationStrategy.public javafx.scene.Node getAnchorage()
getAnchorage in interface IAnchorIAnchor.anchorageProperty().protected java.util.Set<AnchorKey> getKeys()
AnchorKeys.protected com.google.common.collect.SetMultimap<javafx.scene.Node,AnchorKey> getKeysByNode()
Map which stores the registered AnchorKeys
per Node by reference.public Point getPosition(AnchorKey key)
IAnchorAnchorKey. The provided
AnchorKey has to be attached to this IAnchor (see
IAnchor.attach(AnchorKey)).getPosition in interface IAnchorkey - The AnchorKey to retrieve a position for. It has to be
attached (IAnchor.attach(AnchorKey)) to this IAnchor
before.AnchorKey within local
coordinates of the AnchorKey's anchored Node.public javafx.collections.ObservableMap<AnchorKey,Point> getPositionsUnmodifiable()
getPositionsUnmodifiable in interface IAnchorAnchorKeys.public boolean isAttached(AnchorKey key)
IAnchorisAttached in interface IAnchorkey - The AnchorKey to test.true if the given key is attached, otherwise
false.public javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> positionsUnmodifiableProperty()
IAnchorNodes) for all attached AnchorKeys. The
positions will be updated for all attached AnchorKeys if the
attached Nodes or the anchorage Node, the IAnchor
is bound to, or any of their ancestors changes in a way that will effect
the positions (within the local coordinate space of the attached
Nodes).positionsUnmodifiableProperty in interface IAnchorAnchorKeys.getPositionsUnmodifiable()protected void registerVCL(javafx.scene.Node anchored)
VisualChangeListener for the given anchored
Node.anchored - The anchored Node to register a
VisualChangeListener at.protected void registerVCLs()
VisualChangeListeners for all anchored Nodes,
or schedules their registration if the VCL cannot be registered yet.protected void setAnchorage(javafx.scene.Node anchorage)
AbstractAnchor to the given value.anchorage - The new anchorage for this AbstractAnchor.protected void unregisterVCL(javafx.scene.Node anchored)
VisualChangeListeners for the given anchored
Node.anchored - The anchored Node to unregister a VisualChangeListener
from.protected void unregisterVCLs()
VisualChangeListeners for all anchored
Nodes.protected void updatePosition(AnchorKey key)
AnchorKey, i.e.
positionsUnmodifiableProperty()key - The AnchorKey for which the position is updated.protected void updatePositions()
AnchorKeys.Copyright (c) 2014, 2016 itemis AG and others. All rights reserved.