de.unibi.techfak.jpredictor.gui
Class MotifTree

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JScrollPane
                  extended by de.unibi.techfak.jpredictor.gui.MotifTree
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.ScrollPaneConstants
Direct Known Subclasses:
MotifCheckTree, MotifDistanceTree

 class MotifTree
extends javax.swing.JScrollPane
implements java.awt.event.ActionListener

Provides functions for displaying a number of motifs as a tree (representation is a JTree) within a JScrollPane.


Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JScrollPane
javax.swing.JScrollPane.AccessibleJScrollPane, javax.swing.JScrollPane.ScrollBar
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
(package private)  javax.swing.JTree motifTree
          The global motif tree corresponding to the motif list.
 
Fields inherited from class javax.swing.JScrollPane
columnHeader, horizontalScrollBar, horizontalScrollBarPolicy, lowerLeft, lowerRight, rowHeader, upperLeft, upperRight, verticalScrollBar, verticalScrollBarPolicy, viewport
 
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 javax.swing.ScrollPaneConstants
COLUMN_HEADER, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_POLICY, LOWER_LEADING_CORNER, LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, LOWER_TRAILING_CORNER, ROW_HEADER, UPPER_LEADING_CORNER, UPPER_LEFT_CORNER, UPPER_RIGHT_CORNER, UPPER_TRAILING_CORNER, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, VERTICAL_SCROLLBAR_POLICY, VIEWPORT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
MotifTree()
          The constructor.
MotifTree(MotifList ml)
          The constructor.
MotifTree(MotifList ml, java.lang.String headline, java.awt.Dimension dim)
          The constructor.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
          This method does nothing but to return.
 void addMotif(Motif m, int index)
          Adds a motif to the tree at the given index.
 void addMotifs(MotifList ml)
          This method gets a MotifList and adds all the motifs in there into this tree view by calling addMotif(Motif, -1).
 void clear()
          Clears the motif tree.
 void clearSelection()
          Removes all selections made on the motif tree.
protected  javax.swing.tree.DefaultMutableTreeNode convertMotif2Parentnode(Motif m, int depth)
          Generates one node with the motif itself as content.
protected  javax.swing.tree.DefaultMutableTreeNode convertMotif2Treenode(Motif m, int depth)
          Uses the informations received from the given motif for building up a tree node with the motif itself as parent (shown is the String returned by the method toString()) and some informations, like motif type (class name), description, motif consensus sequence as children.
 int deleteMotif(Motif m)
          Deletes the motif from the tree.
 int deleteSelected()
          Deletes all selected motifs of depth level one from the tree.
 void expand(int row)
          Expands the given row.
 void expandLevel(int depth)
          Expands to the given depth after collapsing all.
 void expandLevel(int depth, MotifList ml)
          Expands the listed motifs to the given depth after collapsing the tree.
protected  Motif getMotifFromNode(javax.swing.tree.DefaultMutableTreeNode node)
          Extracts the motif stored in a tree node.
 MotifList getMotifs()
          Creates and returns a list of all motifs stored in this tree.
 MotifList getMultiSelection(int depth)
          Extracts all directly selected motifs from the motif tree.
 Motif getSingleSelection(int depth)
          Checks the motif tree for one or more selected rows and returns the motif from the first node with a depth less or equal to the given one.
protected  javax.swing.JTree getTreeFromMotifList(MotifList ml, java.lang.String headline)
          Constructs a JTree from the headline (root) and all motifs (children).
protected  void insertNode(javax.swing.tree.DefaultMutableTreeNode node, int index)
          Adds a node to the tree at the given index.
 boolean isExpanded(int row)
          Checks whether the row of the tree is already expanded.
 boolean isSelectionEmpty()
          Checks whether there is a selection in the tree.
 int replaceSelectedMotifs(Motif motif)
          Replaces every motif that is directly selected with the given one.
 void update()
          Updates the tree by clearing it and filling it again with all objects present.
 
