## org.biojava.bio.gui.sequence
Class PairwiseSequencePanel

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  org.biojava.bio.gui.sequence.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 `Symbol`s 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 `Symbol`s rendered in each sequence depends on the dimensions of the panel and the scale. Resizing the panel will cause the number of `Symbol`s 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

Nested Class Summary

Nested classes/interfaces inherited from class javax.swing.JComponent
`JComponent.AccessibleJComponent`

Nested classes/interfaces inherited from class java.awt.Container
`Container.AccessibleAWTContainer`

Nested classes/interfaces inherited from class java.awt.Component
`Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy`

Nested classes/interfaces inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
`SequenceRenderContext.Border`

Field Summary
`static ChangeType` `RENDERER` Constant `RENDERER` is a `ChangeType` which indicates a change to the renderer, requiring a layout update.
`static ChangeType` `TRANSLATION` Constant `TRANSLATION` is a `ChangeType` which indicates a change to the translation, requiring a paint update.

Fields inherited from class javax.swing.JComponent
`accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

Fields inherited from class java.awt.Component
`BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

Fields inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
`LAYOUT, REPAINT`

Fields inherited from interface javax.swing.SwingConstants
`BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`

Fields inherited from interface java.awt.image.ImageObserver
`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

Constructor Summary
`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 Summary
`void` `addChangeListener(ChangeListener cl)` `addChangeListener` adds a listener for all types of change.
`void` `addChangeListener(ChangeListener cl, ChangeType ct)` `addChangeListener` adds a listener for specific types of change.
`void` `addSequenceViewerListener(SequenceViewerListener svl)` `addSequenceViewerListener` adds a listener for mouse click `SequenceViewerEvent`s.
`void` `addSequenceViewerMotionListener(SequenceViewerMotionListener svml)` `addSequenceViewerMotionListener` adds a listener for mouse motion `SequenceViewerEvent`s.
`protected ChangeSupport` `getChangeSupport(ChangeType ct)` `getChangeSupport` lazily instantiates a helper for change listeners.
`int` `getDirection()` `getDirection` returns the direction in which this context expects the sequence to be rendered - HORIZONTAL or VERTICAL.
`FeatureHolder` `getFeatures()` `getFeatures` returns all of the `Feature`s belonging to the currently rendered `Sequence`.
`SequenceRenderContext.Border` `getLeadingBorder()` `getLeadingBorder` returns the leading border of the primary sequence.
`RangeLocation` `getRange()` `getRange` returns a `RangeLocation` representing the region of the sequence currently being rendered.
`PairwiseSequenceRenderer` `getRenderer()` `getRenderer` returns the current `PairwiseSequenceRenderer`.
`RenderingHints` `getRenderingHints()` `getRenderingHints` returns the `RenderingHints` currently being used by the `Graphics2D` instances of delegate renderers.
`double` `getScale()` `getScale` returns the scale in pixels per `Symbol`.
`int` `getSecondaryDirection()` `getSecondaryDirection` returns the direction in which this context expects the secondary sequence to be rendered - HORIZONTAL or VERTICAL.
`FeatureHolder` `getSecondaryFeatures()` `getSecondaryFeatures` returns all of the `Feature`s belonging to the currently rendered secondary `Sequence`.
`RangeLocation` `getSecondaryRange()` `getSecondaryRange` returns a `RangeLocation` representing the region of the secondary sequence currently being rendered.
`Sequence` `getSecondarySequence()` `getSecondarySequence` returns the entire secondary `Sequence` currently being rendered.
`SymbolList` `getSecondarySymbols()` `getSecondarySymbols` returns all of the `Symbol`s belonging to the currently rendered secondary `Sequence`.
`int` `getSecondarySymbolTranslation()` `getSecondarySymbolTranslation` returns the current translation in `Symbol`s which will be applied when rendering.
`Sequence` `getSequence()` `getSequence` returns the entire `Sequence` currently being rendered.
`SymbolList` `getSymbols()` `getSymbols` returns all of the `Symbol`s belonging to the currently rendered `Sequence`.
`int` `getSymbolTranslation()` `getSymbolTranslation` returns the current translation in `Symbol`s which will be applied when rendering.
`SequenceRenderContext.Border` `getTrailingBorder()` `getTrailingBorder` returns the trailing border of the primary sequence.
`int` `getVisibleSecondarySymbolCount()` `getVisibleSecondarySymbolCount` returns the maximum number of secondary `Symbol`s which can be rendered in the visible area (excluding all borders) of the `PairwiseSequencePanel` at the current scale.
`int` `getVisibleSymbolCount()` `getVisibleSymbolCount` returns the maximum number of `Symbol`s which can be rendered in the visible area (excluding all borders) of the `PairwiseSequencePanel` at the current scale.
`int` `graphicsToSecondarySequence(double graphicsPos)` `graphicsToSecondarySequence` converts a graphical position to a secondary sequence index.
`int` `graphicsToSecondarySequence(Point point)` `graphicsToSecondarySequence` converts a graphical position to a secondary sequence index.
`int` `graphicsToSequence(double graphicsPos)` `graphicsToSequence` converts a graphical position to a sequence index.
`int` `graphicsToSequence(Point2D point)` `graphicsToSequence` converts a graphical position to a sequence index.
`protected boolean` `hasListeners()` `hasListeners` returns true if there are active listeners for BioJava events.
`protected boolean` `isActive()` `isActive` returns true if both the `Sequence`s to be rendered and the `PairwiseHomologyRenderer` are not null.
`boolean` `isUnchanging(ChangeType ct)` A particular ChangeType can never be raised by this Changeable.
`void` `paintComponent(Graphics g)`
`void` `removeChangeListener(ChangeListener cl)` `removeChangeListener` removes a listener.
`void` `removeChangeListener(ChangeListener cl, ChangeType ct)` `removeChangeListener` removes a listener.
`void` `removeSequenceViewerListener(SequenceViewerListener svl)` `removeSequenceViewerListener` removes a listener for mouse click `SequenceViewerEvent`s.
`void` `removeSequenceViewerMotionListener(SequenceViewerMotionListener svml)` `addSequenceViewerMotionListener` removes a listener for mouse motion `SequenceViewerEvent`s.
`void` `resizeAndValidate()` `resizeAndValidate` sets the minimum, preferred and maximum sizes of the component according to the current visible symbol count.
`double` `secondarySequenceToGraphics(int sequencePos)` `secondarySequenceToGraphics` converts a sequence index to a graphical position.
`double` `sequenceToGraphics(int sequencePos)` `sequenceToGraphics` converts a sequence index to a graphical position.
`void` `setDirection(int direction)` `setDirection` sets the direction in which this context will render the sequence - HORIZONTAL or VERTICAL.
`void` `setRenderer(PairwiseSequenceRenderer renderer)` `setRenderer` sets the current `PairwiseSequenceRenderer`.
`void` `setRenderingHints(RenderingHints hints)` `setRenderingHints` sets the `RenderingHints` which will be used by the `Graphics2D` instances of delegate renderers.
`void` `setScale(double scale)` `setScale` sets the scale in pixels per `Symbol`.
`void` `setSecondarySequence(Sequence sequence)` `setSecondarySequence` sets the secondary `Sequence` to be rendered.
`void` `setSecondarySymbolTranslation(int translation)` `setSecondarySymbolTranslation` sets the translation in `Symbol`s which will be applied when rendering.
`void` `setSequence(Sequence sequence)` `setSequence` sets the `Sequence` to be rendered.
`void` `setSymbolTranslation(int translation)` `setSymbolTranslation` sets the translation in `Symbol`s which will be applied when rendering.

