de.unihalle.informatik.Alida.gui
Class ALDOperatorChooserTree

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTree
                  extended by de.unihalle.informatik.Alida.gui.ALDOperatorChooserTree
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable

public class ALDOperatorChooserTree
extends javax.swing.JTree

This class extends JTree to hold ALDOperators to choose from. There are two levels which determine the operators available, namely the standard and application level.

The initial level of operators displayed is by default the application level. This may be overridden by a JVM property alida_oprunner_level or the environment variable ALIDA_OPRUNNER_LEVEL.

A list of operators to be unfolded at start up may be supplied in one or more files. Each file is assumed to contain one operator name per line. The name(s) of this file(s) may be specified by a JVM property alida_oprunner_favoriteops or the environment variable ALIDA_OPRUNNER_FAVORITEOPS as a colon separated list of filenames.

Optionally a string to filter operators (and workflows) may be supplied via opNameFilter. If null, all annotated operators will we displayed. If non null and this string contains only alpha numeric letters and dots, all operators containing the filter string will be displayed where matching is performed case insensitive. Otherwise the filter string is interpreted as a regular expression and matching is performed case sensitive.

Author:
Stefan Posch
See Also:
Serialized Form

Nested Class Summary
private  class ALDOperatorChooserTree.AuxNode
          Node to build up a tree of the package structure of ALDOperators.
 
Nested classes/interfaces inherited from class javax.swing.JTree
javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DropLocation, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
 
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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  java.util.Collection<ALDOperatorLocation> applicationLocations
           
protected  javax.swing.tree.DefaultTreeModel applicationTreeModel
          Tree of available operators for standard level.
(package private) static boolean debug
          Debug flag (not accessible from outside).
(package private)  java.util.Vector<java.lang.String> favoriteOperators
          List of favorite operators to be unfolded at startup.
protected  ALDAOperator.Level level
          Mode of usage.
private  java.lang.String opNameFilter
          if non null regular expression select operators
private  java.util.Collection<ALDOperatorLocation> standardLocations
           
protected  javax.swing.tree.DefaultTreeModel standardTreeModel
          Tree of available operators for standard level.
 
Fields inherited from class javax.swing.JTree
ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ALDOperatorChooserTree(java.util.Collection<ALDOperatorLocation> standardLocations, java.util.Collection<ALDOperatorLocation> applicationLocations)
          Constructor.
 
Method Summary
private  java.util.HashSet<java.lang.String> collectExpandedPackages(javax.swing.tree.TreePath treePath, java.lang.String base)
          Collect the package names (for operators) and path (for workflows) which are currently expanded.
private  javax.swing.tree.DefaultTreeModel createOpTreeModel(java.util.Collection<ALDOperatorLocation> operators, java.lang.String nameOfRootNode)
           
 ALDOperatorChooserTreeNode getLastSelectedPathComponent()
           
 ALDAOperator.Level getLevel()
          Return current mode of usage.
 java.lang.String getOpNameFilter()
           
private  void hideLeaves(javax.swing.tree.TreePath treePath)
          Hide all leaves of this tree below the given path.
private  java.util.Vector<java.lang.String> initFavoriteOperators()
          Initialize list of favorite operators to be unfolded at startup.
private  void makeVisibleNodes(javax.swing.tree.TreePath treePath, java.lang.String base, java.util.HashSet<java.lang.String> packageNames)
          Makes all nodes of the tree visible where the corresponding package names (of workflow paths) are contained in packageNames.
private  boolean matches(java.lang.String className, java.lang.String opNameFilter)
          Does className match the opNameFilter
 void setLevel(ALDAOperator.Level level)
          Set the level of the operators in this tree.
 void setOpNameFilter(java.lang.String opNameFilter)
           
private  void unhideLeaves(javax.swing.tree.TreePath treePath)
          Unhide all leaves of this tree below the given path.
 