Methods inherited from class javax.swing.JScrollPane
createHorizontalScrollBar, createVerticalScrollBar, createViewport, getAccessibleContext, getColumnHeader, getCorner, getHorizontalScrollBar, getHorizontalScrollBarPolicy, getRowHeader, getUI, getUIClassID, getVerticalScrollBar, getVerticalScrollBarPolicy, getViewport, getViewportBorder, getViewportBorderBounds, isValidateRoot, isWheelScrollingEnabled, paramString, setColumnHeader, setColumnHeaderView, setComponentOrientation, setCorner, setHorizontalScrollBar, setHorizontalScrollBarPolicy, setLayout, setRowHeader, setRowHeaderView, setUI, setVerticalScrollBar, setVerticalScrollBarPolicy, setViewport, setViewportBorder, setViewportView, setWheelScrollingEnabled, updateUI
 
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, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, 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
 
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, 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, 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, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

motifTree

javax.swing.JTree motifTree
The global motif tree corresponding to the motif list.

Constructor Detail

MotifTree

public MotifTree()
The constructor. An empty tree is initialized, with the default dimension.


MotifTree

public MotifTree(MotifList ml)
The constructor. Gets a motif list and inits this motif tree as a JTree within a JScrollPane.

Parameters:
ml - The motif list to be displayed.

MotifTree

public MotifTree(MotifList ml,
                 java.lang.String headline,
                 java.awt.Dimension dim)
The constructor. Gets a motif list and inits this motif tree as a JTree within a JScrollPane. Note, that the motif list is not stored locally. Give null-values to take the default settings for the parameters.

Parameters:
ml - The motif list to be displayed.
headline - The root text of the tree.
dim - The width and height of this MotifTree.
Method Detail

getTreeFromMotifList

protected javax.swing.JTree getTreeFromMotifList(MotifList ml,
                                                 java.lang.String headline)
Constructs a JTree from the headline (root) and all motifs (children). For every motif convertMotif2Treenode(Motif, int) is called.

Parameters:
ml - The list of motifs to produce a JTree from.
headline - The root text in the tree.
Returns:
A JTree object containing the motifs.
See Also:
convertMotif2Treenode(Motif, int)

convertMotif2Parentnode

protected javax.swing.tree.DefaultMutableTreeNode convertMotif2Parentnode(Motif m,
                                                                          int depth)
Generates one node with the motif itself as content.

Parameters:
m - The motif to be the content of the node.
depth - The depth in the tree the motif should be placed. Root has depth zero.
Returns:
A node containing the motif without any subnodes.

getMotifFromNode

protected Motif getMotifFromNode(javax.swing.tree.DefaultMutableTreeNode node)
Extracts the motif stored in a tree node. Actually, the method analyses the node for having a Motif as user object. If so, the motif is returned, otherwise null is returned. It is highly recommended, that every access on a nodes user object is done through this method.

Parameters:
node - The node in tree which has a motif as user object.
Returns:
The user object of the node in case it is a motif, null otherwise.

convertMotif2Treenode

protected javax.swing.tree.DefaultMutableTreeNode convertMotif2Treenode(Motif m,
                                                                        int depth)
Uses the informations received from the given motif for building up a tree node with the motif itself as parent (shown is the String returned by the method toString()) and some informations, like motif type (class name), description, motif consensus sequence as children. If one of the informations is null, it is not shown.

Parameters:
m - The motif to be converted.
depth - The depth in the tree the motif should be placed. Root has depth zero.
Returns:
The motif as a TreeNode.

insertNode

protected void insertNode(javax.swing.tree.DefaultMutableTreeNode node,
                          int index)
Adds a node to the tree at the given index. If -1 is given as index, the new node is inserted before the first selected one, but if no node is selected, it is inserted at the end. This purpose is done using the underlying tree model of the tree, thus the tree is at the same time actualized.

Parameters:
node - The node to be newly displayed.
index - The index at which the new tree node is inserted. Give -1 to put the node before the first selected one or at the end if no node is selected.

getSingleSelection

public Motif getSingleSelection(int depth)
Checks the motif tree for one or more selected rows and returns the motif from the first node with a depth less or equal to the given one. If depth is less than zero, the motif deepest in the path is returned.

