- All Implemented Interfaces:
Drawing,Figure,TransformCachingFigure,PropertyBean,StyleableBean,StyleablePropertyBean,TreeNode<Figure>
- Direct Known Subclasses:
AbstractViewBoxDrawing
- Author:
- Werner Randelshofer
-
Property Summary
Properties inherited from class org.jhotdraw8.draw.figure.AbstractFigure
parentProperties inherited from interface org.jhotdraw8.fxbase.styleable.StyleableBean
id -
Nested Class Summary
Nested classes/interfaces inherited from interface org.jhotdraw8.fxbase.tree.TreeNode
TreeNode.AncestorIterator<T extends TreeNode<T>> -
Field Summary
Fields inherited from class org.jhotdraw8.fxbase.styleable.AbstractStyleablePropertyBean
keyMaps, propertiesFields inherited from interface org.jhotdraw8.draw.figure.Drawing
AUTHOR_STYLESHEETS, BACKGROUND, DOCUMENT_HOME, HEIGHT, INLINE_STYLESHEETS, TYPE_SELECTOR, USER_AGENT_STYLESHEETS, WIDTHFields inherited from interface org.jhotdraw8.draw.figure.Figure
declaredAndInheritedKeys, JHOTDRAW_CSS_PREFIX, PARENT_PROPERTYFields inherited from interface org.jhotdraw8.draw.figure.TransformCachingFigure
CACHE -
Constructor Summary
ConstructorsConstructorDescriptionAbstractDrawing(double width, double height) AbstractDrawing(CssSize width, CssSize height) -
Method Summary
Modifier and TypeMethodDescriptionjavafx.scene.NodecreateNode(RenderContext drawingView) This method is invoked by aRenderContext, when it needs a node to create a JavaFX scene graph for a figure.protected StylesheetsManager<Figure> The bounds of this drawing is determined by itsWIDTHand itsHEIGHT.javafx.geometry.BoundsThe bounds that should be used for transformations of this figure.@Nullable StylesheetsManager<Figure> Gets the style manager of the drawing.booleanisSuitableParent(Figure newParent) This method returns whether the provided figure is a suitable parent for this figure.voidreshapeInLocal(javafx.scene.transform.Transform transform) Attempts to change the local bounds of the figure.voidreshapeInLocal(CssSize x, CssSize y, CssSize width, CssSize height) Attempts to change the local bounds of the figure.voidThis method is invoked on a figure byDrawingModelwhen it determines that the figure needs to apply its stylesheet again.voidupdateBackground(RenderContext ctx, javafx.scene.layout.Pane g) voidupdateNode(RenderContext ctx, javafx.scene.Node n) This method is invoked by aRenderContext, when it needs to update the node which represents the scene graph in the figure.voidUpdates the stylesheets in the style manager.Methods inherited from class org.jhotdraw8.draw.figure.AbstractCompositeFigure
firePropertyChangeEvent, firePropertyChangeEvent, getBoundsInLocal, getChildren, getLayoutBoundsInParent, isAllowsChildrenMethods inherited from class org.jhotdraw8.draw.figure.AbstractFigure
addedToDrawing, createKeyMap, doAddedToDrawing, doRemovedFromDrawing, getCachedLocalToParent, getCachedLocalToWorld, getCachedParentToLocal, getCachedParentToWorld, getCachedWorldToLocal, getCachedWorldToParent, getDrawing, getLayoutObservers, getPropertyChangeListeners, getReadOnlyLayoutObservers, getStyledNonNull, hasPropertyChangeListeners, onPropertyChanged, parentProperty, removeAllLayoutSubjects, removedFromDrawing, removeLayoutSubject, setCachedLocalToParent, setCachedLocalToWorld, setCachedParentToLocal, setCachedParentToWorld, setCachedWorldToLocal, setCachedWorldToParent, updateCssMethods inherited from class org.jhotdraw8.fxbase.styleable.AbstractStyleablePropertyBean
callObservers, containsMapAccessor, getProperties, getStyleableMap, getStyled, getStyled, remove, removeAll, resetStyledValues, setStyledMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.jhotdraw8.draw.figure.Drawing
getTypeSelector, layoutAll, layoutAll, layoutDependenciesIterable, updateAllCssMethods inherited from interface org.jhotdraw8.draw.figure.Figure
addChild, addedToDrawing, createHandles, disconnect, firePropertyChangeEvent, firePropertyChangeEvent, getBoundsInLocal, getBoundsInParent, getBoundsInWorld, getCenterInLocal, getCenterInParent, getChildren, getDrawing, getLayer, getLayoutBoundsInParent, getLayoutBoundsInWorld, getLayoutObservers, getLayoutSubjects, getLocalToParent, getParent, getParentToLocal, getPreferredAspectRatio, getPropertyChangeListeners, getReadOnlyLayoutObservers, getRoot, getStyleableParent, getSupportedKeys, getVisualBounds, getVisualBoundsInWorld, hasPropertyChangeListeners, isAllowsChildren, isDecomposable, isDeletable, isDeletWithLastLayoutSubject, isEditable, isEditableKey, isGroupReshapeableWith, isLayoutable, isSelectable, isShowing, isSuitableChild, isSupportedKey, isVisible, layout, layoutChanged, layoutObserverChanged, layoutSubjectChanged, localToParent, localToWorld, localToWorld, parentProperty, propertyChanged, removeAllLayoutSubjects, removeChild, removedFromDrawing, removeFromParent, removeLayoutSubject, reshapeInLocal, reshapeInLocal, reshapeInParent, setParent, transformChanged, transformInLocal, transformInParent, translateInLocal, translateInParent, updateCss, worldToLocal, worldToLocal, worldToParent, worldToParentMethods inherited from interface org.jhotdraw8.fxbase.beans.PropertyBean
get, getNonNull, getProperties, getProperty, put, remove, set, setNonNull, valueAtMethods inherited from interface org.jhotdraw8.fxbase.styleable.StyleableBean
getId, getPseudoClassStates, getStyle, getStyleClasses, idPropertyMethods inherited from interface org.jhotdraw8.fxbase.styleable.StyleablePropertyBean
containsMapAccessor, getStyled, getStyled, getStyledNonNull, remove, removeAll, resetStyledValues, setStyledMethods inherited from interface org.jhotdraw8.draw.figure.TransformCachingFigure
getLocalToWorld, getParentToWorld, getWorldToLocal, getWorldToParent, invalidateTransformsMethods inherited from interface org.jhotdraw8.fxbase.tree.TreeNode
ancestorIterable, breadthFirstIterable, depthFirstIterable, dumpTree, dumpTree, getAncestor, getChild, getDepth, getFirstChild, getLastChild, getMaxDepth, getPath, postorderIterable, preorderIterable, preorderSpliterator
-
Constructor Details
-
AbstractDrawing
public AbstractDrawing() -
AbstractDrawing
public AbstractDrawing(double width, double height) -
AbstractDrawing
-
-
Method Details
-
createNode
Description copied from interface:FigureThis method is invoked by aRenderContext, when it needs a node to create a JavaFX scene graph for a figure.A typical implementation should look like this:
public Node createNode(RenderContext v) { return new ...desired subclass of Node...(); }A figure may be rendered with multiple
RenderContexts simultaneously. EachRenderContextuses this method to instantiate a JavaFX node for the figure and associate it to the figure.This method must create a new instance because returning an already existing instance may cause undesired side effects on other
RenderContexts.Note that by convention this method may only be invoked by a
RenderContextobject.- Specified by:
createNodein interfaceFigure- Parameters:
drawingView- the renderer which will use the node- Returns:
- the newly created node
-
createStyleManager
-
getCssLayoutBounds
The bounds of this drawing is determined by itsWIDTHand itsHEIGHT.The bounds of the child figures does not affect the bounds of the drawing.
- Specified by:
getCssLayoutBoundsin interfaceFigure- Overrides:
getCssLayoutBoundsin classAbstractCompositeFigure- Returns:
- bounding box (0, 0, WIDTH, HEIGHT).
-
getLayoutBounds
public javafx.geometry.Bounds getLayoutBounds()Description copied from interface:FigureThe bounds that should be used for transformations of this figure.The bounds are given in the untransformed local coordinate space of the figure.
This method may use caching and return incorrect results if the cache is stale. Invoke
Figure.layout(org.jhotdraw8.draw.render.RenderContext)if you are not sure that the cache is valid.- Specified by:
getLayoutBoundsin interfaceFigure- Overrides:
getLayoutBoundsin classAbstractCompositeFigure- Returns:
- the local bounds
-
getStyleManager
Description copied from interface:DrawingGets the style manager of the drawing.- Specified by:
getStyleManagerin interfaceDrawing- Returns:
- the style manager
-
updateStyleManager
public void updateStyleManager()Description copied from interface:DrawingUpdates the stylesheets in the style manager.- Specified by:
updateStyleManagerin interfaceDrawing
-
reshapeInLocal
public void reshapeInLocal(javafx.scene.transform.Transform transform) Description copied from interface:FigureAttempts to change the local bounds of the figure.The figure may choose to only partially change its local bounds.
- Specified by:
reshapeInLocalin interfaceFigure- Parameters:
transform- the desired transformation in local coordinates
-
reshapeInLocal
Description copied from interface:FigureAttempts to change the local bounds of the figure.See {#link #reshapeInLocal(Transform)} for a description of this method.
This method takes parameters as
CssSizes. This can be used to avoid rounding errors when the figure is reshaped in non-pixel units.This method can forward a call to
Figure.reshapeInLocal(Transform)using the following code:void reshapeInLocal(CssSize x, CssSize y, CssSize width, CssSize height) { Transform tx = Transforms.createReshapeTransform(getCssBoundsInLocal(), x, y, width, height); reshapeInLocal(tx); }- Specified by:
reshapeInLocalin interfaceFigure- Parameters:
x- desired x-position in parent coordinatesy- desired y-position in parent coordinateswidth- desired width in parent coordinates, may be negativeheight- desired height in parent coordinates, may be negative
-
stylesheetChanged
Description copied from interface:FigureThis method is invoked on a figure byDrawingModelwhen it determines that the figure needs to apply its stylesheet again.The default implementation of this method calls
Figure.updateCss(org.jhotdraw8.draw.render.RenderContext).- Specified by:
stylesheetChangedin interfaceFigure- Parameters:
ctx- the render context (optional)
-
updateNode
Description copied from interface:FigureThis method is invoked by aRenderContext, when it needs to update the node which represents the scene graph in the figure.A figure which is composed from child figures, must addChild the nodes of its getChildren to its node. This ensures that coordinate space transformations of the composed figure are properly propagated to its getChildren.
public void updateNode(RenderContext rc, Node n) { ObservableList<Node> group = ((Group) n).getChildren(); group.clear(); for (Figure child : children()) { group.addChild(rc.getNode(child)); }A figure may be shown in multiple
RenderContexts. EachRenderContextuses this method to update the a JavaFX node for the figure.Note that the figure must retrieve the JavaFX node from other figures from the render context by invoking
rc.getNode(child)rather than creating new nodes usingchild.createNode(rc). This convention allows to implement a cache in the render context for the Java FX node. Also, render contexts like a drawing view need to associate input events on Java FX nodes to the corresponding figure.This figure does not keep track of changes that require node updates.
DrawingModelto manage node updates.- Specified by:
updateNodein interfaceFigure- Parameters:
ctx- the render contextn- the node which was created withFigure.createNode(org.jhotdraw8.draw.render.RenderContext)
-
updateBackground
-
isSuitableParent
Description copied from interface:FigureThis method returns whether the provided figure is a suitable parent for this figure.- Specified by:
isSuitableParentin interfaceFigure- Specified by:
isSuitableParentin interfaceTreeNode<Figure>- Parameters:
newParent- The new parent figure.- Returns:
- true if
newParentis an acceptable parent
-