Methods inherited from class javax.swing.JComponent

`addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI`

Methods inherited from class java.awt.Container

`add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree`

Methods inherited from class java.awt.Component

`action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
`getFont`

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`.

### getSymbols

    public SymbolList getSymbols()

  `getSymbols` returns all of the `Symbol`s belonging to the currently rendered `Sequence`.

  Specified by:
    `getSymbols` in interface `SequenceRenderContext`
  Returns:
    a `SymbolList`.

### getSecondarySymbols

    public SymbolList getSecondarySymbols()

  `getSecondarySymbols` returns all of the `Symbol`s belonging to the currently rendered secondary `Sequence`.

  Specified by:
    `getSecondarySymbols` in interface `PairwiseRenderContext`
  Returns:
    a `SymbolList`.

### getFeatures

    public FeatureHolder getFeatures()

  `getFeatures` returns all of the `Feature`s belonging to the currently rendered `Sequence`.

  Specified by:
    `getFeatures` in interface `SequenceRenderContext`
  Returns:
    a `FeatureHolder`.

### getSecondaryFeatures

    public FeatureHolder getSecondaryFeatures()

  `getSecondaryFeatures` returns all of the `Feature`s belonging to the currently rendered secondary `Sequence`.

  Specified by:
    `getSecondaryFeatures` in interface `PairwiseRenderContext`
  Returns:
    a `FeatureHolder`.