Methods inherited from class javax.swing.JTree
addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getDropLocation, getDropMode, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setDropMode, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, 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, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, 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, setLayout, 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, setComponentOrientation, 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

applicationLocations

private java.util.Collection<ALDOperatorLocation> applicationLocations

applicationTreeModel

protected javax.swing.tree.DefaultTreeModel applicationTreeModel
Tree of available operators for standard level.


debug

static boolean debug
Debug flag (not accessible from outside).


favoriteOperators

java.util.Vector<java.lang.String> favoriteOperators
List of favorite operators to be unfolded at startup.


level

protected ALDAOperator.Level level
Mode of usage.

In application mode only operators annotated as applications are available, otherwise all annotated operators are displayed.


opNameFilter

private java.lang.String opNameFilter
if non null regular expression select operators


standardLocations

private java.util.Collection<ALDOperatorLocation> standardLocations

standardTreeModel

protected javax.swing.tree.DefaultTreeModel standardTreeModel
Tree of available operators for standard level.

Constructor Detail

ALDOperatorChooserTree

public ALDOperatorChooserTree(java.util.Collection<ALDOperatorLocation> standardLocations,
                              java.util.Collection<ALDOperatorLocation> applicationLocations)
Constructor.

Method Detail

collectExpandedPackages

private java.util.HashSet<java.lang.String> collectExpandedPackages(javax.swing.tree.TreePath treePath,
                                                                    java.lang.String base)
Collect the package names (for operators) and path (for workflows) which are currently expanded. Use a + to separate the parts.

Parameters:
treePath -
base -
Returns:

createOpTreeModel

private javax.swing.tree.DefaultTreeModel createOpTreeModel(java.util.Collection<ALDOperatorLocation> operators,
                                                            java.lang.String nameOfRootNode)

getLastSelectedPathComponent

public ALDOperatorChooserTreeNode getLastSelectedPathComponent()
Overrides:
getLastSelectedPathComponent in class javax.swing.JTree

getLevel

public ALDAOperator.Level getLevel()
Return current mode of usage.

Returns:
current mode

getOpNameFilter

public java.lang.String getOpNameFilter()
Returns:
the opNameFilter

hideLeaves

private void hideLeaves(javax.swing.tree.TreePath treePath)
Hide all leaves of this tree below the given path. The exception to this rule is that all favorite operators are unfolded which also unfolds there siblings.

Parameters:
treePath - Path below which leaves are to be hidden.

initFavoriteOperators

private java.util.Vector<java.lang.String> initFavoriteOperators()
Initialize list of favorite operators to be unfolded at startup.

The list of operators to be unfolded at start up may be supplied in one or more files. Each file is assumed to contain one operator name per line. The name(s) of this file(s) may be specified by a JVM property alida_oprunner_favoriteops or the environment variable ALIDA_OPRUNNER_FAVORITEOPS as a colon separated list of filenames.

Returns:
List of favorite operators.

makeVisibleNodes

private void makeVisibleNodes(javax.swing.tree.TreePath treePath,
                              java.lang.String base,
                              java.util.HashSet<java.lang.String> packageNames)
Makes all nodes of the tree visible where the corresponding package names (of workflow paths) are contained in packageNames.

Parameters:
treePath -
base -
packageNames -

matches

private boolean matches(java.lang.String className,
                        java.lang.String opNameFilter)
Does className match the opNameFilter

Parameters:
className -
opNameFilter -
Returns:

setLevel

public void setLevel(ALDAOperator.Level level)
Set the level of the operators in this tree. Keep the current expansion state of the tree.

Parameters:
level - new level

setOpNameFilter

public void setOpNameFilter(java.lang.String opNameFilter)
Parameters:
opNameFilter - the opNameFilter to set

unhideLeaves

private void unhideLeaves(javax.swing.tree.TreePath treePath)
Unhide all leaves of this tree below the given path.

Parameters:
treePath - Path below which leaves are to be hidden.