Class AbstractBeadRenderer

  • All Implemented Interfaces:
    java.io.Serializable, BeadFeatureRenderer, FeatureRenderer, Changeable
    Direct Known Subclasses:
    EllipticalBeadRenderer, RectangularBeadRenderer, RoundRectangularBeadRenderer

    public abstract class AbstractBeadRenderer
    extends AbstractChangeable
    implements BeadFeatureRenderer, java.io.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 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 java.awt.Paint beadOutline
      • beadFill

        protected java.awt.Paint beadFill
      • beadStroke

        protected java.awt.Stroke beadStroke
      • delegates

        protected java.util.Map delegates
      • delegationCache

        protected java.util.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,
                                    java.awt.Paint beadOutline,
                                    java.awt.Paint beadFill,
                                    java.awt.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,
                                               java.awt.event.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​(java.awt.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 java.lang.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:
        java.lang.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 java.awt.Paint getBeadOutline()
        getBeadOutline returns the bead outline paint.
        Returns:
        a Paint.
      • setBeadOutline

        public void setBeadOutline​(java.awt.Paint outline)
                            throws ChangeVetoException
        setBeadOutline sets the bead outline paint.
        Parameters:
        outline - a Paint.
        Throws:
        ChangeVetoException - if an error occurs.
      • getBeadStroke

        public java.awt.Stroke getBeadStroke()
        getBeadStroke returns the bead outline stroke.
        Returns:
        a Stroke.
      • setBeadStroke

        public void setBeadStroke​(java.awt.Stroke stroke)
                           throws ChangeVetoException
        setBeadStroke sets the bead outline stroke.
        Parameters:
        stroke - a Stroke.
        Throws:
        ChangeVetoException - if an error occurs.
      • getBeadFill

        public java.awt.Paint getBeadFill()
        getBeadFill returns the bead fill paint.
        Returns:
        a Paint.
      • setBeadFill

        public void setBeadFill​(java.awt.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​(java.awt.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.