Class AbstractElbowLineConnectionWithMarkersFigure
- All Implemented Interfaces:
ConnectingFigure,Figure,LineConnectingFigure,NonTransformableFigure,PathIterableFigure,TransformCachingFigure,PropertyBean,StyleableBean,StyleablePropertyBean,TreeNode<Figure>
A subclass can hardcode the markers, or can implement one or multiple "markerable" interfaces
that allow user-defineable markers: MarkerStartableFigure, MarkerEndableFigure,
MarkerSegmentableFigure, MarkerMidableFigure.
- Author:
- Werner Randelshofer
-
Property Summary
Properties inherited from class org.jhotdraw8.draw.figure.AbstractLineConnectionFigure
connectedProperties 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.Figure
declaredAndInheritedKeys, JHOTDRAW_CSS_PREFIX, PARENT_PROPERTYFields inherited from interface org.jhotdraw8.draw.figure.LineConnectingFigure
END, END_CONNECTOR, END_TARGET, END_X, END_Y, START, START_CONNECTOR, START_TARGET, START_X, START_YFields inherited from interface org.jhotdraw8.draw.figure.TransformCachingFigure
CACHE -
Constructor Summary
ConstructorsConstructorDescriptionAbstractElbowLineConnectionWithMarkersFigure(double startX, double startY, double endX, double endY) AbstractElbowLineConnectionWithMarkersFigure(@NonNull javafx.geometry.Point2D start, @NonNull javafx.geometry.Point2D end) -
Method Summary
Modifier and TypeMethodDescriptionvoidcreateHandles(@NonNull HandleType handleType, @NonNull List<Handle> list) Creates handles of the specified level and adds them to the provided list.@NonNull javafx.scene.NodecreateNode(@NonNull RenderContext drawingView) This method is invoked by aRenderContext, when it needs a node to create a JavaFX scene graph for a figure.The offset of the elbow from the end of the line.abstract doubleabstract doubleabstract doubleabstract doublevoidlayout(@NonNull RenderContext ctx) Updates the layout of this figure, based on the layout of its children and the layout of observed layout subjects.protected voidupdateEndMarkerNode(@NonNull RenderContext ctx, @NonNull javafx.scene.shape.Path node) This method can be overridden by a subclass to apply styles to the marker node.protected voidupdateLineNode(@NonNull RenderContext ctx, @NonNull javafx.scene.shape.Polyline node) This method can be overridden by a subclass to apply styles to the line node.protected voidupdateMarkerNode(@NonNull RenderContext ctx, @NonNull javafx.scene.Group group, @NonNull javafx.scene.shape.Path markerNode, @NonNull PointAndDerivative pd, @Nullable String svgString, double markerScaleFactor) voidupdateNode(@NonNull RenderContext ctx, @NonNull javafx.scene.Node node) This method is invoked by aRenderContext, when it needs to update the node which represents the scene graph in the figure.protected voidupdateStartMarkerNode(@NonNull RenderContext ctx, @NonNull javafx.scene.shape.Path node) This method can be overridden by a subclass to apply styles to the marker node.Methods inherited from class org.jhotdraw8.draw.figure.AbstractLineConnectionFigure
connectedProperty, doAddedToDrawing, doRemovedFromDrawing, getCssLayoutBounds, getLayoutSubjects, isConnected, isLayoutable, onPropertyChanged, removeAllLayoutSubjects, removeLayoutSubject, reshapeInLocal, reshapeInLocal, setEndConnection, setStartConnection, updateConnectedPropertyMethods inherited from class org.jhotdraw8.draw.figure.AbstractLeafFigure
getChildren, isAllowsChildren, isSuitableChild, isSuitableParentMethods inherited from class org.jhotdraw8.draw.figure.AbstractFigure
addedToDrawing, createKeyMap, getCachedLocalToParent, getCachedLocalToWorld, getCachedParentToLocal, getCachedParentToWorld, getCachedWorldToLocal, getCachedWorldToParent, getDrawing, getLayoutObservers, getPropertyChangeListeners, getReadOnlyLayoutObservers, getStyledNonNull, hasPropertyChangeListeners, parentProperty, removedFromDrawing, 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.ConnectingFigure
canConnectMethods inherited from interface org.jhotdraw8.draw.figure.Figure
addChild, addedToDrawing, disconnect, firePropertyChangeEvent, firePropertyChangeEvent, getBoundsInLocal, getBoundsInParent, getBoundsInWorld, getCenterInLocal, getCenterInParent, getChildren, getCssLayoutBounds, getDrawing, getLayer, getLayoutBounds, getLayoutBoundsInParent, getLayoutBoundsInWorld, getLayoutObservers, getLayoutSubjects, getParent, getPreferredAspectRatio, getPropertyChangeListeners, getReadOnlyLayoutObservers, getRoot, getStyleableParent, getSupportedKeys, getVisualBounds, getVisualBoundsInWorld, hasPropertyChangeListeners, isAllowsChildren, isDecomposable, isDeletable, isDeletWithLastLayoutSubject, isEditable, isEditableKey, isGroupReshapeableWith, isLayoutable, isSelectable, isShowing, isSuitableChild, isSuitableParent, isSupportedKey, isVisible, layoutChanged, layoutObserverChanged, layoutSubjectChanged, localToParent, localToWorld, localToWorld, parentProperty, propertyChanged, removeAllLayoutSubjects, removeChild, removedFromDrawing, removeLayoutSubject, reshapeInLocal, reshapeInLocal, reshapeInLocal, setParent, stylesheetChanged, transformChanged, translateInLocal, translateInParent, updateCss, worldToLocal, worldToLocal, worldToParent, worldToParentMethods inherited from interface org.jhotdraw8.draw.figure.LineConnectingFigure
getEndTargetPoint, getStartTargetPoint, isEndConnected, isStartConnectedMethods inherited from interface org.jhotdraw8.draw.figure.NonTransformableFigure
getLocalToParent, getParentToLocal, reshapeInParent, transformInLocal, transformInParentMethods 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, getTypeSelector, 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
getCachedLocalToParent, getCachedLocalToWorld, getCachedParentToLocal, getCachedParentToWorld, getCachedWorldToLocal, getCachedWorldToParent, getLocalToWorld, getParentToWorld, getWorldToLocal, getWorldToParent, invalidateTransforms, setCachedLocalToParent, setCachedLocalToWorld, setCachedParentToLocal, setCachedParentToWorld, setCachedWorldToLocal, setCachedWorldToParentMethods 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
-
AbstractElbowLineConnectionWithMarkersFigure
public AbstractElbowLineConnectionWithMarkersFigure() -
AbstractElbowLineConnectionWithMarkersFigure
-
AbstractElbowLineConnectionWithMarkersFigure
public AbstractElbowLineConnectionWithMarkersFigure(double startX, double startY, double endX, double endY)
-
-
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(@NonNull 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
-
createHandles
Description copied from interface:FigureCreates handles of the specified level and adds them to the provided list.- Specified by:
createHandlesin interfaceFigure- Parameters:
handleType- The desired handle typelist- The handles.
-
updateLineNode
protected void updateLineNode(@NonNull RenderContext ctx, @NonNull javafx.scene.shape.Polyline node) This method can be overridden by a subclass to apply styles to the line node.- Parameters:
ctx- the contextnode- the node
-
updateStartMarkerNode
protected void updateStartMarkerNode(@NonNull RenderContext ctx, @NonNull javafx.scene.shape.Path node) This method can be overridden by a subclass to apply styles to the marker node.- Parameters:
ctx- the contextnode- the node
-
updateEndMarkerNode
protected void updateEndMarkerNode(@NonNull RenderContext ctx, @NonNull javafx.scene.shape.Path node) This method can be overridden by a subclass to apply styles to the marker node.- Parameters:
ctx- the contextnode- the node
-
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(@NonNull 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 contextnode- the node which was created withFigure.createNode(org.jhotdraw8.draw.render.RenderContext)
-
updateMarkerNode
protected void updateMarkerNode(@NonNull RenderContext ctx, @NonNull javafx.scene.Group group, @NonNull javafx.scene.shape.Path markerNode, @NonNull PointAndDerivative pd, @Nullable String svgString, double markerScaleFactor) -
getPathIterator
public @NonNull PathIterator getPathIterator(@NonNull RenderContext ctx, @Nullable AffineTransform tx) - Specified by:
getPathIteratorin interfacePathIterableFigure
-
getStrokeCutStart
-
getStrokeCutEnd
-
getMarkerStartShape
-
getMarkerStartScaleFactor
public abstract double getMarkerStartScaleFactor() -
getMarkerEndShape
-
getMarkerEndScaleFactor
public abstract double getMarkerEndScaleFactor() -
getElbowOffset
The offset of the elbow from the end of the line.If the value is null, or less or equal 0, then a straight line is drawn instead of an elbow.
- Returns:
- an offset
-
layout
Description copied from interface:FigureUpdates the layout of this figure, based on the layout of its children and the layout of observed layout subjects.If the layout of this figure depends on the layout of other figures, then calling layout on this figure will only result in the correct result, if layout of the other figures has been performed first.
A figure does not keep track of changes that require layout updates. Use
DrawingModelto manage layout updates.The default implementation is empty.
To layout a drawing use
Drawing.layoutAll(RenderContext).
-