Package org.biojava.bio.gui.sequence
Class AbstractBeadRenderer
- java.lang.Object
-
- org.biojava.utils.AbstractChangeable
-
- org.biojava.bio.gui.sequence.AbstractBeadRenderer
-
- All Implemented Interfaces:
Serializable
,BeadFeatureRenderer
,FeatureRenderer
,Changeable
- Direct Known Subclasses:
EllipticalBeadRenderer
,RectangularBeadRenderer
,RoundRectangularBeadRenderer
public abstract class AbstractBeadRenderer extends AbstractChangeable implements BeadFeatureRenderer, Serializable
AbstractBeadRenderer
is a an abstract base class for the creation ofFeatureRenderer
s which use a 'string of beads' metaphor for displaying features. Each subclass ofAbstractBeadRenderer
should override the abstract methodrenderBead()
and provide the drawing routine for its particular bead type.A concrete
BeadFeatureRenderer
may render a series of features in more than one style by delegating to otherBeadFeatureRenderer
s for the additional style(s). This is achieved using thesetDelegateRenderer()
method which associates anOptimizableFilter
with anotherBeadFeatureRenderer
. Any feature accepted by the filter is rendered with that renderer, while the remainder are rendered by the current renderer.- Since:
- 1.2
- Author:
- Keith James, Paul Seed
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected double
beadDepth
protected double
beadDisplacement
protected Paint
beadFill
protected Paint
beadOutline
protected Stroke
beadStroke
protected Map
delegates
protected Map
delegationCache
static ChangeType
DEPTH
ConstantDEPTH
indicating a change to the depth of the renderer.static ChangeType
DISPLACEMENT
ConstantDISPLACEMENT
indicating a change to the Y-axis displacement of the features.static ChangeType
FILL
ConstantFILL
indicating a change to the fill of the features.static ChangeType
OUTLINE
ConstantOUTLINE
indicating a change to the outline paint of the features.static ChangeType
STROKE
ConstantSTROKE
indicating a change to the outline stroke of the features.
-
Constructor Summary
Constructors Constructor Description AbstractBeadRenderer()
Creates a newAbstractBeadRenderer
with no delegates.AbstractBeadRenderer(double beadDepth, double beadDisplacement, Paint beadOutline, Paint beadFill, Stroke beadStroke)
Creates a newAbstractBeadRenderer
object.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description double
getBeadDepth()
getBeadDepth
returns the depth of a single bead produced by this renderer.double
getBeadDisplacement()
getBeadDisplacement
returns the displacement of beads from the centre line of the renderer.Paint
getBeadFill()
getBeadFill
returns the bead fill paint.Paint
getBeadOutline()
getBeadOutline
returns the bead outline paint.Stroke
getBeadStroke()
getBeadStroke
returns the bead outline stroke.double
getDepth(SequenceRenderContext context)
getDepth
calculates the depth required by this renderer to display its beads.FeatureHolder
processMouseEvent(FeatureHolder holder, SequenceRenderContext context, MouseEvent mEvent)
processMouseEvent
defines the behaviour on revieving a mouse event.void
removeDelegateRenderer(OptimizableFilter filter)
removeDelegateRenderer
removes any association of the givenOptimizableFilter
with aBeadFeatureRenderer
.abstract void
renderBead(Graphics2D g2, Feature f, SequenceRenderContext context)
renderBead
should be overridden by the concreteBeadRenderer
.void
renderFeature(Graphics2D g2, Feature f, SequenceRenderContext context)
renderFeature
draws a feature using the supplied graphics context.void
setBeadDepth(double depth)
setBeadDepth
sets the depth of a single bead produced by this renderer.void
setBeadDisplacement(double displacement)
setBeadDisplacement
sets the displacement of beads from the centre line of the renderer.void
setBeadFill(Paint fill)
setBeadFill
sets the bead fill paint.void
setBeadOutline(Paint outline)
setBeadOutline
sets the bead outline paint.void
setBeadStroke(Stroke stroke)
setBeadStroke
sets the bead outline stroke.void
setDelegateRenderer(OptimizableFilter filter, BeadFeatureRenderer renderer)
setDelegateRenderer
associates anOptimizableFilter
with aBeadFeatureRenderer
.-
Methods inherited from class org.biojava.utils.AbstractChangeable
addChangeListener, addChangeListener, generateChangeSupport, getChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener
-
-
-
-
Field Detail
-
DISPLACEMENT
public static final ChangeType DISPLACEMENT
ConstantDISPLACEMENT
indicating a change to the Y-axis displacement of the features.
-
DEPTH
public static final ChangeType DEPTH
ConstantDEPTH
indicating a change to the depth of the renderer.
-
OUTLINE
public static final ChangeType OUTLINE
ConstantOUTLINE
indicating a change to the outline paint of the features.
-
STROKE
public static final ChangeType STROKE
ConstantSTROKE
indicating a change to the outline stroke of the features.
-
FILL
public static final ChangeType FILL
ConstantFILL
indicating a change to the fill of the features.
-
beadDepth
protected double beadDepth
-
beadDisplacement
protected double beadDisplacement
-
beadOutline
protected Paint beadOutline
-
beadStroke
protected Stroke beadStroke
-
delegationCache
protected Map delegationCache
-
-
Constructor Detail
-
AbstractBeadRenderer
public AbstractBeadRenderer()
Creates a newAbstractBeadRenderer
with no delegates. It will render all features itself, using its own style settings.
-
AbstractBeadRenderer
public AbstractBeadRenderer(double beadDepth, double beadDisplacement, Paint beadOutline, Paint beadFill, Stroke beadStroke)
Creates a newAbstractBeadRenderer
object.- Parameters:
beadDepth
- adouble
.beadDisplacement
- adouble
.beadOutline
- aPaint
.beadFill
- aPaint
.beadStroke
- aStroke
.
-
-
Method Detail
-
processMouseEvent
public FeatureHolder processMouseEvent(FeatureHolder holder, SequenceRenderContext context, MouseEvent mEvent)
processMouseEvent
defines the behaviour on revieving a mouse event.- Specified by:
processMouseEvent
in interfaceFeatureRenderer
- Parameters:
holder
- aFeatureHolder
.context
- aSequenceRenderContext
.mEvent
- aMouseEvent
.- Returns:
- a
FeatureHolder
.
-
renderFeature
public void renderFeature(Graphics2D g2, Feature f, SequenceRenderContext context)
renderFeature
draws a feature using the supplied graphics context. The rendering may be delegated to anotherFeatureRenderer
instance.- Specified by:
renderFeature
in interfaceFeatureRenderer
- Parameters:
g2
- aGraphics2D
context.f
- aFeature
to render.context
- aSequenceRenderContext
context.
-
setDelegateRenderer
public void setDelegateRenderer(OptimizableFilter filter, BeadFeatureRenderer renderer) throws IllegalArgumentException
setDelegateRenderer
associates anOptimizableFilter
with aBeadFeatureRenderer
. Any feature accepted by the filter will be passed to the associated renderer for drawing. TheOptimizableFilter
s should be disjoint with respect to each other (a feature may not be rendered more than once).- Specified by:
setDelegateRenderer
in interfaceBeadFeatureRenderer
- Parameters:
filter
- anOptimizableFilter
.renderer
- aBeadFeatureRenderer
.- Throws:
IllegalArgumentException
- if the filter is not disjoint with existing delegate filters.
-
removeDelegateRenderer
public void removeDelegateRenderer(OptimizableFilter filter)
removeDelegateRenderer
removes any association of the givenOptimizableFilter
with aBeadFeatureRenderer
.- Parameters:
filter
- anOptimizableFilter
.
-
getDepth
public double getDepth(SequenceRenderContext context)
getDepth
calculates the depth required by this renderer to display its beads. It recurses through its delegate renderers and returns the highest value. Concrete renderers should override this method and supply code to calculate their own depth. If a subclass needs to know the depth of its delegates (as is likely if it has any) they can call this method usingsuper.getDepth()
.- Specified by:
getDepth
in interfaceFeatureRenderer
- Parameters:
context
- aSequenceRenderContext
.- Returns:
- a
double
.
-
getBeadDepth
public double getBeadDepth()
getBeadDepth
returns the depth of a single bead produced by this renderer.- Specified by:
getBeadDepth
in interfaceBeadFeatureRenderer
- Returns:
- a
double
.
-
setBeadDepth
public void setBeadDepth(double depth) throws ChangeVetoException
setBeadDepth
sets the depth of a single bead produced by this renderer.- Parameters:
depth
- adouble
.- Throws:
ChangeVetoException
- if an error occurs.
-
getBeadDisplacement
public double getBeadDisplacement()
getBeadDisplacement
returns the displacement of beads from the centre line of the renderer. A positive value indicates displacment downwards (for horizontal renderers) or to the right (for vertical renderers).- Specified by:
getBeadDisplacement
in interfaceBeadFeatureRenderer
- Returns:
- a
double
.
-
setBeadDisplacement
public void setBeadDisplacement(double displacement) throws ChangeVetoException
setBeadDisplacement
sets the displacement of beads from the centre line of the renderer. A positive value indicates displacment downwards (for horizontal renderers) or to the right (for vertical renderers).- Parameters:
displacement
- adouble
.- Throws:
ChangeVetoException
- if an error occurs.
-
getBeadOutline
public Paint getBeadOutline()
getBeadOutline
returns the bead outline paint.- Returns:
- a
Paint
.
-
setBeadOutline
public void setBeadOutline(Paint outline) throws ChangeVetoException
setBeadOutline
sets the bead outline paint.- Parameters:
outline
- aPaint
.- Throws:
ChangeVetoException
- if an error occurs.
-
getBeadStroke
public Stroke getBeadStroke()
getBeadStroke
returns the bead outline stroke.- Returns:
- a
Stroke
.
-
setBeadStroke
public void setBeadStroke(Stroke stroke) throws ChangeVetoException
setBeadStroke
sets the bead outline stroke.- Parameters:
stroke
- aStroke
.- Throws:
ChangeVetoException
- if an error occurs.
-
getBeadFill
public Paint getBeadFill()
getBeadFill
returns the bead fill paint.- Returns:
- a
Paint
.
-
setBeadFill
public void setBeadFill(Paint fill) throws ChangeVetoException
setBeadFill
sets the bead fill paint.- Parameters:
fill
- aPaint
.- Throws:
ChangeVetoException
- if an error occurs.
-
renderBead
public abstract void renderBead(Graphics2D g2, Feature f, SequenceRenderContext context)
renderBead
should be overridden by the concreteBeadRenderer
.- Specified by:
renderBead
in interfaceBeadFeatureRenderer
- Parameters:
g2
- aGraphics2D
.f
- aFeature
to render.context
- aSequenceRenderContext
context.
-
-