## 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 of `FeatureRenderer`s 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 `BeadFeatureRenderer`s 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 `OptimizableFilter`s 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.