org.biojava.bio.gui.sequence
Class AbstractBeadRenderer

java.lang.Object
  extended by org.biojava.utils.AbstractChangeable
      extended by 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 of FeatureRenderers which use a 'string of beads' metaphor for displaying features. Each subclass of AbstractBeadRenderer should override the abstract method renderBead() 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 other BeadFeatureRenderers for the additional style(s). This is achieved using the setDelegateRenderer() method which associates an OptimizableFilter with another BeadFeatureRenderer. 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
protected  double beadDepth
           
protected  double beadDisplacement
           
protected  Paint beadFill
           
protected  Paint beadOutline
           
protected  Stroke beadStroke
           
protected  Map delegates
           
protected  Map delegationCache
           
static ChangeType DEPTH
          Constant DEPTH indicating a change to the depth of the renderer.
static ChangeType DISPLACEMENT
          Constant DISPLACEMENT indicating a change to the Y-axis displacement of the features.
static ChangeType FILL
          Constant FILL indicating a change to the fill of the features.
static ChangeType OUTLINE
          Constant OUTLINE indicating a change to the outline paint of the features.
static ChangeType STROKE
          Constant STROKE indicating a change to the outline stroke of the features.
 
Constructor Summary
AbstractBeadRenderer()
          Creates a new AbstractBeadRenderer with no delegates.
AbstractBeadRenderer(double beadDepth, double beadDisplacement, Paint beadOutline, Paint beadFill, Stroke beadStroke)
          Creates a new AbstractBeadRenderer object.
 
Method Summary
 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 given OptimizableFilter with a BeadFeatureRenderer.
abstract  void renderBead(Graphics2D g2, Feature f, SequenceRenderContext context)
          renderBead should be overridden by the concrete BeadRenderer.
 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 an OptimizableFilter with a BeadFeatureRenderer.
 
Methods inherited from class org.biojava.utils.AbstractChangeable
addChangeListener, addChangeListener, generateChangeSupport, getChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DISPLACEMENT

public static final ChangeType DISPLACEMENT
Constant DISPLACEMENT indicating a change to the Y-axis displacement of the features.


DEPTH

public static final ChangeType DEPTH
Constant DEPTH indicating a change to the depth of the renderer.


OUTLINE

public static final ChangeType OUTLINE
Constant OUTLINE indicating a change to the outline paint of the features.


STROKE

public static final ChangeType STROKE
Constant STROKE indicating a change to the outline stroke of the features.


FILL

public static final ChangeType FILL
Constant FILL indicating a change to the fill of the features.


beadDepth

protected double beadDepth

beadDisplacement

protected double beadDisplacement

beadOutline

protected Paint beadOutline

beadFill

protected Paint beadFill

beadStroke

protected Stroke beadStroke

delegates

protected Map delegates

delegationCache

protected Map delegationCache
Constructor Detail

AbstractBeadRenderer

public AbstractBeadRenderer()
Creates a new AbstractBeadRenderer 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 new AbstractBeadRenderer object.

Parameters:
beadDepth - a double.
beadDisplacement - a double.
beadOutline - a Paint.
beadFill - a Paint.
beadStroke - a Stroke.
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 interface FeatureRenderer
Parameters:
holder - a FeatureHolder.
context - a SequenceRenderContext.
mEvent - a MouseEvent.
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 another FeatureRenderer instance.

Specified by:
renderFeature in interface FeatureRenderer
Parameters:
g2 - a Graphics2D context.
f - a Feature to render.
context - a SequenceRenderContext context.

setDelegateRenderer

public void setDelegateRenderer(OptimizableFilter filter,
                                BeadFeatureRenderer renderer)
                         throws IllegalArgumentException
setDelegateRenderer associates an OptimizableFilter with a BeadFeatureRenderer. Any feature accepted by the filter will be passed to the associated renderer for drawing. The OptimizableFilters should be disjoint with respect to each other (a feature may not be rendered more than once).

Specified by:
setDelegateRenderer in interface BeadFeatureRenderer
Parameters:
filter - an OptimizableFilter.
renderer - a BeadFeatureRenderer.
Throws:
IllegalArgumentException - if the filter is not disjoint with existing delegate filters.

removeDelegateRenderer

public void removeDelegateRenderer(OptimizableFilter filter)
removeDelegateRenderer removes any association of the given OptimizableFilter with a BeadFeatureRenderer.

Parameters:
filter - an OptimizableFilter.

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 using super.getDepth().

Specified by:
getDepth in interface FeatureRenderer
Parameters:
context - a SequenceRenderContext.
Returns:
a double.

getBeadDepth

public double getBeadDepth()
getBeadDepth returns the depth of a single bead produced by this renderer.

Specified by:
getBeadDepth in interface BeadFeatureRenderer
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 - a double.
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 interface BeadFeatureRenderer
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 - a double.
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 - a Paint.
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 - a Stroke.
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 - a Paint.
Throws:
ChangeVetoException - if an error occurs.

renderBead

public abstract void renderBead(Graphics2D g2,
                                Feature f,
                                SequenceRenderContext context)
renderBead should be overridden by the concrete BeadRenderer.

Specified by:
renderBead in interface BeadFeatureRenderer
Parameters:
g2 - a Graphics2D.
f - a Feature to render.
context - a SequenceRenderContext context.


Copyright © 2012 BioJava. All Rights Reserved.