|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectbibliothek.gui.dock.station.split.SplitNode
bibliothek.gui.dock.station.split.VisibleSplitNode
bibliothek.gui.dock.station.split.SpanSplitNode
bibliothek.gui.dock.station.split.Leaf
public class Leaf
Represents a leaf in the tree that is the structure of a SplitDockStation.
A leaf also represents a single Dockable which is shown
on the owner-station.
| Field Summary |
|---|
| Fields inherited from class bibliothek.gui.dock.station.split.SplitNode |
|---|
height, width, x, y |
| Constructor Summary | |
|---|---|
Leaf(SplitDockAccess access)
Creates a new leaf. |
|
Leaf(SplitDockAccess access,
long id)
Creates a new leaf. |
|
| Method Summary | ||
|---|---|---|
boolean |
aside(AsideRequest request)
Inserts a new placeholder at this node. |
|
boolean |
aside(SplitDockPathProperty property,
int index,
AsideRequest request)
Inserts a new placeholder at location property. |
|
protected PutInfo |
createSidePut(Rectangle bounds,
int x,
int y,
Dockable drop,
boolean centered)
Assuming the mouse at x/y is within bounds, this method calculates which one
of the non-combining PutInfo.Puts describe the situation best. |
|
void |
evolve(SplitDockTree.Key key,
boolean checkValidity,
Map<Leaf,Dockable> linksToSet)
Creates or replaces children according to the values found in key. |
|
SplitNode |
getChild(int location)
Gets the child at location. |
|
int |
getChildLocation(SplitNode child)
Gets the location of a child. |
|
DockableDisplayer |
getDisplayer()
Gets the displayer of this leaf. |
|
Node |
getDividerNode(int x,
int y)
Gets the Node whose divider area contains the point x/y. |
|
Dockable |
getDockable()
Gets the Dockable which is shown on the displayer
of this leaf. |
|
StationChildHandle |
getDockableHandle()
Gets the handle which is responsible for the current Dockable. |
|
Leaf |
getLeaf(Dockable dockable)
Gets the leaf which represents dockable. |
|
int |
getMaxChildrenCount()
Gets the maximal number of children this node can have. |
|
Dimension |
getMinimumSize()
Gets the minimal size of this node. |
|
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 |
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. |
|
protected boolean |
isCenterPut(Rectangle bounds,
int x,
int y)
Tells whether the position of the mouse x/y would result in a drag and drop operation where
PutInfo.Put.CENTER is apropriate. |
|
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 |
|
protected boolean |
isTitlePut(Rectangle bounds,
int x,
int y)
Tells whether the position of the mouse x/y would result in a drag and drop operation where
PutInfo.Put.TITLE is apropriate. |
|
boolean |
isVisible()
Tells whether this node (or one of this children) contains element that are visible to the user. |
|
void |
onSpanResize()
Called if a Span of this node changed its size |
|
void |
placehold(boolean keepCurrent)
Disconnects this leaf from its Dockable. |
|
protected Rectangle |
removeTitle(Rectangle bounds)
Asks the DockableDisplayer for its current DockTitle and removes the size
of the title from bounds. |
|
void |
resetDisplayerBounds()
Resets the boundaries of the DockableDisplayer of this Leaf, using the current Spans
as well. |
|
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 |
setDockable(Dockable dockable,
DockHierarchyLock.Token token)
Sets the element of this leaf. |
|
void |
setDockable(Dockable dockable,
DockHierarchyLock.Token token,
boolean updatePlaceholders,
boolean storePlaceholderMap)
Sets the element of this leaf. |
|
void |
setHandle(StationChildHandle handle)
Sets the element of this leaf. |
|
|
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. |
|
void |
visit(SplitNodeVisitor visitor)
Invokes one of the methods of the visitor for every
child in the subtree with this as root. |
|
| Methods inherited from class bibliothek.gui.dock.station.split.SpanSplitNode |
|---|
createSpans, getSpans |
| Methods inherited from class bibliothek.gui.dock.station.split.VisibleSplitNode |
|---|
getCurrentBounds |
| Methods inherited from class bibliothek.gui.dock.station.split.SplitNode |
|---|
above, 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, treeChanged |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public Leaf(SplitDockAccess access)
access - the access to the private functions of the owning SplitDockStation
public Leaf(SplitDockAccess access,
long id)
access - the access to the private functions of the owning SplitDockStationid - the unique id of this leaf| Method Detail |
|---|
public void setHandle(StationChildHandle handle)
handle - the elementpublic Dimension getMinimumSize()
SplitNode
getMinimumSize in class SplitNodepublic Dimension getPreferredSize()
SplitNode
getPreferredSize in class SplitNodepublic int getChildLocation(SplitNode child)
SplitNode
getChildLocation in class SplitNodechild - a child of this node
child or -1 if the child is unknown
public void setChild(SplitNode child,
int location)
SplitNode
setChild in class SplitNodechild - the new childlocation - the location of the childpublic int getMaxChildrenCount()
SplitNode
getMaxChildrenCount in class SplitNodepublic SplitNode getChild(int location)
SplitNodelocation.
getChild in class SplitNodelocation - the location of the child
null if the location is invalid or if there is no child at the location
public void setDockable(Dockable dockable,
DockHierarchyLock.Token token)
dockable
is registered in the DockStation
dockable - the new element or null to remove the
old Dockabletoken - if null, then a token will be acquired by this method
and this method will fire events, otherwise this methods is executed silently. Clients should
use null.
public void setDockable(Dockable dockable,
DockHierarchyLock.Token token,
boolean updatePlaceholders,
boolean storePlaceholderMap)
dockable
is registered in the DockStation
dockable - the new element or null to remove the
old Dockabletoken - if null, then a token will be acquired by this method
and this method will fire events, otherwise this methods is executed silentlyupdatePlaceholders - if true, the placeholder list of this leaf is
automatically updatedstorePlaceholderMap - if true, the current PlaceholderMap is
replaced by the map provided by the current Dockable which is a DockStationpublic Dockable getDockable()
Dockable which is shown on the displayer
of this leaf.
public DockableDisplayer getDisplayer()
public StationChildHandle getDockableHandle()
Dockable.
nullpublic boolean isVisible()
SplitNode
isVisible in class SplitNodetrue if this node or one of its children contains
a graphical elementpublic SplitNode getVisible()
SplitNode
getVisible in class SplitNodenull, this or any
child of this nodepublic boolean isOfUse()
SplitNode
isOfUse in class SplitNodetrue if this node has to remain in the tree, false
otherwisepublic void placehold(boolean keepCurrent)
Dockable. This leaf either deletes
itself or replaces itself with a Placeholder.
keepCurrent - if true, the placeholder of the current
Dockable is added to the set of the placeholders, otherwise the placeholder
is removed.
public 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 void onSpanResize()
SpanSplitNodeSpan of this node changed its size
onSpanResize in class SpanSplitNodepublic void resetDisplayerBounds()
DockableDisplayer of this Leaf, using the current Spans
as well.
public 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 dropped
null if
the dockable can't be droppedprotected Rectangle removeTitle(Rectangle bounds)
DockableDisplayer for its current DockTitle and removes the size
of the title from bounds. Depending on the position of the title bounds
is moved, shrunk only horizontally or vertically.
bounds - some boundaries, usually describing the boundaries of this Leaf but
any Rectangle can be modified by this method
bounds where the size of the title (if there is any) has been removed
protected boolean isCenterPut(Rectangle bounds,
int x,
int y)
x/y would result in a drag and drop operation where
PutInfo.Put.CENTER is apropriate.
bounds - the boundaries of the Dockable, this Leaf or any other representation of
the Dockablex - the x-coordinate of the mousey - the y-coordinate of the mouse
Dockables
protected boolean isTitlePut(Rectangle bounds,
int x,
int y)
x/y would result in a drag and drop operation where
PutInfo.Put.TITLE is apropriate.
bounds - the boundaries of the Dockable, this Leaf or any other representation of
the Dockablex - the x-coordinate of the mousey - the y-coordinate of the mouse
Dockables
protected PutInfo createSidePut(Rectangle bounds,
int x,
int y,
Dockable drop,
boolean centered)
x/y is within bounds, this method calculates which one
of the non-combining PutInfo.Puts describe the situation best. The method creates and validates a new
PutInfo.
bounds - the boundaries of the Dockable, the Leaf or any other representation of the
Dockable.x - the x-coordinate of the mousey - the y-coordinate of the mousedrop - the item that is about to be droppedcentered - whether the mouse position alone would usually require one of the combining PutInfo.Puts
null if the suggested operation is not valid
public 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/y
public 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 setDockable(Dockable, bibliothek.gui.dock.DockHierarchyLock.Token)
evolve in class SplitNodekey - the key to readcheckValidity - whether to ensure that all new Dockables are
acceptable or not.linksToSet - a map that is to be filled with all new Leafs and their Dockables which are not yet set.
public boolean insert(SplitDockPlaceholderProperty property,
Dockable dockable)
SplitNodeproperty and inserts the dockable there. Also removes
the placeholder from this node.
insert in class SplitNodeproperty - the placeholder to searchdockable - the new element
true if the element was inserted, false
otherwisepublic boolean aside(AsideRequest request)
SplitNode
aside in class SplitNoderequest - more information about the request, including the placeholder to add
true if the placeholder was added, false if it could
not be added
public boolean aside(SplitDockPathProperty property,
int index,
AsideRequest request)
SplitNodeproperty.
aside in class SplitNodeproperty - the path to the placeholderindex - the current segment, represents this noderequest - more information about the request, including the placeholder to add
true if the placeholder was added, false if it could
not be added
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.
insert in class SplitNodeproperty - a list of nodesdepth - the index of the node that corresponds to thisdockable - the element to insert
true if the element was inserted, false
otherwisepublic <N> N submit(SplitTreeFactory<N> factory)
SplitNodefactory.
submit in class SplitNodeN - the type of element the factory will createfactory - the factory transforming the elements of the tree into a
new form.
public Leaf getLeaf(Dockable dockable)
SplitNodedockable.
getLeaf in class SplitNodedockable - the Dockable whose leaf is searched
null if no leaf was found
public Node getDividerNode(int x,
int y)
SplitNode
getDividerNode in class SplitNodex - the x-coordinatey - the y-coordinate
null is returnedpublic void visit(SplitNodeVisitor visitor)
SplitNodevisitor for every
child in the subtree with this as root.
visit in class SplitNodevisitor - the visitor
public void toString(int tabs,
StringBuilder out)
SplitNodeout.
toString in class SplitNodetabs - the number of tabs that should be added before the text if
a new line is necessary.out - the container to write into
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||