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
Symbols 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 Symbols rendered depends on the
width 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, Thomas Down, Jolyon Holdstock
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategyNested classes/interfaces inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
SequenceRenderContext.Border -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ChangeTypeConstantRENDERERis aChangeTypewhich indicates a change to the renderer, requiring a layout update.static final ChangeTypeConstantTRANSLATIONis aChangeTypewhich 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_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
LAYOUT, REPAINTFields 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 newTranslatedSequencePanelwith 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 TypeMethodDescriptionvoidaddChangeListeneradds a listener for all types of change.voidaddChangeListeneradds a listener for specific types of change.voidaddSequenceViewerListeneradds a listener for mouse clickSequenceViewerEvents.voidaddSequenceViewerMotionListeneradds a listener for mouse motionSequenceViewerEvents.protected ChangeSupportgetChangeSupportlazily instantiates a helper for change listeners.intgetDirectionreturns the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.getFeaturesreturns all of theFeatures belonging to the currently renderedSequence.getLeadingBorderreturns the leading border.getRange()getRangereturns aRangeLocationrepresenting the region of the sequence currently being rendered.getRendererreturns the currentSequenceRenderer.getRenderingHintsreturns theRenderingHintscurrently being used by theGraphics2Dinstances of delegate renderers.doublegetScale()getScalereturns the scale in pixels perSymbol.getSequencereturns the entireSequencecurrently being rendered.getSymbolsreturns all of theSymbols belonging to the currently renderedSequence.intgetSymbolTranslationreturns the current translation inSymbols which will be applied when rendering.getTrailingBorderreturns the trailing border.intgetVisibleSymbolCountreturns the maximum number ofSymbols which can be rendered in the visible area (excluding all borders) of theTranslatedSequencePanelat the current scale.intgraphicsToSequence(double graphicsPos) graphicsToSequenceconverts a graphical position to a sequence index.intgraphicsToSequence(Point2D point) graphicsToSequenceconverts a graphical position to a sequence index.protected booleanhasListenersreturns true if there are active listeners for BioJava events.protected booleanisActive()isActivereturns true if both theSequenceto be rendered and theSequenceRendererare not null.booleanA particular ChangeType can never be raised by this Changeable.voidpaintComponentpaints this component.voidremoveChangeListenerremoves a listener.voidremoveChangeListenerremoves a listener.voidremoveSequenceViewerListenerremoves a listener for mouse clickSequenceViewerEvents.voidaddSequenceViewerMotionListenerremoves a listener for mouse motionSequenceViewerEvents.voidresizeAndValidatesets the minimum, preferred and maximum sizes of the component according to the current leading and trailing borders, renderer depth and visible symbol count.doublesequenceToGraphics(int sequencePos) sequenceToGraphicsconverts a sequence index to a graphical position.voidsetDirection(int direction) setDirectionsets the direction in which this context will render sequences - HORIZONTAL or VERTICAL.voidsetRenderer(SequenceRenderer renderer) setRenderersets the currentSequenceRenderer.voidsetRenderingHints(RenderingHints hints) setRenderingHintssets theRenderingHintswhich will be used by theGraphics2Dinstances of delegate renderers.voidsetScale(double scale) setScalesets the scale in pixels perSymbol.voidsetSequence(SymbolList sequence) setSequencesets theSequenceto be rendered.voidsetSymbolTranslation(int translation) setSymbolTranslationsets the translation inSymbols 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, updateUIMethods 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, validateTreeMethods 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, transferFocusUpCycleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
getFont
-
Field Details
-
RENDERER
ConstantRENDERERis aChangeTypewhich indicates a change to the renderer, requiring a layout update. -
TRANSLATION
ConstantTRANSLATIONis aChangeTypewhich indicates a change to the translation, requiring a paint update.
-
-
Constructor Details
-
TranslatedSequencePanel
public TranslatedSequencePanel()Creates a newTranslatedSequencePanelwith 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
getSequencereturns the entireSequencecurrently being rendered.- Returns:
- a
Sequence.
-
setSequence
setSequencesets theSequenceto be rendered.- Parameters:
sequence- aSequence.
-
getSymbols
getSymbolsreturns all of theSymbols belonging to the currently renderedSequence.- Specified by:
getSymbolsin interfaceSequenceRenderContext- Returns:
- a
SymbolList.
-
getFeatures
getFeaturesreturns all of theFeatures belonging to the currently renderedSequence.- Specified by:
getFeaturesin interfaceSequenceRenderContext- Returns:
- a
FeatureHolder.
-
getRange
getRangereturns aRangeLocationrepresenting the region of the sequence currently being rendered. This is calculated from the size of theTranslatedSequencePanel, minus itsSequenceRenderContext.Borders and its delegate renderer borders (if any), the current rendering translation and the current scale. The value will therefore change when theTranslatedSequencePanelis resized or "scrolled" by changing the translation.- Specified by:
getRangein interfaceSequenceRenderContext- Returns:
- a
RangeLocation.
-
getDirection
getDirectionreturns the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.- Specified by:
getDirectionin interfaceSequenceRenderContext- Returns:
- an
int.
-
setDirection
setDirectionsets the direction in which this context will render sequences - HORIZONTAL or VERTICAL.- Parameters:
direction- anint.- Throws:
IllegalArgumentException- if an error occurs.
-
getScale
getScalereturns the scale in pixels perSymbol.- Specified by:
getScalein interfaceSequenceRenderContext- Returns:
- a
double.
-
setScale
setScalesets the scale in pixels perSymbol.- Parameters:
scale- adouble.
-
getSymbolTranslation
getSymbolTranslationreturns the current translation inSymbols 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
setSymbolTranslationsets the translation inSymbols 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
getLeadingBorderreturns the leading border.- Specified by:
getLeadingBorderin interfaceSequenceRenderContext- Returns:
- a
SequenceRenderContext.Border.
-
getTrailingBorder
getTrailingBorderreturns the trailing border.- Specified by:
getTrailingBorderin interfaceSequenceRenderContext- Returns:
- a
SequenceRenderContext.Border.
-
getRenderer
getRendererreturns the currentSequenceRenderer.- Returns:
- a
SequenceRenderer.
-
setRenderer
setRenderersets the currentSequenceRenderer.- Parameters:
renderer- set theSequenceRendererused- Throws:
ChangeVetoException
-
getRenderingHints
getRenderingHintsreturns theRenderingHintscurrently being used by theGraphics2Dinstances of delegate renderers. If none is set, the constructor creates one with a nullMap.- Returns:
- a
RenderingHints.
-
setRenderingHints
setRenderingHintssets theRenderingHintswhich will be used by theGraphics2Dinstances of delegate renderers.- Parameters:
hints- aRenderingHints.
-
sequenceToGraphics
sequenceToGraphicsconverts a sequence index to a graphical position.- Specified by:
sequenceToGraphicsin interfaceSequenceRenderContext- Parameters:
sequencePos- anint.- Returns:
- a
double.
-
graphicsToSequence
graphicsToSequenceconverts a graphical position to a sequence index.- Specified by:
graphicsToSequencein interfaceSequenceRenderContext- Parameters:
graphicsPos- adouble.- Returns:
- an
int.
-
graphicsToSequence
graphicsToSequenceconverts a graphical position to a sequence index.- Specified by:
graphicsToSequencein interfaceSequenceRenderContext- Parameters:
point- thePoint2Dto transform- Returns:
- an
int.
-
getVisibleSymbolCount
getVisibleSymbolCountreturns the maximum number ofSymbols which can be rendered in the visible area (excluding all borders) of theTranslatedSequencePanelat the current scale. Note that if the translation is greater than 0, the actual number ofSymbols rendered will be less.- Returns:
- an
int.
-
paintComponent
paintComponentpaints this component.- Overrides:
paintComponentin classJComponent- Parameters:
g- aGraphicsobject.
-
resizeAndValidate
resizeAndValidatesets the minimum, preferred and maximum sizes of the component according to the current leading and trailing borders, renderer depth and visible symbol count. -
addChangeListener
addChangeListeneradds a listener for all types of change.- Specified by:
addChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.
-
addChangeListener
addChangeListeneradds a listener for specific types of change.- Specified by:
addChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.ct- aChangeType.
-
removeChangeListener
removeChangeListenerremoves a listener.- Specified by:
removeChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.
-
removeChangeListener
removeChangeListenerremoves a listener.- Specified by:
removeChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.ct- aChangeType.
-
isUnchanging
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
-
addSequenceViewerListener
addSequenceViewerListeneradds a listener for mouse clickSequenceViewerEvents.- Parameters:
svl- aSequenceViewerListener.
-
removeSequenceViewerListener
removeSequenceViewerListenerremoves a listener for mouse clickSequenceViewerEvents.- Parameters:
svl- aSequenceViewerListener.
-
addSequenceViewerMotionListener
addSequenceViewerMotionListeneradds a listener for mouse motionSequenceViewerEvents.- Parameters:
svml- aSequenceViewerMotionListener.
-
removeSequenceViewerMotionListener
addSequenceViewerMotionListenerremoves a listener for mouse motionSequenceViewerEvents.- Parameters:
svml- aSequenceViewerMotionListener.
-
getChangeSupport
getChangeSupportlazily instantiates a helper for change listeners.- Parameters:
ct- aChangeType.- Returns:
- a
ChangeSupportobject.
-
hasListeners
hasListenersreturns true if there are active listeners for BioJava events.- Returns:
- a
booleanvalue.
-
isActive
isActivereturns true if both theSequenceto be rendered and theSequenceRendererare not null.- Returns:
- a
booleanvalue.
-