public class Node extends VisibleSplitNode implements Divideable
SplitDockStation.
Every node has two children. The areas of the children are separated by
a "divider", whose position can be changed.| Constructor and Description |
|---|
Node(SplitDockAccess access)
Constructs a new node.
|
Node(SplitDockAccess access,
long id)
Constructs a new node.
|
Node(SplitDockAccess access,
SplitNode left,
SplitNode right)
Constructs a new node.
|
Node(SplitDockAccess access,
SplitNode left,
SplitNode right,
long id)
Constructs a new node.
|
Node(SplitDockAccess access,
SplitNode left,
SplitNode right,
SplitDockStation.Orientation orientation)
Constructs a new node.
|
Node(SplitDockAccess access,
SplitNode left,
SplitNode right,
SplitDockStation.Orientation orientation,
long id)
Constructs a new node.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
aside(AsideRequest request)
Inserts a new placeholder at this node.
|
boolean |
aside(SplitDockPathProperty property,
int depth,
AsideRequest request)
Inserts a new placeholder at location
property. |
void |
evolve(SplitDockTree.Key key,
boolean checkValidity,
Map<Leaf,Dockable> linksToSet)
Creates or replaces children according to the values found in
key. |
double |
getActualDivider()
Gets the
divider as it is actually seen by the user. |
SplitNode |
getChild(int location)
Gets the child at
location. |
int |
getChildLocation(SplitNode child)
Gets the location of a child.
|
double |
getDivider()
Gets the location of the divider.
|
double |
getDividerAt(int x,
int y)
Calculates the value which the divider must have on condition that
the point
x/y lies inside the divider bounds. |
Rectangle |
getDividerBounds(double divider,
Rectangle bounds)
Calculates the location and the size of the area which represents the divider.
|
Node |
getDividerNode(int x,
int y)
Gets the Node whose divider area contains the point x/y.
|
Leaf |
getLeaf(Dockable dockable)
Gets the leaf which represents
dockable. |
SplitNode |
getLeft()
Gets the left child of this node.
|
int |
getMaxChildrenCount()
Gets the maximal number of children this node can have.
|
Dimension |
getMinimumSize()
Gets the minimal size of this node.
|
SplitDockStation.Orientation |
getOrientation()
Gets the orientation of this divideable.
|
Dimension |
getPreferredSize()
Gets the preferred size of this node.
|
PutInfo |
getPut(int x,
int y,
double factorW,
double factorH,
Dockable drop)
Determines where to drop the
Dockable drop
if the mouse is at location x/y. |
SplitNode |
getRight()
Gets the right child of this node.
|
SplitNode |
getVisible()
Gets the root of a subtree such that the root is visible and such that the
is the uppermost visible node.
|
boolean |
insert(SplitDockPathProperty property,
int depth,
Dockable dockable)
If there are elements left in
property, then the next node
is to be read and the insert-method of the matching child
to be called.If there are no children, then dockable has to be inserted
as new child.Otherwise this element is to be replaced by a node containing this and the a leaf with dockable.Subclasses may wary this scheme in order to optimize or to find a better place for the dockable. |
boolean |
insert(SplitDockPlaceholderProperty property,
Dockable dockable)
Recursively searches for a node or leaf that uses the placeholder specified by
property and inserts the dockable there. |
boolean |
isInOverrideZone(int x,
int y,
double factorW,
double factorH)
Tells whether the coordinates x/y lie inside the override-zone of
the
SplitDockStation or not. |
boolean |
isOfUse()
Tells whether this node still has any use or can safely be removed from the tree
|
boolean |
isVisible()
Tells whether this node (or one of this children) contains element that
are visible to the user.
|
void |
setBounds(double x,
double y,
double width,
double height,
double factorW,
double factorH,
boolean updateComponentBounds)
Updates the bounds of this node.
|
void |
setChild(SplitNode child,
int location)
Adds a child to this node at a given location.
|
void |
setDivider(double divider)
Sets the location of the divider.
|
void |
setLeft(SplitNode left)
Sets the left child of this node.
|
void |
setOrientation(SplitDockStation.Orientation orientation)
Changes the orientation of this node.
|
void |
setRight(SplitNode right)
Sets the right child of this node.
|
<N> N |
submit(SplitTreeFactory<N> factory)
Writes the contents of this node into a new tree create by
factory. |
void |
toString(int tabs,
StringBuilder out)
Writes some contents of this node into
out. |
void |
updateBounds(double x,
double y,
double width,
double height,
double factorW,
double factorH,
boolean components)
Updates the bounds of this node.
|
double |
validateDivider(double divider)
Validates the new location
divider. |
void |
visit(SplitNodeVisitor visitor)
Invokes one of the methods of the
visitor for every
child in the subtree with this as root. |
getCurrentBoundsabove, addPlaceholder, create, create, createLeaf, createNode, createPlaceholder, delete, ensureIdUnique, ensureIdUniqueAsync, getAccess, getBounds, getHeight, getId, getParent, getPlaceholderMap, getPlaceholderNode, getPlaceholders, getRoot, getSize, getStation, getTotalChildrenCount, getWidth, getX, getY, hasPlaceholder, hasPlaceholders, intersection, movePlaceholderMap, relativeSidePut, removePlaceholder, removePlaceholders, replace, setParent, setPlaceholderMap, setPlaceholders, split, split, toString, treeChangedpublic Node(SplitDockAccess access, SplitNode left, SplitNode right, SplitDockStation.Orientation orientation)
access - the access to the owner-station of this node.left - the left childright - the right childorientation - how the children are alignedpublic Node(SplitDockAccess access, SplitNode left, SplitNode right, SplitDockStation.Orientation orientation, long id)
access - the access to the owner-station of this node.left - the left childright - the right childorientation - how the children are alignedid - the unique id of this node, can be -1public Node(SplitDockAccess access, SplitNode left, SplitNode right)
access - the access to the owner-station of this nodeleft - the left childright - the right childpublic Node(SplitDockAccess access, SplitNode left, SplitNode right, long id)
access - the access to the owner-station of this nodeleft - the left childright - the right childid - the unique id of this nodepublic Node(SplitDockAccess access)
access - the access to the owner-station of this nodepublic Node(SplitDockAccess access, long id)
access - the access to the owner-station of this nodeid - the unique id of this nodepublic void setLeft(SplitNode left)
null does not delete
the child from the system, only a call to SplitNode.delete(boolean)
does that.left - the left child or nullpublic SplitNode getLeft()
setLeft(SplitNode)public void setRight(SplitNode right)
null does not delete
the child from the system, only a call to SplitNode.delete(boolean)
does that.right - the right childpublic SplitNode getRight()
setRight(SplitNode)public int getChildLocation(SplitNode child)
SplitNodegetChildLocation in class SplitNodechild - a child of this nodechild or -1 if the child is unknownpublic void setChild(SplitNode child, int location)
SplitNodepublic int getMaxChildrenCount()
SplitNodegetMaxChildrenCount in class SplitNodepublic SplitNode getChild(int location)
SplitNodelocation.public SplitDockStation.Orientation getOrientation()
DivideableSplitDockStation.Orientation.VERTICAL, one child
will be at the top and the other at the bottom.getOrientation in interface Divideablepublic void setOrientation(SplitDockStation.Orientation orientation)
orientation - the new orientationpublic Dimension getMinimumSize()
SplitNodegetMinimumSize in class SplitNodepublic Dimension getPreferredSize()
SplitNodegetPreferredSize in class SplitNodepublic void setDivider(double divider)
Divideabledivider.setDivider in interface Divideabledivider - the dividerpublic double getDivider()
DivideablegetDivider in interface DivideableDivideable.setDivider(double)public double getActualDivider()
Divideabledivider as it is actually seen by the user. Usually this is equivalent
to validateDivider( getDivider() ), subclasses may however consider other restrictions.getActualDivider in interface Divideablepublic double validateDivider(double divider)
Divideabledivider.validateDivider in interface Divideabledivider - the new dividerdividerpublic boolean isVisible()
SplitNodepublic SplitNode getVisible()
SplitNodegetVisible in class SplitNodenull, this or any
child of this nodepublic boolean isOfUse()
SplitNodepublic void updateBounds(double x,
double y,
double width,
double height,
double factorW,
double factorH,
boolean components)
SplitNodeComponent, then
the bounds of the component have to be updated as well.updateBounds on
the children of this node.updateBounds in class VisibleSplitNodex - the relative x-coordinatey - the relative y-coordinatewidth - the relative width of the nodeheight - the relative height of the nodefactorW - a factor to be multiplied with x and width
to get the size of the node in pixelfactorH - a factor to be multiplied with y and height
to get the size of the node in pixelcomponents - whether to update the bounds of Components
that are in the tree. If set to false, then all updates stay within
the tree and the graphical user interface is not changed. That can be useful
if more than one round of updates is necessary. If in doubt, set this parameter
to true.SplitNode.setBounds(double, double, double, double, double, double, boolean)public void setBounds(double x,
double y,
double width,
double height,
double factorW,
double factorH,
boolean updateComponentBounds)
SplitNodeComponent, then
the bounds of the component have to be updated as well. This method is not recursive, it does not
call getBounds on the children of this node.setBounds in class SplitNodex - the relative x-coordinatey - the relative y-coordinatewidth - the relative width of the nodeheight - the relative height of the nodefactorW - a factor to be multiplied with x and width
to get the size of the node in pixelfactorH - a factor to be multiplied with y and height
to get the size of the node in pixelupdateComponentBounds - whether to update the bounds of Components
that are in the tree. If set to false, then all updates stay within
the tree and the graphical user interface is not changed. That can be useful
if more than one round of updates is necessary. If in doubt, set this parameter
to true.SplitNode.updateBounds(double, double, double, double, double, double, boolean)public Rectangle getDividerBounds(double divider, Rectangle bounds)
DivideablegetDividerBounds in interface Divideabledivider - The location of the divider, should be between 0 and 1.bounds - A rectangle in which the result will be stored. It can be nullbounds or a new Rectangle if bounds
was nullpublic double getDividerAt(int x,
int y)
Divideablex/y lies inside the divider bounds.getDividerAt in interface Divideablex - x-coordinate of the point in pixely - y-coordinate of the point in pixelpublic PutInfo getPut(int x, int y, double factorW, double factorH, Dockable drop)
SplitNodeDockable drop
if the mouse is at location x/y.getPut in class SplitNodex - the x-coordinate of the mousey - the y-coordinate of the mousefactorW - a factor to be multiplied with the relative
x and width to get the
size in pixel.factorH - a factor to be multiplied with the relative
y and height to get the
size in pixel.drop - the Dockable which will be droppednull if
the dockable can't be droppedpublic boolean isInOverrideZone(int x,
int y,
double factorW,
double factorH)
SplitNodeSplitDockStation or not.isInOverrideZone in class SplitNodex - the x-coordinate of the mousey - the y-coordinate of the mousefactorW - a factor to be multiplied with the relative
x and width to get the
size in pixel.factorH - a factor to be multiplied with the relative
y and height to get the
size in pixel.true if the station should not allow child-stations
to make a drop when the mouse is at x/ypublic void evolve(SplitDockTree.Key key, boolean checkValidity, Map<Leaf,Dockable> linksToSet)
SplitNodekey. Note that this method does not remove any Dockables
from the station. They must be removed explicitly using Leaf.setDockable(Dockable, bibliothek.gui.dock.DockHierarchyLock.Token)public boolean insert(SplitDockPlaceholderProperty property, Dockable dockable)
SplitNodeproperty and inserts the dockable there. Also removes
the placeholder from this node.public boolean aside(AsideRequest request)
SplitNodepublic boolean aside(SplitDockPathProperty property, int depth, AsideRequest request)
SplitNodeproperty.public boolean insert(SplitDockPathProperty property, int depth, Dockable dockable)
SplitNodeproperty, then the next node
is to be read and the insert-method of the matching child
to be called.dockable has to be inserted
as new child.this and the a leaf with dockable.dockable.public <N> N submit(SplitTreeFactory<N> factory)
SplitNodefactory.public Leaf getLeaf(Dockable dockable)
SplitNodedockable.public Node getDividerNode(int x, int y)
SplitNodegetDividerNode in class SplitNodex - the x-coordinatey - the y-coordinatenull is returnedpublic void visit(SplitNodeVisitor visitor)
SplitNodevisitor for every
child in the subtree with this as root.public void toString(int tabs,
StringBuilder out)
SplitNodeout.Copyright © 2017 Docking Frames. All rights reserved.