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
Nested Classes Modifier and Type Class Description classSequencePanel.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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
Fields Modifier and Type Field Description static ChangeTypeRENDERER-
Fields inherited from class javax.swing.JComponent
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
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
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
-
-
Constructor Summary
Constructors Constructor Description SequencePanel()Create a new SequencePanel.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void_setRenderer(SequenceRenderer r)voidaddChangeListener(ChangeListener cl)Add a listener that will be informed of all changes.voidaddChangeListener(ChangeListener cl, ChangeType ct)Add a listener that will be informed of changes of a given type.voidaddSequenceViewerListener(SequenceViewerListener svl)voidaddSequenceViewerMotionListener(SequenceViewerMotionListener svml)protected int[]calcDist()booleanequals(Object o)protected ChangeSupportgetChangeSupport(ChangeType ct)intgetDirection()Retrieve the current rendering direction.FeatureHoldergetFeatures()The features to render.SequenceRenderContext.BordergetLeadingBorder()Retrieve the object that encapsulates the leading border area - the space before sequence information is rendered.RangeLocationgetRange()The range of the SymbolList to render.RenderingHintsgetRenderingHints()doublegetScale()Retrieve the current scale.SymbolListgetSequence()SymbolListgetSymbols()Retrieve the currently rendered SymbolListSequenceRenderContext.BordergetTrailingBorder()Retrieve the object that encapsulates the trailing border area - the space after sequence information is rendered.intgraphicsToSequence(double gPos)Converts a graphical position into a sequence coordinate.intgraphicsToSequence(Point2D point)Converts a graphical position into a sequence coordinate.protected booleanhasChangeListeners()inthashCode()protected booleanhasListeners()protected booleanisActive()booleanisUnchanging(ChangeType ct)A particular ChangeType can never be raised by this Changeable.voidpaintComponent(Graphics g)Paint this component.voidremoveChangeListener(ChangeListener cl)Remove a listener that was interested in all types of changes.voidremoveChangeListener(ChangeListener cl, ChangeType ct)Remove a listener that was interested in a specific types of changes.voidremoveSequenceViewerListener(SequenceViewerListener svl)voidremoveSequenceViewerMotionListener(SequenceViewerMotionListener svml)voidresizeAndValidate()doublesequenceToGraphics(int seqPos)Converts a sequence index into a graphical coordinate.voidsetDirection(int dir)Set the direction that this SequencePanel renders in.voidsetRange(RangeLocation range)voidsetRenderer(SequenceRenderer r)voidsetRenderingHints(RenderingHints hints)Use this to switch on effects like Anti-aliasing etcvoidsetScale(double scale)Set the scale.voidsetSequence(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, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, 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, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, 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, getAccessibleContext, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, 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:ChangeableAdd a listener that will be informed of all changes.- Specified by:
addChangeListenerin interfaceChangeable- Parameters:
cl- the ChangeListener to add
-
addChangeListener
public void addChangeListener(ChangeListener cl, ChangeType ct)
Description copied from interface:ChangeableAdd a listener that will be informed of changes of a given type.- Specified by:
addChangeListenerin interfaceChangeable- Parameters:
cl- the ChangeListenerct- the ChangeType it is to be informed of
-
removeChangeListener
public void removeChangeListener(ChangeListener cl)
Description copied from interface:ChangeableRemove a listener that was interested in all types of changes.- Specified by:
removeChangeListenerin interfaceChangeable- Parameters:
cl- a ChangeListener to remove
-
removeChangeListener
public void removeChangeListener(ChangeListener cl, ChangeType ct)
Description copied from interface:ChangeableRemove a listener that was interested in a specific types of changes.- Specified by:
removeChangeListenerin interfaceChangeable- Parameters:
cl- a ChangeListener to removect- the ChangeType that it was interested in
-
isUnchanging
public boolean isUnchanging(ChangeType ct)
Description copied from interface:ChangeableA 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:
isUnchangingin interfaceChangeable- 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:
getSymbolsin interfaceSequenceRenderContext- Returns:
- the current SymbolList
-
getFeatures
public FeatureHolder getFeatures()
Description copied from interface:SequenceRenderContextThe features to render.- Specified by:
getFeaturesin interfaceSequenceRenderContext- Returns:
- a FeatureHolder with the Features to render
-
setRange
public void setRange(RangeLocation range)
-
getRange
public RangeLocation getRange()
Description copied from interface:SequenceRenderContextThe range of the SymbolList to render.- Specified by:
getRangein interfaceSequenceRenderContext- 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:
getDirectionin interfaceSequenceRenderContext- 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:
getScalein interfaceSequenceRenderContext- 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:
getLeadingBorderin interfaceSequenceRenderContext- 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:
getTrailingBorderin interfaceSequenceRenderContext- 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:
paintComponentin classJComponent
-
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:SequenceRenderContextConverts a sequence index into a graphical coordinate. You will need to use this in conjunction with getDirection to correctly lay graphics out.- Specified by:
sequenceToGraphicsin interfaceSequenceRenderContext- Parameters:
seqPos- Index within the sequence- Returns:
- Equivalent graphical position in pixels
-
graphicsToSequence
public int graphicsToSequence(double gPos)
Description copied from interface:SequenceRenderContextConverts 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:
graphicsToSequencein interfaceSequenceRenderContext- Parameters:
gPos- A pixel position- Returns:
- The corresponding sequence index
-
graphicsToSequence
public int graphicsToSequence(Point2D point)
Description copied from interface:SequenceRenderContextConverts a graphical position into a sequence coordinate. This will use getDirection to decide whether to use the x or y coordinate.- Specified by:
graphicsToSequencein interfaceSequenceRenderContext- Parameters:
point- a point representing the position- Returns:
- the corresponding sequence index
-
resizeAndValidate
public void resizeAndValidate()
-
calcDist
protected int[] calcDist()
-
isActive
protected boolean isActive()
-
-