Class TranslatedSequencePanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- org.biojava.bio.gui.sequence.TranslatedSequencePanel
-
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,SwingConstants,SequenceRenderContext,Changeable
public class TranslatedSequencePanel extends JComponent implements SequenceRenderContext, Changeable
.TranslatedSequencePanelis 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 thanSequencePanelA
TranslatedSequencePanelcan 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 ofSymbols to skip before rendering starts. In order to produce a scrolling effect, thesetSymbolTranslationmethod may be hooked up to anAdjustablesuch asJScrollBaror 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 ofSymbols rendered to change accordingly.The panel will fill its background to the
Colordefined by thesetBackground()method provided that it has been defined as opaque usingsetOpaque().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:
- 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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
SequenceRenderContext.Border
-
-
Field Summary
Fields Modifier and Type Field Description static ChangeTypeRENDERERConstantRENDERERis aChangeTypewhich indicates a change to the renderer, requiring a layout update.static ChangeTypeTRANSLATIONConstantTRANSLATIONis 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_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 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 Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddChangeListener(ChangeListener cl)addChangeListeneradds a listener for all types of change.voidaddChangeListener(ChangeListener cl, ChangeType ct)addChangeListeneradds a listener for specific types of change.voidaddSequenceViewerListener(SequenceViewerListener svl)addSequenceViewerListeneradds a listener for mouse clickSequenceViewerEvents.voidaddSequenceViewerMotionListener(SequenceViewerMotionListener svml)addSequenceViewerMotionListeneradds a listener for mouse motionSequenceViewerEvents.protected ChangeSupportgetChangeSupport(ChangeType ct)getChangeSupportlazily instantiates a helper for change listeners.intgetDirection()getDirectionreturns the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.FeatureHoldergetFeatures()getFeaturesreturns all of theFeatures belonging to the currently renderedSequence.SequenceRenderContext.BordergetLeadingBorder()getLeadingBorderreturns the leading border.RangeLocationgetRange()getRangereturns aRangeLocationrepresenting the region of the sequence currently being rendered.SequenceRenderergetRenderer()getRendererreturns the currentSequenceRenderer.RenderingHintsgetRenderingHints()getRenderingHintsreturns theRenderingHintscurrently being used by theGraphics2Dinstances of delegate renderers.doublegetScale()getScalereturns the scale in pixels perSymbol.SymbolListgetSequence()getSequencereturns the entireSequencecurrently being rendered.SymbolListgetSymbols()getSymbolsreturns all of theSymbols belonging to the currently renderedSequence.intgetSymbolTranslation()getSymbolTranslationreturns the current translation inSymbols which will be applied when rendering.SequenceRenderContext.BordergetTrailingBorder()getTrailingBorderreturns the trailing border.intgetVisibleSymbolCount()getVisibleSymbolCountreturns 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 booleanhasListeners()hasListenersreturns true if there are active listeners for BioJava events.protected booleanisActive()isActivereturns true if both theSequenceto be rendered and theSequenceRendererare not null.booleanisUnchanging(ChangeType ct)A particular ChangeType can never be raised by this Changeable.voidpaintComponent(Graphics g)paintComponentpaints this component.voidremoveChangeListener(ChangeListener cl)removeChangeListenerremoves a listener.voidremoveChangeListener(ChangeListener cl, ChangeType ct)removeChangeListenerremoves a listener.voidremoveSequenceViewerListener(SequenceViewerListener svl)removeSequenceViewerListenerremoves a listener for mouse clickSequenceViewerEvents.voidremoveSequenceViewerMotionListener(SequenceViewerMotionListener svml)addSequenceViewerMotionListenerremoves a listener for mouse motionSequenceViewerEvents.voidresizeAndValidate()resizeAndValidatesets 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, 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 Detail
-
RENDERER
public static final ChangeType RENDERER
ConstantRENDERERis aChangeTypewhich indicates a change to the renderer, requiring a layout update.
-
TRANSLATION
public static final ChangeType TRANSLATION
ConstantTRANSLATIONis aChangeTypewhich indicates a change to the translation, requiring a paint update.
-
-
Constructor Detail
-
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 Detail
-
getSequence
public SymbolList getSequence()
getSequencereturns the entireSequencecurrently being rendered.- Returns:
- a
Sequence.
-
setSequence
public void setSequence(SymbolList sequence)
setSequencesets theSequenceto be rendered.- Parameters:
sequence- aSequence.
-
getSymbols
public SymbolList getSymbols()
getSymbolsreturns all of theSymbols belonging to the currently renderedSequence.- Specified by:
getSymbolsin interfaceSequenceRenderContext- Returns:
- a
SymbolList.
-
getFeatures
public FeatureHolder getFeatures()
getFeaturesreturns all of theFeatures belonging to the currently renderedSequence.- Specified by:
getFeaturesin interfaceSequenceRenderContext- Returns:
- a
FeatureHolder.
-
getRange
public RangeLocation 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
public int getDirection()
getDirectionreturns the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.- Specified by:
getDirectionin interfaceSequenceRenderContext- Returns:
- an
int.
-
setDirection
public void setDirection(int direction) throws IllegalArgumentException
setDirectionsets the direction in which this context will render sequences - HORIZONTAL or VERTICAL.- Parameters:
direction- anint.- Throws:
IllegalArgumentException- if an error occurs.
-
getScale
public double getScale()
getScalereturns the scale in pixels perSymbol.- Specified by:
getScalein interfaceSequenceRenderContext- Returns:
- a
double.
-
setScale
public void setScale(double scale)
setScalesets the scale in pixels perSymbol.- Parameters:
scale- adouble.
-
getSymbolTranslation
public int 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
public void setSymbolTranslation(int translation) throws IndexOutOfBoundsException
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
public SequenceRenderContext.Border getLeadingBorder()
getLeadingBorderreturns the leading border.- Specified by:
getLeadingBorderin interfaceSequenceRenderContext- Returns:
- a
SequenceRenderContext.Border.
-
getTrailingBorder
public SequenceRenderContext.Border getTrailingBorder()
getTrailingBorderreturns the trailing border.- Specified by:
getTrailingBorderin interfaceSequenceRenderContext- Returns:
- a
SequenceRenderContext.Border.
-
getRenderer
public SequenceRenderer getRenderer()
getRendererreturns the currentSequenceRenderer.- Returns:
- a
SequenceRenderer.
-
setRenderer
public void setRenderer(SequenceRenderer renderer) throws ChangeVetoException
setRenderersets the currentSequenceRenderer.- Parameters:
renderer- set theSequenceRendererused- Throws:
ChangeVetoException
-
getRenderingHints
public RenderingHints 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
public void setRenderingHints(RenderingHints hints)
setRenderingHintssets theRenderingHintswhich will be used by theGraphics2Dinstances of delegate renderers.- Parameters:
hints- aRenderingHints.
-
sequenceToGraphics
public double sequenceToGraphics(int sequencePos)
sequenceToGraphicsconverts a sequence index to a graphical position.- Specified by:
sequenceToGraphicsin interfaceSequenceRenderContext- Parameters:
sequencePos- anint.- Returns:
- a
double.
-
graphicsToSequence
public int graphicsToSequence(double graphicsPos)
graphicsToSequenceconverts a graphical position to a sequence index.- Specified by:
graphicsToSequencein interfaceSequenceRenderContext- Parameters:
graphicsPos- adouble.- Returns:
- an
int.
-
graphicsToSequence
public int graphicsToSequence(Point2D point)
graphicsToSequenceconverts a graphical position to a sequence index.- Specified by:
graphicsToSequencein interfaceSequenceRenderContext- Parameters:
point- thePoint2Dto transform- Returns:
- an
int.
-
getVisibleSymbolCount
public 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
public void paintComponent(Graphics g)
paintComponentpaints this component.- Overrides:
paintComponentin classJComponent- Parameters:
g- aGraphicsobject.
-
resizeAndValidate
public void 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
public void addChangeListener(ChangeListener cl)
addChangeListeneradds a listener for all types of change.- Specified by:
addChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.
-
addChangeListener
public void addChangeListener(ChangeListener cl, ChangeType ct)
addChangeListeneradds a listener for specific types of change.- Specified by:
addChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.ct- aChangeType.
-
removeChangeListener
public void removeChangeListener(ChangeListener cl)
removeChangeListenerremoves a listener.- Specified by:
removeChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.
-
removeChangeListener
public void removeChangeListener(ChangeListener cl, ChangeType ct)
removeChangeListenerremoves a listener.- Specified by:
removeChangeListenerin interfaceChangeable- Parameters:
cl- aChangeListener.ct- aChangeType.
-
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
-
addSequenceViewerListener
public void addSequenceViewerListener(SequenceViewerListener svl)
addSequenceViewerListeneradds a listener for mouse clickSequenceViewerEvents.- Parameters:
svl- aSequenceViewerListener.
-
removeSequenceViewerListener
public void removeSequenceViewerListener(SequenceViewerListener svl)
removeSequenceViewerListenerremoves a listener for mouse clickSequenceViewerEvents.- Parameters:
svl- aSequenceViewerListener.
-
addSequenceViewerMotionListener
public void addSequenceViewerMotionListener(SequenceViewerMotionListener svml)
addSequenceViewerMotionListeneradds a listener for mouse motionSequenceViewerEvents.- Parameters:
svml- aSequenceViewerMotionListener.
-
removeSequenceViewerMotionListener
public void removeSequenceViewerMotionListener(SequenceViewerMotionListener svml)
addSequenceViewerMotionListenerremoves a listener for mouse motionSequenceViewerEvents.- Parameters:
svml- aSequenceViewerMotionListener.
-
getChangeSupport
protected ChangeSupport getChangeSupport(ChangeType ct)
getChangeSupportlazily instantiates a helper for change listeners.- Parameters:
ct- aChangeType.- Returns:
- a
ChangeSupportobject.
-
hasListeners
protected boolean hasListeners()
hasListenersreturns true if there are active listeners for BioJava events.- Returns:
- a
booleanvalue.
-
isActive
protected boolean isActive()
isActivereturns true if both theSequenceto be rendered and theSequenceRendererare not null.- Returns:
- a
booleanvalue.
-
-