ini.trakem2.tree
Class ProjectTree

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 ini.trakem2.tree.DNDTree
                      extended by ini.trakem2.tree.ProjectTree
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.TreeExpansionListener, javax.swing.Scrollable

public final class ProjectTree
extends DNDTree
implements java.awt.event.MouseListener, java.awt.event.ActionListener

A class to hold a tree of Thing nodes

See Also:
Serialized Form

Nested Class Summary
protected  class ProjectTree.ProjectThingNodeRenderer
           
 
Nested classes/interfaces inherited from class ini.trakem2.tree.DNDTree
DNDTree.NodeRenderer
 
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
protected static java.awt.Color ACTIVE_DISPL_COLOR
           
 
Fields inherited from class ini.trakem2.tree.DNDTree
background, dispatcher, project
 
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
ProjectTree(Project project, ProjectThing project_thing)
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent ae)
           
 javax.swing.tree.DefaultMutableTreeNode addSibling(Displayable elder, Displayable sibling)
          Finds the node for the elder and adds the sibling next to it, under the same parent.
protected  DNDTree.NodeRenderer createNodeRenderer()
          Subclasses should override this method to return a subclass of DNDTree.NodeRenderer
 void destroy()
           
 Profile duplicateChild(Profile original, int position, Layer layer)
          Implements the "Duplicate, link and send to next/previous layer" functionality.
protected  Thing getRootThing()
           
 void insertSegmentations(java.util.Collection<? extends Displayable> al)
          Creates a new node of basic type for each AreaList, Ball, Pipe or Polyline present in the ArrayList.
 void keyPressed(java.awt.event.KeyEvent ke)
           
 void mouseClicked(java.awt.event.MouseEvent me)
           
 void mouseDragged(java.awt.event.MouseEvent me)
           
 void mouseEntered(java.awt.event.MouseEvent me)
           
 void mouseExited(java.awt.event.MouseEvent me)
           
 void mousePressed(java.awt.event.MouseEvent me)
           
 void mouseReleased(java.awt.event.MouseEvent me)
           
 boolean remove(boolean check, ProjectThing thing, javax.swing.tree.DefaultMutableTreeNode node)
          If the given node is null, it will be searched for.
 void remove(javax.swing.tree.DefaultMutableTreeNode node, boolean check, boolean remove_empty_parents, int levels)
          Remove the node, its Thing and the object hold by the thing from the database.
 java.util.Set<Displayable> remove(java.util.Set<? extends Displayable> displayables, javax.swing.tree.DefaultMutableTreeNode top)
          Remove the Thing and DefaultMutableTreeNode that wrap each of the Displayable; calls softRemove on each Displayable, and does NOT call remove on the Displayable.
 void removeProjectThingLadder(ProjectThing lowest, int levels)
          Recursive as long as levels is above zero.
 void rename(ProjectThing thing)
           
 void selectInDisplay(ProjectThing thing, boolean shift_down)
           
 boolean sendToSiblingProject(javax.swing.tree.DefaultMutableTreeNode node)
          When two or more people work on the same XML file, images may be the same but segmentations and the transformations of the images may diverge.
 Bureaucrat sendToSiblingProjectTask(javax.swing.tree.DefaultMutableTreeNode node)
           
 void showInfo(ProjectThing thing)
           
 
Methods inherited from class ini.trakem2.tree.DNDTree
addChild, addLeafs, autoscroll, duplicate, expandAllNodes, expandAllNodes, expandNode, findNode, findNode2, getAutoscrollInsets, getExpandedStates, getInfo, getRoot, getRootNode, isExpanded, isExpanded, keyReleased, keyTyped, makeNode, makeNode, processKeyBinding, processKeyEvent, rebuild, rebuild, rebuild, removeNode, reset, selectNode, set, setExpandedSilently, setExpandedSilently, treeCollapsed, treeExpanded, updateList, updateList, updateUILater
 
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, getLastSelectedPathComponent, 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, 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

ACTIVE_DISPL_COLOR

protected static final java.awt.Color ACTIVE_DISPL_COLOR
Constructor Detail

ProjectTree

public ProjectTree(Project project,
                   ProjectThing project_thing)
Method Detail

mousePressed

public void mousePressed(java.awt.event.MouseEvent me)
Specified by:
mousePressed in interface java.awt.event.MouseListener

rename

public void rename(ProjectThing thing)

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent me)

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent me)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent me)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent me)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent me)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent ae)
Specified by:
actionPerformed in interface java.awt.event.ActionListener

remove

public void remove(javax.swing.tree.DefaultMutableTreeNode node,
                   boolean check,
                   boolean remove_empty_parents,
                   int levels)
Remove the node, its Thing and the object hold by the thing from the database.


removeProjectThingLadder

public void removeProjectThingLadder(ProjectThing lowest,
                                     int levels)
Recursive as long as levels is above zero. Levels defines the number of possibly empty parent levels to remove.


duplicateChild

public Profile duplicateChild(Profile original,
                              int position,
                              Layer layer)
Implements the "Duplicate, link and send to next/previous layer" functionality. The 'position' can be zero (before) or 1 (after). The profile has no layer assigned.


destroy

public void destroy()
Overrides:
destroy in class DNDTree

insertSegmentations

public void insertSegmentations(java.util.Collection<? extends Displayable> al)
Creates a new node of basic type for each AreaList, Ball, Pipe or Polyline present in the ArrayList. Other elements are ignored.


keyPressed

public void keyPressed(java.awt.event.KeyEvent ke)
Specified by:
keyPressed in interface java.awt.event.KeyListener
Overrides:
keyPressed in class DNDTree

remove

public boolean remove(boolean check,
                      ProjectThing thing,
                      javax.swing.tree.DefaultMutableTreeNode node)
If the given node is null, it will be searched for.


remove

public final java.util.Set<Displayable> remove(java.util.Set<? extends Displayable> displayables,
                                               javax.swing.tree.DefaultMutableTreeNode top)
Remove the Thing and DefaultMutableTreeNode that wrap each of the Displayable; calls softRemove on each Displayable, and does NOT call remove on the Displayable. If a Displayable is not found, it returns it in a set of not found objects. If all are removed, returns an empty set.


showInfo

public void showInfo(ProjectThing thing)

selectInDisplay

public void selectInDisplay(ProjectThing thing,
                            boolean shift_down)

addSibling

public javax.swing.tree.DefaultMutableTreeNode addSibling(Displayable elder,
                                                          Displayable sibling)
Finds the node for the elder and adds the sibling next to it, under the same parent.


createNodeRenderer

protected DNDTree.NodeRenderer createNodeRenderer()
Description copied from class: DNDTree
Subclasses should override this method to return a subclass of DNDTree.NodeRenderer

Overrides:
createNodeRenderer in class DNDTree

sendToSiblingProjectTask

public Bureaucrat sendToSiblingProjectTask(javax.swing.tree.DefaultMutableTreeNode node)

sendToSiblingProject

public boolean sendToSiblingProject(javax.swing.tree.DefaultMutableTreeNode node)
When two or more people work on the same XML file, images may be the same but segmentations and the transformations of the images may diverge. This function provides the means to send VectorData instances, wrapped in tree nodes, from one project to another, transforming the VectorData as appropriate to fall onto the same locations on the images. The ids of the copied objects will be new and unique for the target project. A dialog opens asking for options.


getRootThing

protected Thing getRootThing()
Specified by:
getRootThing in class DNDTree