Class TranslatedSequencePanel
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,SwingConstants
,SequenceRenderContext
,Changeable
TranslatedSequencePanel
is a panel that displays a
Sequence. Its features are that it will always draw at low pixel
coordinates when using Java2D to render very long sequences and it
is quite fast (approximately 8x faster than
SequencePanel
A TranslatedSequencePanel
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 and a translation which is the number of
Symbol
s to skip before rendering starts. In order to
produce a scrolling effect, the setSymbolTranslation
method may be hooked up to an Adjustable
such as
JScrollBar
or to an event listener.
The exact number of Symbol
s rendered depends on the
width 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, Thomas Down, Jolyon Holdstock
- See Also:
-
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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
Nested classes/interfaces inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
SequenceRenderContext.Border
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ChangeType
ConstantRENDERER
is aChangeType
which indicates a change to the renderer, requiring a layout update.static final ChangeType
ConstantTRANSLATION
is aChangeType
which indicates a change to the translation, requiring a paint update.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
ConstructorsConstructorDescriptionCreates a newTranslatedSequencePanel
with the default settings (direction HORIZONTAL, scale 10.0 pixels per symbol, symbol translation 0, leading border 0.0, trailing border 0.0, 12 point sanserif font). -
Method Summary
Modifier and TypeMethodDescriptionvoid
addChangeListener
adds a listener for all types of change.void
addChangeListener
adds a listener for specific types of change.void
addSequenceViewerListener
adds a listener for mouse clickSequenceViewerEvent
s.void
addSequenceViewerMotionListener
adds a listener for mouse motionSequenceViewerEvent
s.protected ChangeSupport
getChangeSupport
lazily instantiates a helper for change listeners.int
getDirection
returns the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.getFeatures
returns all of theFeature
s belonging to the currently renderedSequence
.getLeadingBorder
returns the leading border.getRange()
getRange
returns aRangeLocation
representing the region of the sequence currently being rendered.getRenderer
returns the currentSequenceRenderer
.getRenderingHints
returns theRenderingHints
currently being used by theGraphics2D
instances of delegate renderers.double
getScale()
getScale
returns the scale in pixels perSymbol
.getSequence
returns the entireSequence
currently being rendered.getSymbols
returns all of theSymbol
s belonging to the currently renderedSequence
.int
getSymbolTranslation
returns the current translation inSymbol
s which will be applied when rendering.getTrailingBorder
returns the trailing border.int
getVisibleSymbolCount
returns the maximum number ofSymbol
s which can be rendered in the visible area (excluding all borders) of theTranslatedSequencePanel
at the current scale.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
returns true if there are active listeners for BioJava events.protected boolean
isActive()
isActive
returns true if both theSequence
to be rendered and theSequenceRenderer
are not null.boolean
A particular ChangeType can never be raised by this Changeable.void
paintComponent
paints this component.void
removeChangeListener
removes a listener.void
removeChangeListener
removes a listener.void
removeSequenceViewerListener
removes a listener for mouse clickSequenceViewerEvent
s.void
addSequenceViewerMotionListener
removes a listener for mouse motionSequenceViewerEvent
s.void
resizeAndValidate
sets the minimum, preferred and maximum sizes of the component according to the current leading and trailing borders, renderer depth and visible symbol count.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 sequences - HORIZONTAL or VERTICAL.void
setRenderer
(SequenceRenderer renderer) setRenderer
sets the currentSequenceRenderer
.void
setRenderingHints
(RenderingHints hints) setRenderingHints
sets theRenderingHints
which will be used by theGraphics2D
instances of delegate renderers.void
setScale
(double scale) setScale
sets the scale in pixels perSymbol
.void
setSequence
(SymbolList sequence) setSequence
sets theSequence
to be rendered.void
setSymbolTranslation
(int translation) setSymbolTranslation
sets the translation inSymbol
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, 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, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
getFont
-
Field Details
-
RENDERER
ConstantRENDERER
is aChangeType
which indicates a change to the renderer, requiring a layout update. -
TRANSLATION
ConstantTRANSLATION
is aChangeType
which indicates a change to the translation, requiring a paint update.
-
-
Constructor Details
-
TranslatedSequencePanel
public TranslatedSequencePanel()Creates a newTranslatedSequencePanel
with the default settings (direction HORIZONTAL, scale 10.0 pixels per symbol, symbol translation 0, leading border 0.0, trailing border 0.0, 12 point sanserif font).
-
-
Method Details
-
getSequence
getSequence
returns the entireSequence
currently being rendered.- Returns:
- a
Sequence
.
-
setSequence
setSequence
sets theSequence
to be rendered.- Parameters:
sequence
- aSequence
.
-
getSymbols
getSymbols
returns all of theSymbol
s belonging to the currently renderedSequence
.- Specified by:
getSymbols
in interfaceSequenceRenderContext
- Returns:
- a
SymbolList
.
-
getFeatures
getFeatures
returns all of theFeature
s belonging to the currently renderedSequence
.- Specified by:
getFeatures
in interfaceSequenceRenderContext
- Returns:
- a
FeatureHolder
.
-
getRange
getRange
returns aRangeLocation
representing the region of the sequence currently being rendered. This is calculated from the size of theTranslatedSequencePanel
, minus itsSequenceRenderContext.Border
s and its delegate renderer borders (if any), the current rendering translation and the current scale. The value will therefore change when theTranslatedSequencePanel
is resized or "scrolled" by changing the translation.- Specified by:
getRange
in interfaceSequenceRenderContext
- Returns:
- a
RangeLocation
.
-
getDirection
getDirection
returns the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.- Specified by:
getDirection
in interfaceSequenceRenderContext
- Returns:
- an
int
.
-
setDirection
setDirection
sets the direction in which this context will render sequences - HORIZONTAL or VERTICAL.- Parameters:
direction
- anint
.- Throws:
IllegalArgumentException
- if an error occurs.
-
getScale
getScale
returns the scale in pixels perSymbol
.- Specified by:
getScale
in interfaceSequenceRenderContext
- Returns:
- a
double
.
-
setScale
setScale
sets the scale in pixels perSymbol
.- Parameters:
scale
- adouble
.
-
getSymbolTranslation
getSymbolTranslation
returns the current translation inSymbol
s which will be applied when rendering. The sequence will be rendered, immediately after any borders, starting at this translation. Values may be from 0 to the length of the rendered sequence.- Returns:
- an
int
.
-
setSymbolTranslation
setSymbolTranslation
sets the translation inSymbol
s which will be applied when rendering. The sequence will be rendered, immediately after any borders, starting at that translation. Values may be from 0 to the length of the rendered sequence.- Parameters:
translation
- anint
.- Throws:
IndexOutOfBoundsException
- if the translation is greater than the sequence length.
-
getLeadingBorder
getLeadingBorder
returns the leading border.- Specified by:
getLeadingBorder
in interfaceSequenceRenderContext
- Returns:
- a
SequenceRenderContext.Border
.
-
getTrailingBorder
getTrailingBorder
returns the trailing border.- Specified by:
getTrailingBorder
in interfaceSequenceRenderContext
- Returns:
- a
SequenceRenderContext.Border
.
-
getRenderer
getRenderer
returns the currentSequenceRenderer
.- Returns:
- a
SequenceRenderer
.
-
setRenderer
setRenderer
sets the currentSequenceRenderer
.- Parameters:
renderer
- set theSequenceRenderer
used- Throws:
ChangeVetoException
-
getRenderingHints
getRenderingHints
returns theRenderingHints
currently being used by theGraphics2D
instances of delegate renderers. If none is set, the constructor creates one with a nullMap
.- Returns:
- a
RenderingHints
.
-
setRenderingHints
setRenderingHints
sets theRenderingHints
which will be used by theGraphics2D
instances of delegate renderers.- Parameters:
hints
- aRenderingHints
.
-
sequenceToGraphics
sequenceToGraphics
converts a sequence index to a graphical position.- Specified by:
sequenceToGraphics
in interfaceSequenceRenderContext
- Parameters:
sequencePos
- anint
.- Returns:
- a
double
.
-
graphicsToSequence
graphicsToSequence
converts a graphical position to a sequence index.- Specified by:
graphicsToSequence
in interfaceSequenceRenderContext
- Parameters:
graphicsPos
- adouble
.- Returns:
- an
int
.
-
graphicsToSequence
graphicsToSequence
converts a graphical position to a sequence index.- Specified by:
graphicsToSequence
in interfaceSequenceRenderContext
- Parameters:
point
- thePoint2D
to transform- Returns:
- an
int
.
-
getVisibleSymbolCount
getVisibleSymbolCount
returns the maximum number ofSymbol
s which can be rendered in the visible area (excluding all borders) of theTranslatedSequencePanel
at the current scale. Note that if the translation is greater than 0, the actual number ofSymbol
s rendered will be less.- Returns:
- an
int
.
-
paintComponent
paintComponent
paints this component.- Overrides:
paintComponent
in classJComponent
- Parameters:
g
- aGraphics
object.
-
resizeAndValidate
resizeAndValidate
sets the minimum, preferred and maximum sizes of the component according to the current leading and trailing borders, renderer depth and visible symbol count. -
addChangeListener
addChangeListener
adds a listener for all types of change.- Specified by:
addChangeListener
in interfaceChangeable
- Parameters:
cl
- aChangeListener
.
-
addChangeListener
addChangeListener
adds a listener for specific types of change.- Specified by:
addChangeListener
in interfaceChangeable
- Parameters:
cl
- aChangeListener
.ct
- aChangeType
.
-
removeChangeListener
removeChangeListener
removes a listener.- Specified by:
removeChangeListener
in interfaceChangeable
- Parameters:
cl
- aChangeListener
.
-
removeChangeListener
removeChangeListener
removes a listener.- Specified by:
removeChangeListener
in interfaceChangeable
- Parameters:
cl
- aChangeListener
.ct
- aChangeType
.
-
isUnchanging
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 interfaceChangeable
- Parameters:
ct
- the ChangeType to check- Returns:
- true if ChangeEvents of this type are guaranteed to never be fired
-
addSequenceViewerListener
addSequenceViewerListener
adds a listener for mouse clickSequenceViewerEvent
s.- Parameters:
svl
- aSequenceViewerListener
.
-
removeSequenceViewerListener
removeSequenceViewerListener
removes a listener for mouse clickSequenceViewerEvent
s.- Parameters:
svl
- aSequenceViewerListener
.
-
addSequenceViewerMotionListener
addSequenceViewerMotionListener
adds a listener for mouse motionSequenceViewerEvent
s.- Parameters:
svml
- aSequenceViewerMotionListener
.
-
removeSequenceViewerMotionListener
addSequenceViewerMotionListener
removes a listener for mouse motionSequenceViewerEvent
s.- Parameters:
svml
- aSequenceViewerMotionListener
.
-
getChangeSupport
getChangeSupport
lazily instantiates a helper for change listeners.- Parameters:
ct
- aChangeType
.- Returns:
- a
ChangeSupport
object.
-
hasListeners
hasListeners
returns true if there are active listeners for BioJava events.- Returns:
- a
boolean
value.
-
isActive
isActive
returns true if both theSequence
to be rendered and theSequenceRenderer
are not null.- Returns:
- a
boolean
value.
-