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

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  org.biojava.bio.gui.sequence.SequencePanel

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

    public class SequencePanel

extends JComponent
implements SwingConstants, SequenceRenderContext, Changeable

A panel that displays a Sequence.

A SequencePanel can either display the sequence from left-to-right (HORIZONTAL) or from top-to-bottom (VERTICAL). It has an associated scale which is the number of pixels per symbol. It also has a lines property that controls how to wrap the sequence off one end and onto the other.

Each line in the SequencePanel is broken down into a list of strips, each rendered by an individual SequenceRenderer object. You could add a SequenceRenderer that draws on genes, another that draws repeats and another that prints out the DNA sequence. They are responsible for rendering their view of the sequence in the place that the SequencePanel positions them.

Author:
  Thomas Down, Matthew Pocock, David Huen
See Also:
  Serialized Form

Nested Class Summary
`class` `SequencePanel.Border`

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`

Field Summary
`static ChangeType` `RENDERER`

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 java.awt.image.ImageObserver
`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

Constructor Summary
`SequencePanel()` Create a new SequencePanel.

Method Summary
`protected void` `_setRenderer(SequenceRenderer r)`
`void` `addChangeListener(ChangeListener cl)` Add a listener that will be informed of all changes.
`void` `addChangeListener(ChangeListener cl, ChangeType ct)` Add a listener that will be informed of changes of a given type.
`void` `addSequenceViewerListener(SequenceViewerListener svl)`
`void` `addSequenceViewerMotionListener(SequenceViewerMotionListener svml)`
`protected int[]` `calcDist()`
`boolean` `equals(Object o)`
`protected ChangeSupport` `getChangeSupport(ChangeType ct)`
`int` `getDirection()` Retrieve the current rendering direction.
`FeatureHolder` `getFeatures()` The features to render.
`SequenceRenderContext.Border` `getLeadingBorder()` Retrieve the object that encapsulates the leading border area - the space before sequence information is rendered.
`RangeLocation` `getRange()` The range of the SymbolList to render.
`RenderingHints` `getRenderingHints()`
`double` `getScale()` Retrieve the current scale.
`SymbolList` `getSequence()`
`SymbolList` `getSymbols()` Retrieve the currently rendered SymbolList
`SequenceRenderContext.Border` `getTrailingBorder()` Retrieve the object that encapsulates the trailing border area - the space after sequence information is rendered.
`int` `graphicsToSequence(double gPos)` Converts a graphical position into a sequence coordinate.
`int` `graphicsToSequence(Point2D point)` Converts a graphical position into a sequence coordinate.
`protected boolean` `hasChangeListeners()`
`int` `hashCode()`
`protected boolean` `hasListeners()`
`protected boolean` `isActive()`
`boolean` `isUnchanging(ChangeType ct)` A particular ChangeType can never be raised by this Changeable.
`void` `paintComponent(Graphics g)` Paint this component.
`void` `removeChangeListener(ChangeListener cl)` Remove a listener that was interested in all types of changes.
`void` `removeChangeListener(ChangeListener cl, ChangeType ct)` Remove a listener that was interested in a specific types of changes.
`void` `removeSequenceViewerListener(SequenceViewerListener svl)`
`void` `removeSequenceViewerMotionListener(SequenceViewerMotionListener svml)`
`void` `resizeAndValidate()`
`double` `sequenceToGraphics(int seqPos)` Converts a sequence index into a graphical coordinate.
`void` `setDirection(int dir)` Set the direction that this SequencePanel renders in.
`void` `setRange(RangeLocation range)`
`void` `setRenderer(SequenceRenderer r)`
`void` `setRenderingHints(RenderingHints hints)` Use this to switch on effects like Anti-aliasing etc
`void` `setScale(double scale)` Set the scale.
`void` `setSequence(SymbolList s)` Set the SymboList to be rendered.

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, finalize, getClass, notify, notifyAll, wait, wait, wait`

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

Field Detail

### RENDERER

    public static final ChangeType RENDERER

Constructor Detail

### SequencePanel

    public SequencePanel()

  Create a new SequencePanel.

Method Detail

### setRenderingHints

    public void setRenderingHints(RenderingHints hints)

  Use this to switch on effects like Anti-aliasing etc

  Parameters:
    `hints` - the desired rendering properties

### getRenderingHints

    public RenderingHints getRenderingHints()

  Returns:
    the current rendering properties

### addSequenceViewerListener

    public void addSequenceViewerListener(SequenceViewerListener svl)

### removeSequenceViewerListener

    public void removeSequenceViewerListener(SequenceViewerListener svl)

### addSequenceViewerMotionListener

    public void addSequenceViewerMotionListener(SequenceViewerMotionListener svml)

### removeSequenceViewerMotionListener

    public void removeSequenceViewerMotionListener(SequenceViewerMotionListener svml)

### hasChangeListeners

    protected boolean hasChangeListeners()

### getChangeSupport

    protected ChangeSupport getChangeSupport(ChangeType ct)

### hasListeners

    protected boolean hasListeners()

### addChangeListener

    public void addChangeListener(ChangeListener cl)

  Description copied from interface: `Changeable`
  Add a listener that will be informed of all changes.

  Specified by:
    `addChangeListener` in interface `Changeable`
  Parameters:
    `cl` - the ChangeListener to add

### addChangeListener

    public void addChangeListener(ChangeListener cl,
                                  ChangeType ct)

  Description copied from interface: `Changeable`
  Add a listener that will be informed of changes of a given type.

  Specified by:
    `addChangeListener` in interface `Changeable`
  Parameters:
    `cl` - the ChangeListener
    `ct` - the ChangeType it is to be informed of

### removeChangeListener

    public void removeChangeListener(ChangeListener cl)

  Description copied from interface: `Changeable`
  Remove a listener that was interested in all types of changes.

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

### removeChangeListener

    public void removeChangeListener(ChangeListener cl,
                                     ChangeType ct)

  Description copied from interface: `Changeable`
  Remove a listener that was interested in a specific types of changes.

  Specified by:
    `removeChangeListener` in interface `Changeable`
  Parameters:
    `cl` - a ChangeListener to remove
    `ct` - the ChangeType that it was interested in

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

### setSequence

    public void setSequence(SymbolList s)

  Set the SymboList to be rendered. This symbol list will be passed onto the SequenceRenderer instances registered with this SequencePanel.

  Parameters:
    `s` - the SymboList to render

### getSequence

    public SymbolList getSequence()

### getSymbols

    public SymbolList getSymbols()

  Retrieve the currently rendered SymbolList

  Specified by:
    `getSymbols` in interface `SequenceRenderContext`
  Returns:
    the current SymbolList

### getFeatures

    public FeatureHolder getFeatures()

  Description copied from interface: `SequenceRenderContext`
  The features to render.

  Specified by:
    `getFeatures` in interface `SequenceRenderContext`
  Returns:
    a FeatureHolder with the Features to render

### setRange

    public void setRange(RangeLocation range)

### getRange

    public RangeLocation getRange()

  Description copied from interface: `SequenceRenderContext`
  The range of the SymbolList to render.

  Specified by:
    `getRange` in interface `SequenceRenderContext`
  Returns:
    the RangeLocation specifying which indices (inclusive) to render

### setDirection

    public void setDirection(int dir)
                      throws IllegalArgumentException

  Set the direction that this SequencePanel renders in. The direction can be one of HORIZONTAL or VERTICAL. Once the direction is set, the display will redraw. HORIZONTAL represents left-to-right rendering. VERTICAL represents AceDB-style vertical rendering.

  Parameters:
    `dir` - the new rendering direction
  Throws:
    `IllegalArgumentException`

### getDirection

    public int getDirection()

  Retrieve the current rendering direction.

  Specified by:
    `getDirection` in interface `SequenceRenderContext`
  Returns:
    the rendering direction (one of HORIZONTAL and VERTICAL)

### setScale

    public void setScale(double scale)

  Set the scale.

  The scale parameter is interpreted as the number of pixels per symbol. This may take on a wide range of values - for example, to render the symbols as text, you will need a scale of > 8, where as to render chromosome 1 you will want a scale < 0.00000001

  Parameters:
    `scale` - the new pixels-per-symbol ratio

### getScale

    public double getScale()

  Retrieve the current scale.

  Specified by:
    `getScale` in interface `SequenceRenderContext`
  Returns:
    the number of pixels used to render one symbol

### getLeadingBorder

    public SequenceRenderContext.Border getLeadingBorder()

  Retrieve the object that encapsulates the leading border area - the space before sequence information is rendered.

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

### getTrailingBorder

    public SequenceRenderContext.Border getTrailingBorder()

  Retrieve the object that encapsulates the trailing border area - the space after sequence information is rendered.

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

### paintComponent

    public void paintComponent(Graphics g)

  Paint this component.

  This calls the paint method of the currently registered SequenceRenderer after setting up the graphics appropriately.

  Overrides:
    `paintComponent` in class `JComponent`

### setRenderer

    public void setRenderer(SequenceRenderer r)
                     throws ChangeVetoException

  Throws:
    `ChangeVetoException`

### _setRenderer

    protected void _setRenderer(SequenceRenderer r)

### sequenceToGraphics

    public double sequenceToGraphics(int seqPos)

  Description copied from interface: `SequenceRenderContext`
  Converts a sequence index into a graphical coordinate. You will need to use this in conjunction with getDirection to correctly lay graphics out.

  Specified by:
    `sequenceToGraphics` in interface `SequenceRenderContext`
  Parameters:
    `seqPos` - Index within the sequence
  Returns:
    Equivalent graphical position in pixels

### graphicsToSequence

    public int graphicsToSequence(double gPos)

  Description copied from interface: `SequenceRenderContext`
  Converts a graphical position into a sequence coordinate. You will need to have used getDirection to decide whether to use the x or y coordinate.

  Specified by:
    `graphicsToSequence` in interface `SequenceRenderContext`
  Parameters:
    `gPos` - A pixel position
  Returns:
    The corresponding sequence index

### graphicsToSequence

    public int graphicsToSequence(Point2D point)

  Description copied from interface: `SequenceRenderContext`
  Converts a graphical position into a sequence coordinate. This will use getDirection to decide whether to use the x or y coordinate.

  Specified by:
    `graphicsToSequence` in interface `SequenceRenderContext`
  Parameters:
    `point` - a point representing the position
  Returns:
    the corresponding sequence index

### resizeAndValidate

    public void resizeAndValidate()

### calcDist

    protected int[] calcDist()

### isActive

    protected boolean isActive()

### equals

    public boolean equals(Object o)

  Overrides:
    `equals` in class `Object`

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `Object`