Class PairwiseSequencePanel

  • All Implemented Interfaces:
    ImageObserver, MenuContainer, Serializable, SwingConstants, PairwiseRenderContext, SequenceRenderContext, Changeable

    public class PairwiseSequencePanel
    extends JComponent
    implements PairwiseRenderContext, Changeable, Serializable

    A PairwiseSequencePanel is a panel that displays a pair of sequences; one sequence (the primary) may be either left-to-right (HORIZONTAL) or from top-to-bottom (VERTICAL). The other sequence (secondary) will then occupy the remaining direction. It has an associated scale which is the number of pixels per symbol and applies to both sequences. The leading and trailing borders apply to the primary sequence only.

    The primary purpose of this component is to provide a means for representing graphically comparisons between two sequences. This could be anything from traditional dotplots (or variants created with lines) to a more complex layered plot involving superimposed renderers.

    Each sequence has a translation which is the number of Symbols to skip before rendering starts. In order to produce a scrolling effect, the setSymbolTranslation or setSecondarySymbolTranslation method may be hooked up to an Adjustable such as JScrollBar or to an event listener.

    The exact number of Symbols rendered in each sequence depends on the dimensions of the panel and the scale. Resizing the panel will cause the number of Symbols rendered to change accordingly.

    The panel will fill its background to the Color defined by the setBackground() method provided that it has been defined as opaque using setOpaque().

    The change event handling code is based on the original panel and other BioJava components by Matthew and Thomas.

    Since:
    1.2
    Author:
    Keith James, Matthew Pocock
    See Also:
    Serialized Form
    • Field Detail

      • RENDERER

        public static final ChangeType RENDERER
        Constant RENDERER is a ChangeType which indicates a change to the renderer, requiring a layout update.
      • TRANSLATION

        public static final ChangeType TRANSLATION
        Constant TRANSLATION is a ChangeType which indicates a change to the translation, requiring a paint update.
    • Constructor Detail

      • PairwiseSequencePanel

        public PairwiseSequencePanel()
        Creates a new PairwiseSequencePanel with the default settings (primary sequence direction HORIZONTAL, scale 10.0 pixels per symbol, symbol translation 0, secondary symbol translation 0, leading border 0.0, trailing border 0.0, 12 point sanserif font).
    • Method Detail

      • getSequence

        public Sequence getSequence()
        getSequence returns the entire Sequence currently being rendered.
        Returns:
        a Sequence.
      • setSequence

        public void setSequence​(Sequence sequence)
        setSequence sets the Sequence to be rendered.
        Parameters:
        sequence - a Sequence.
      • getSecondarySequence

        public Sequence getSecondarySequence()
        getSecondarySequence returns the entire secondary Sequence currently being rendered.
        Returns:
        a Sequence.
      • setSecondarySequence

        public void setSecondarySequence​(Sequence sequence)
        setSecondarySequence sets the secondary Sequence to be rendered.
        Parameters:
        sequence - a Sequence.
      • getRange

        public RangeLocation getRange()
        getRange returns a RangeLocation representing the region of the sequence currently being rendered. This is calculated from the size of the PairwiseSequencePanel, the current rendering translation and the current scale. The value will therefore change when the PairwiseSequencePanel is resized or "scrolled" by changing the translation.
        Specified by:
        getRange in interface SequenceRenderContext
        Returns:
        a RangeLocation.
      • getSecondaryRange

        public RangeLocation getSecondaryRange()
        getSecondaryRange returns a RangeLocation representing the region of the secondary sequence currently being rendered. This is calculated from the size of the PairwiseSequencePanel, the current rendering translation and the current scale. The value will therefore change when the PairwiseSequencePanel is resized or "scrolled" by changing the translation.
        Specified by:
        getSecondaryRange in interface PairwiseRenderContext
        Returns:
        a RangeLocation.
      • getDirection

        public int getDirection()
        getDirection returns the direction in which this context expects the sequence to be rendered - HORIZONTAL or VERTICAL.
        Specified by:
        getDirection in interface SequenceRenderContext
        Returns:
        an int.
      • setScale

        public void setScale​(double scale)
        setScale sets the scale in pixels per Symbol.
        Parameters:
        scale - a double.
      • getSymbolTranslation

        public int getSymbolTranslation()
        getSymbolTranslation returns the current translation in Symbols which will be applied when rendering. The sequence will be rendered starting at this translation. Values may be from 0 to the length of the rendered sequence.
        Returns:
        an int.
      • setSymbolTranslation

        public void setSymbolTranslation​(int translation)
                                  throws IndexOutOfBoundsException
        setSymbolTranslation sets the translation in Symbols which will be applied when rendering. The sequence will be rendered starting at that translation. Values may be from 0 to the length of the rendered sequence.
        Parameters:
        translation - an int.
        Throws:
        IndexOutOfBoundsException - if the translation is greater than the sequence length.
      • getSecondarySymbolTranslation

        public int getSecondarySymbolTranslation()
        getSecondarySymbolTranslation returns the current translation in Symbols which will be applied when rendering. The secondary sequence will be rendered starting at this translation. Values may be from 0 to the length of the rendered sequence.
        Returns:
        an int.
      • setSecondarySymbolTranslation

        public void setSecondarySymbolTranslation​(int translation)
                                           throws IndexOutOfBoundsException
        setSecondarySymbolTranslation sets the translation in Symbols which will be applied when rendering. The secondary sequence will be rendered starting at that translation. Values may be from 0 to the length of the rendered sequence.
        Parameters:
        translation - an int.
        Throws:
        IndexOutOfBoundsException - if the translation is greater than the sequence length.
      • getRenderingHints

        public RenderingHints getRenderingHints()
        getRenderingHints returns the RenderingHints currently being used by the Graphics2D instances of delegate renderers. If none is set, the constructor creates one with a null Map.
        Returns:
        a RenderingHints.
      • setRenderingHints

        public void setRenderingHints​(RenderingHints hints)
        setRenderingHints sets the RenderingHints which will be used by the Graphics2D instances of delegate renderers.
        Parameters:
        hints - a RenderingHints.
      • getVisibleSymbolCount

        public int getVisibleSymbolCount()
        getVisibleSymbolCount returns the maximum number of Symbols which can be rendered in the visible area (excluding all borders) of the PairwiseSequencePanel at the current scale. Note that if the translation is greater than 0, the actual number of Symbols rendered will be less.
        Returns:
        an int.
      • getVisibleSecondarySymbolCount

        public int getVisibleSecondarySymbolCount()
        getVisibleSecondarySymbolCount returns the maximum number of secondary Symbols which can be rendered in the visible area (excluding all borders) of the PairwiseSequencePanel at the current scale. Note that if the translation is greater than 0, the actual number of Symbols rendered will be less.
        Returns:
        an int.
      • resizeAndValidate

        public void resizeAndValidate()
        resizeAndValidate sets the minimum, preferred and maximum sizes of the component according to the current visible symbol count.
      • isUnchanging

        public boolean isUnchanging​(ChangeType ct)
        Description copied from interface: Changeable

        A particular ChangeType can never be raised by this Changeable.

        If this returns true, then it is guaranteed that change events of this type (and all child types) can never under any circumstances be fired by this Changeable instance. If it returns false, that does not mean that this type of event will or even can be raised, but that it is worth registering listeners incase.

        Specified by:
        isUnchanging in interface Changeable
        Parameters:
        ct - the ChangeType to check
        Returns:
        true if ChangeEvents of this type are guaranteed to never be fired
      • getChangeSupport

        protected ChangeSupport getChangeSupport​(ChangeType ct)
        getChangeSupport lazily instantiates a helper for change listeners.
        Parameters:
        ct - a ChangeType.
        Returns:
        a ChangeSupport object.
      • hasListeners

        protected boolean hasListeners()
        hasListeners returns true if there are active listeners for BioJava events.
        Returns:
        a boolean value.
      • isActive

        protected boolean isActive()
        isActive returns true if both the Sequences to be rendered and the PairwiseHomologyRenderer are not null.
        Returns:
        a boolean value.