Parameters:
depth - The maximal depth in the selection path from which the motif is to be returned.
Returns:
The selected motif or null, if nothing but the headline is selected.

getMultiSelection

public MotifList getMultiSelection(int depth)
Extracts all directly selected motifs from the motif tree. When a selection is made on the tree the deepest path should contain a motif name otherwise the path is discarded. The depth level only plays a role if a path is deeper the depth, in this case it is cutted to depth.

Parameters:
depth - The maximal depth level in which every selection is searched for a motif name. Give -1 in case no restriction on depth is wished.
Returns:
The selected motifs in a list or the empty list, if nothing is selected.

replaceSelectedMotifs

public int replaceSelectedMotifs(Motif motif)
Replaces every motif that is directly selected with the given one. Only motifs deepest in the selection path are replaced. A selected motif is not replaced if one of its parents is the same motif.

Parameters:
motif - The replacement motif for the selected ones.
Returns:
The number of motifs replaced.

isSelectionEmpty

public boolean isSelectionEmpty()
Checks whether there is a selection in the tree.

Returns:
true iff there were some selections false otherwise.

clearSelection

public void clearSelection()
Removes all selections made on the motif tree.


addMotif

public void addMotif(Motif m,
                     int index)
Adds a motif to the tree at the given index. If -1 is given as index, the new motif is inserted before the first selected one, but if no motif is selected, it is inserted at the end. This purpose is done using the underlying tree model of the tree, thus the tree is at the same time actualized.

Parameters:
m - The motif to be newly displayed.
index - The index at which the new tree node is inserted. Give -1 to put the motif before the first selected one or at the end if no motif is selected.

addMotifs

public void addMotifs(MotifList ml)
This method gets a MotifList and adds all the motifs in there into this tree view by calling addMotif(Motif, -1). The motifs are one by one append to the end or inserted before the first selected one.

Parameters:
ml - From this list every motif is added.
See Also:
addMotif(Motif, int)

getMotifs

public MotifList getMotifs()
Creates and returns a list of all motifs stored in this tree.

Returns:
The motifs in this tree.

deleteMotif

public int deleteMotif(Motif m)
Deletes the motif from the tree. If the motif was not found, the tree remains unchanged. If the motif was twice or more times referrenced in the tree all occurrences are removed. This purpose is done using the underlying tree model of the tree, thus the tree is at the same time actualized.

Parameters:
m - The motif to be deleted.
Returns:
The number of motifs removed.

deleteSelected

public int deleteSelected()
Deletes all selected motifs of depth level one from the tree. This purpose is done using the underlying tree model of the tree, thus the tree is at the same time actualized.

Returns:
The number of nodes removed.

clear

public void clear()
Clears the motif tree. Only the root remains. This purpose is done using the underlying tree model of the tree, thus the tree is at the same time actuallized.


expand

public void expand(int row)
Expands the given row. Normally one should set row to zero to expand the root and make all motifs' names visible. Give row=-1 to expand all nodes in the tree.

Parameters:
row - The row to show.

expandLevel

public void expandLevel(int depth)
Expands to the given depth after collapsing all. Give -1 to collapse the tree to only the root. If depth is zero, only the root is expanded.

Parameters:
depth - The depth level within the tree, up to which it is expanded.

expandLevel

public void expandLevel(int depth,
                        MotifList ml)
Expands the listed motifs to the given depth after collapsing the tree. Give -1 to collapse the tree to only the root. If depth is zero, only the root is expanded.

Parameters:
depth - The depth level within the tree, up to which it is expanded.

isExpanded

public boolean isExpanded(int row)
Checks whether the row of the tree is already expanded.

Parameters:
row - The row to check, where 0 is the first row in the display.
Returns:
true if the node is currently expanded, otherwise false.

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
This method does nothing but to return.

Specified by:
actionPerformed in interface java.awt.event.ActionListener

update

public void update()
Updates the tree by clearing it and filling it again with all objects present.