public class PanelNodeStyleRenderer extends Object implements INodeStyleRenderer, IShapeGeometry, IBoundsProvider, IVisibilityTestable, IMarqueeTestable, IHitTestable, ILookup, IVisualCreator
INodeStyle renderer implementation that draws a simple floating panel with a slight
gradient, a thin border and a simple drop shadow.PanelNodeStyleEMPTY, UNBOUNDEDALWAYS, NEVERALWAYS, NEVERALWAYS, NEVER| Constructor and Description |
|---|
PanelNodeStyleRenderer()
Creates a new instance of this style.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
configure()
Prepares this instance for subsequent calls after the style and node have been initialized.
|
Node |
createVisual(IRenderContext context)
This method is called by the framework to create a
Node that will be included into the IRenderContext. |
protected boolean |
drawShadow()
Determines whether to draw the drop shadow.
|
RectD |
getBounds(ICanvasContext context)
Returns a tight rectangular area where the whole rendering would fit into.
|
IBoundsProvider |
getBoundsProvider(INode node,
INodeStyle style)
|
protected Color |
getColor()
Retrieves the color from the style.
|
ILookup |
getContext(INode node,
INodeStyle style)
|
IHitTestable |
getHitTestable(INode node,
INodeStyle style)
|
PointD |
getIntersection(PointD inner,
PointD outer)
|
IRectangle |
getLayout()
Returns the
Layout of the node this renderer is currently configured for. |
IMarqueeTestable |
getMarqueeTestable(INode node,
INodeStyle style)
|
protected INode |
getNode()
Gets the currently configured node.
|
GeneralPath |
getOutline()
Returns the outline of the shape using the node's
Layout. |
IShapeGeometry |
getShapeGeometry(INode node,
INodeStyle style)
|
protected PanelNodeStyle |
getStyle()
Gets the currently configured style.
|
IVisibilityTestable |
getVisibilityTestable(INode node,
INodeStyle style)
|
IVisualCreator |
getVisualCreator(INode node,
INodeStyle style)
|
boolean |
isHit(IInputModeContext context,
PointD location)
|
boolean |
isInBox(IInputModeContext context,
RectD rectangle)
|
boolean |
isInside(PointD location)
Checks whether the given coordinate lies within the shape's geometric bounds.
|
boolean |
isVisible(ICanvasContext context,
RectD rectangle)
Determines whether an element might intersect the visible region for a given context.
|
<TLookup> TLookup |
lookup(Class<TLookup> type)
Returns an instance that implements the given type or
null. |
protected void |
setNode(INode value)
Sets the currently configured node.
|
protected void |
setStyle(PanelNodeStyle value)
Sets the currently configured style.
|
Node |
updateVisual(IRenderContext context,
Node oldVisual)
This method updates or replaces a previously created
Node for inclusion in the IRenderContext. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitfromRectanglecreatecreateDictionaryLookup, createDynamic, createSingle, createSingle, createWrapped, lookup, lookup, safeLookuppublic PanelNodeStyleRenderer()
protected void configure()
Upon invocation the Style and Node properties have been populated by the
getVisualCreator(INode, INodeStyle), getBoundsProvider(INode, INodeStyle),
getHitTestable(INode, INodeStyle), or getMarqueeTestable(INode, INodeStyle) methods.
This is an empty implementation. Subclasses might have to override this method.
public Node createVisual(IRenderContext context)
IVisualCreatorNode that will be included into the IRenderContext.
CanvasControl uses this interface through the ICanvasObjectDescriptor
to populate the visual canvas object tree.
createVisual in interface IVisualCreatorcontext - The context that describes where the visual will be used.null.IVisualCreator.updateVisual(IRenderContext, Node)protected boolean drawShadow()
true, always.public RectD getBounds(ICanvasContext context)
IBoundsProvider
If calculating the bounds is too expensive or the rendering is not bound to a certain area, this method may return
RectD.INFINITE. If nothing is rendered, this method should return an empty rectangle, where either or both
the width and height is non-positive or RectD.EMPTY.
getBounds in interface IBoundsProvidercontext - the context to calculate the bounds forRectD.EMPTY to indicate an unbound areapublic IBoundsProvider getBoundsProvider(INode node, INodeStyle style)
getBoundsProvider in interface INodeStyleRenderernode - The node to retrieve the bounds provider for. The value will be stored in the Node property.style - The style to associate with the node. The value will be stored in the Style property.thisgetBounds(ICanvasContext)protected Color getColor()
public ILookup getContext(INode node, INodeStyle style)
style and node parameters, does not call configure() and returns
this.
As this method may be called often it will not automatically call configure(), instead subclasses should ensure
that in the lookup(Class) method call they should call configure() only if needed, i.e. if they decide
to return this or an instance that depends on a correctly configured this.
getContext in interface INodeStyleRenderernode - The node to query the context for. The value will be stored in the Node property.style - The style to associate with the node. The value will be stored in the Style property.thislookup(Class)public IHitTestable getHitTestable(INode node, INodeStyle style)
getHitTestable in interface INodeStyleRenderernode - The node to query hit test with. The value will be stored in the Node property.style - The style to associate with the node. The value will be stored in the Style property.thisisHit(IInputModeContext, PointD)public PointD getIntersection(PointD inner, PointD outer)
node using the Style.
This implementation returns the intersection for the Layout.
getIntersection in interface IShapeGeometryinner - The first point of the line that is inside the shape.outer - The second point of the line that is outside the shape.public final IRectangle getLayout()
Layout of the node this renderer is currently configured for.
Returns Node.Layout.
public IMarqueeTestable getMarqueeTestable(INode node, INodeStyle style)
getMarqueeTestable in interface INodeStyleRenderernode - The node to query marquee intersection tests. The value will be stored in the Node property.style - The style to associate with the node. The value will be stored in the Style property.thisisInBox(IInputModeContext, RectD)protected final INode getNode()
setNode(INode)public GeneralPath getOutline()
Layout.getOutline in interface IShapeGeometrypublic IShapeGeometry getShapeGeometry(INode node, INodeStyle style)
getShapeGeometry in interface INodeStyleRenderernode - The node to retrieve the shape geometry for. The value will be stored in the Node property.style - The style to associate with the node. The value will be stored in the Style property.thisisInside(PointD),
getIntersection(PointD, PointD)protected final PanelNodeStyle getStyle()
setStyle(PanelNodeStyle)public IVisibilityTestable getVisibilityTestable(INode node, INodeStyle style)
style and node parameters, does not call configure() and returns
this.
Unlike most of the other methods this implementation does not call configure(). If the subclass
implementation depends on this instance to be configured, it needs to call Configure in
isVisible(ICanvasContext, RectD).
getVisibilityTestable in interface INodeStyleRenderernode - The node to query visibility tests. The value will be stored in the Node property.style - The style to associate with the node. The value will be stored in the Style property.thisisVisible(ICanvasContext, RectD)public IVisualCreator getVisualCreator(INode node, INodeStyle style)
getVisualCreator in interface INodeStyleRenderernode - The node to retrieve the IVisualCreator for. The value will be stored in the Node property.style - The style to associate with the node. The value will be stored in the Style property.thiscreateVisual(IRenderContext),
updateVisual(IRenderContext, Node)public boolean isHit(IInputModeContext context, PointD location)
node using the current Style.
This implementation uses the Layout to determine whether the node has been hit. The check is
delegated to RectD.contains(PointD, double) using HitTestRadius as the
last argument.
isHit in interface IHitTestablecontext - the context the hit test is performed inlocation - the coordinates in world coordinate systempublic boolean isInBox(IInputModeContext context, RectD rectangle)
node using the current Style for an intersection with the given box.
This implementation uses the Layout to determine whether the node is in the box.
isInBox in interface IMarqueeTestablecontext - the current input mode contextrectangle - the box describing the marquee's boundstrue if the node is considered to be captured by the marqueepublic boolean isInside(PointD location)
This implementation checks for containment in the Layout.
isInside in interface IShapeGeometrylocation - The point to test.public boolean isVisible(ICanvasContext context, RectD rectangle)
IVisibilityTestable
Conservative implementations can always return true.
isVisible in interface IVisibilityTestablecontext - The context to determine the visibility for.rectangle - The visible region clip.false if and only if it is safe not to paint the element because it would not affect the given clipping region.public <TLookup> TLookup lookup(Class<TLookup> type)
ILookupnull.
Typically, this method will be called in order to obtain a different view or
aspect of the current instance. This is quite similar to casting or using
a super type or interface of this instance, but is not limited to inheritance or
compile time constraints. An instance implementing this method is not
required to return non-null implementations for the types, nor does it
have to return the same instance any time. Also it depends on the
type and context whether the instance returned stays up to date or needs to
be reobtained for subsequent use.protected final void setNode(INode value)
value - The Node to set.getNode()protected final void setStyle(PanelNodeStyle value)
value - The Style to set.getStyle()public Node updateVisual(IRenderContext context, Node oldVisual)
IVisualCreatorNode for inclusion in the IRenderContext.
The CanvasControl uses this method to give implementations a chance to update an existing
Visual that has previously been created by the same instance during a call to IVisualCreator.createVisual(IRenderContext).
Implementation may update the oldVisual and return that same reference, or create a new visual and return the
new instance or null.
updateVisual in interface IVisualCreatorcontext - The context that describes where the visual will be used in.oldVisual - The visual instance that had been returned the last time the IVisualCreator.createVisual(IRenderContext) method was called on
this instance.oldVisual, if this instance modified the visual, or a new visual that should replace the existing one in the
canvas object visual tree.IVisualCreator.createVisual(IRenderContext),
ICanvasObjectDescriptor,
CanvasControl