### 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`.

### setDirection

    public void setDirection(int direction)
                      throws IllegalArgumentException

  `setDirection` sets the direction in which this context will render the sequence - HORIZONTAL or VERTICAL.

  Parameters:
    `direction` - an `int`.
  Throws:
    `IllegalArgumentException` - if an invalid direction is used.

### getSecondaryDirection

    public int getSecondaryDirection()

  `getSecondaryDirection` returns the direction in which this context expects the secondary sequence to be rendered - HORIZONTAL or VERTICAL.

  Specified by:
    `getSecondaryDirection` in interface `PairwiseRenderContext`
  Returns:
    an `int`.

### getScale

    public double getScale()

  `getScale` returns the scale in pixels per `Symbol`.

  Specified by:
    `getScale` in interface `SequenceRenderContext`
  Returns:
    a `double`.

### 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 `Symbol`s 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 `Symbol`s 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 `Symbol`s 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 `Symbol`s 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.

### getLeadingBorder

    public SequenceRenderContext.Border getLeadingBorder()

  `getLeadingBorder` returns the leading border of the primary sequence.

  Specified by:
    `getLeadingBorder` in interface `SequenceRenderContext`
  Returns:
    a `SequenceRenderContext.Border`.

### getTrailingBorder

    public SequenceRenderContext.Border getTrailingBorder()

  `getTrailingBorder` returns the trailing border of the primary sequence.

  Specified by:
    `getTrailingBorder` in interface `SequenceRenderContext`
  Returns:
    a `SequenceRenderContext.Border`.

### getRenderer

    public PairwiseSequenceRenderer getRenderer()

  `getRenderer` returns the current `PairwiseSequenceRenderer`.

  Returns:
    a `PairwiseSequenceRenderer`.

### setRenderer

    public void setRenderer(PairwiseSequenceRenderer renderer)
                     throws ChangeVetoException

  `setRenderer` sets the current `PairwiseSequenceRenderer`.

  Throws:
    `ChangeVetoException`

### 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`.

### sequenceToGraphics

    public double sequenceToGraphics(int sequencePos)

  `sequenceToGraphics` converts a sequence index to a graphical position.

  Specified by:
    `sequenceToGraphics` in interface `SequenceRenderContext`
  Parameters:
    `sequencePos` - an `int`.
  Returns:
    a `double`.

### secondarySequenceToGraphics

    public double secondarySequenceToGraphics(int sequencePos)

  `secondarySequenceToGraphics` converts a sequence index to a graphical position.

  Specified by:
    `secondarySequenceToGraphics` in interface `PairwiseRenderContext`
  Parameters:
    `sequencePos` - an `int`.
  Returns:
    a `double`.

### graphicsToSequence

    public int graphicsToSequence(double graphicsPos)

  `graphicsToSequence` converts a graphical position to a sequence index.

  Specified by:
    `graphicsToSequence` in interface `SequenceRenderContext`
  Parameters:
    `graphicsPos` - a `double`.
  Returns:
    an `int`.

### graphicsToSequence

    public int graphicsToSequence(Point2D point)

  `graphicsToSequence` converts a graphical position to a sequence index.

  Specified by:
    `graphicsToSequence` in interface `SequenceRenderContext`
  Parameters:
    `point` - a graphic position.
  Returns:
    an `int`.

### graphicsToSecondarySequence

    public int graphicsToSecondarySequence(double graphicsPos)

  `graphicsToSecondarySequence` converts a graphical position to a secondary sequence index.

  Specified by:
    `graphicsToSecondarySequence` in interface `PairwiseRenderContext`
  Parameters:
    `graphicsPos` - a `double`.
  Returns:
    an `int`.

### graphicsToSecondarySequence

    public int graphicsToSecondarySequence(Point point)

  `graphicsToSecondarySequence` converts a graphical position to a secondary sequence index.

  Specified by:
    `graphicsToSecondarySequence` in interface `PairwiseRenderContext`
  Parameters:
    `point` - a `Point`.
  Returns:
    an `int`.

### getVisibleSymbolCount

    public int getVisibleSymbolCount()

  `getVisibleSymbolCount` returns the maximum number of `Symbol`s 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 `Symbol`s rendered will be less.

  Returns:
    an `int`.

### getVisibleSecondarySymbolCount

    public int getVisibleSecondarySymbolCount()

  `getVisibleSecondarySymbolCount` returns the maximum number of secondary `Symbol`s 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 `Symbol`s rendered will be less.

  Returns:
    an `int`.

### paintComponent

    public void paintComponent(Graphics g)

  Overrides:
    `paintComponent` in class `JComponent`

### resizeAndValidate

    public void resizeAndValidate()

  `resizeAndValidate` sets the minimum, preferred and maximum sizes of the component according to the current visible symbol count.

### addChangeListener

    public void addChangeListener(ChangeListener cl)

  `addChangeListener` adds a listener for all types of change.

  Specified by:
    `addChangeListener` in interface `Changeable`
  Parameters:
    `cl` - a `ChangeListener`.

### addChangeListener

    public void addChangeListener(ChangeListener cl,
                                  ChangeType ct)

  `addChangeListener` adds a listener for specific types of change.

  Specified by:
    `addChangeListener` in interface `Changeable`
  Parameters:
    `cl` - a `ChangeListener`.
    `ct` - a `ChangeType`.

### removeChangeListener

    public void removeChangeListener(ChangeListener cl)

  `removeChangeListener` removes a listener.

  Specified by:
    `removeChangeListener` in interface `Changeable`
  Parameters:
    `cl` - a `ChangeListener`.

### removeChangeListener

    public void removeChangeListener(ChangeListener cl,
                                     ChangeType ct)

  `removeChangeListener` removes a listener.

  Specified by:
    `removeChangeListener` in interface `Changeable`
  Parameters:
    `cl` - a `ChangeListener`.
    `ct` - a `ChangeType`.

### 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

### addSequenceViewerListener

    public void addSequenceViewerListener(SequenceViewerListener svl)

  `addSequenceViewerListener` adds a listener for mouse click `SequenceViewerEvent`s.

  Parameters:
    `svl` - a `SequenceViewerListener`.

### removeSequenceViewerListener

    public void removeSequenceViewerListener(SequenceViewerListener svl)

  `removeSequenceViewerListener` removes a listener for mouse click `SequenceViewerEvent`s.

  Parameters:
    `svl` - a `SequenceViewerListener`.

### addSequenceViewerMotionListener

    public void addSequenceViewerMotionListener(SequenceViewerMotionListener svml)

  `addSequenceViewerMotionListener` adds a listener for mouse motion `SequenceViewerEvent`s.

  Parameters:
    `svml` - a `SequenceViewerMotionListener`.

### removeSequenceViewerMotionListener

    public void removeSequenceViewerMotionListener(SequenceViewerMotionListener svml)

  `addSequenceViewerMotionListener` removes a listener for mouse motion `SequenceViewerEvent`s.

  Parameters:
    `svml` - a `SequenceViewerMotionListener`.

### 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 `Sequence`s to be rendered and the `PairwiseHomologyRenderer` are not null.

  Returns:
    a `boolean` value.