Class JPanelTreeController

All Implemented Interfaces:
ActionListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, TreeSelectionListener
Direct Known Subclasses:
JDialogVOIHausdorffDistance.JPanelAddRemoveVOI, JDialogVOILogicalOperations.JPanelAddRemoveVOI

public class JPanelTreeController extends JPanel implements ActionListener, TreeSelectionListener
panel to hold and transfer items between two trees. extend to modify the application of the 'left', 'right', and 'delete' or 'up', 'down' and 'delete'. Use of delete has not been implemented, and left un-enabled; extend this panel and extend the ActionEvent handler to define its use.

Creating an instance of this JPanel does not in fact create any visual representation of either tree. It does display the tree-control buttons, but the JTrees held (TreeA and TreeB) are references. This is done so that the display may have as much freedom for display as possible (ie, control spacing, control alignment and position, or insert explanation text). As such, the display panel which contains the trees is created seperately.

Version:
1

$Logfile: /mipav/src/gov/nih/mipav/view/JPanelTreeController.java $

Author:
senseneyj
See Also:
  • Field Details

    • TREEA

      public static final String TREEA
      See Also:
    • TREEB

      public static final String TREEB
      See Also:
    • ALLTREEA

      public static final String ALLTREEA
      See Also:
    • ALLTREEB

      public static final String ALLTREEB
      See Also:
    • treeA

      protected JTree treeA
      upper or left-most tree.
    • treeB

      protected JTree treeB
      lower or right-most tree.
    • deleteSelection

      private JButton deleteSelection
      'X'.
    • treeLayout

      private int treeLayout
      DOCUMENT ME!
    • sendAllToTreeA

      private JButton sendAllToTreeA
      DOCUMENT ME!
    • sendAllToTreeB

      private JButton sendAllToTreeB
      DOCUMENT ME!
    • sendSelectionToTreeA

      private JButton sendSelectionToTreeA
      left arrow or up arrow.
    • sendSelectionToTreeB

      private JButton sendSelectionToTreeB
      right arrow or down arrow.
  • Constructor Details

    • JPanelTreeController

      public JPanelTreeController()
      defualt position is all buttons vertical. Images are by default shown on the buttons. Both arrows are enabled, but Delete is disabled by default. panel is layed out as a BoxLayout.Y_AXIS
      See Also:
    • JPanelTreeController

      public JPanelTreeController(int layout)
      Creates a tree controller, with the buttons in the given layout, but which defaults to display images only. The buttons point as if to trees in the orthogonal direction. Choose layout with: BoxLayout.X_AXIS, or BoxLayout.Y_AXIS. Both arrows are enabled, but Delete is disabled by default.
      Parameters:
      layout - The BoxLayout designation for the layout of the buttons in the panel. Use BoxLayout.X_AXIS or BoxLayout.Y_AXIS.
      See Also:
    • JPanelTreeController

      public JPanelTreeController(boolean noImages)
      Creates a tree controller, with the buttons in the default layout, but which can be set to display images only or text. The buttons point as if to trees in the orthogonal direction. Both arrows are enabled, but Delete is disabled by default. Panel is layed out as a BoxLayout.Y_AXIS, and points to trees that would be laid-out along the x-axis of the display panel.
      Parameters:
      noImages - Specifies if the buttons are to be displayed as images or with no images, using text instead.
      See Also:
    • JPanelTreeController

      public JPanelTreeController(int layout, boolean noImages)
      Creates a tree controller, with the buttons in the given layout, and which can be set to display images only or text. The buttons point as if to trees in the orthogonal direction. Both arrows are enabled, but Delete is disabled by default. Choose layout of the buttons with: BoxLayout.X_AXIS, or BoxLayout.Y_AXIS.
      See Also:
  • Method Details

    • createTreeControllerDisplay

      public static JSplitPane createTreeControllerDisplay(JPanelTreeController controls)
      Creates a simple Tree controller display. one with the the given controls and with the orientation defined by the control panel. The trees in the control panel are displayed, but if either are null, an new, empty tree is provided.

      The referenced trees are placed into JScrollPanes, and placed on either side of the control's buttons, using a BorderLayout.

      Parameters:
      controls - A JPanelTreeController to place into a visual display.
      Returns:
      A JSplitPane containing the tree controller, formatted as the JPanelTreeController indicates (ie., vertical or horizontal layout).
    • actionPerformed

      public void actionPerformed(ActionEvent ae)
      responds to the button presses.

      functionality of arrow/send-to- arrows is virtually identical. the 'delete' is not supported, and this class must be extended to assume functionality for that button. There are good reasons for this: there are two panels, and only one delete button, and delete functionality may be use-dependant. Indeed, for a panel such as a file-tree, we may not want to support a 'delete' function. Hence, this aspect of the use, is left up to an extending class.

      Specified by:
      actionPerformed in interface ActionListener
      Parameters:
      ae - The action to treeen for.
    • getLeftTree

      public JTree getLeftTree()
      Convience method to get tree A.
      See Also:
    • getTreeA

      public JTree getTreeA()
      there is no programmatic way to determine which arrow is pointing where. To compensate, the parent panel must notify the panel who it is treeening to. Since it can, at most, point to one tree, only the most recent tree to be submitted will be retainted.

      This method gets the panel pointing to tree A. (upper or left most)

      Returns:
      DOCUMENT ME!
    • getTreeB

      public JTree getTreeB()
      there is no programmatic way to determine which arrow is pointing where. To compensate, the parent panel must notify the panel who it is treeening to. Since it can, at most, point to one tree, only the most recent tree to be submitted will be retainted.

      This method gets the panel pointing to the tree B (lower or right most)

      Returns:
      TreeB is returned.
    • getLowerTree

      public JTree getLowerTree()
      Convience method to get Tree B.
      Returns:
      TreeB is returned.
      See Also:
    • getRightTree

      public JTree getRightTree()
      Convience method to get Tree B.
      Returns:
      TreeB is returned.
      See Also:
    • getUpperTree

      public JTree getUpperTree()
      Convience method to get Tree A.
      Returns:
      TreeA is returned.
      See Also:
    • performDelete

      public void performDelete()
      Programmatically performs a 'delete' button click, based on however the implemented class performs it. The delete button must be enabled to perform a programmatic action.
    • performSendToTreeA

      public void performSendToTreeA()
      Programmatically performs a 'Send to tree a' button click, based on however the implemented class performs it. The 'send to tree a' button must be enabled to perform a programmatic action.
    • performSendToTreeB

      public void performSendToTreeB()
      Programmatically performs a 'Send to tree b' button click, based on however the implemented class performs it. The 'send to tree b' button must be enabled to perform a programmatic action.
    • setBackArrowEnabled

      public void setBackArrowEnabled(boolean b)
      A convenience method to set the to-tree-A buttons (both selected and all) to the given enabled status.
      Parameters:
      b - The enabled status of the buttons.
    • setDeleteEnabled

      public void setDeleteEnabled(boolean b)
      A method to set the delete button to the given enabled status. By default, the delete button is not enabled when this object is created.
      Parameters:
      b - The enabled status of the button.
    • setForwardArrowEnabled

      public void setForwardArrowEnabled(boolean b)
      A convenience method to set the to-tree-B buttons (both selected and all) to the given enabled status.
      Parameters:
      b - The enabled status of the buttons.
    • setBackArrowVisble

      public void setBackArrowVisble(boolean v)
      A convenience method to set the to-tree-A buttons (both selected and all) to the given visible status.
      Parameters:
      v - Whether to make buttons visible
    • setDeleteVisble

      public void setDeleteVisble(boolean v)
      A method to set the delete button to the given enabled status. By default, the delete button is visible when this object is created.
      Parameters:
      v - Whether to make button visible
    • setForwardArrowVisible

      public void setForwardArrowVisible(boolean v)
      A convenience method to set the to-tree-B buttons (both selected and all) to the given visible status.
      Parameters:
      v - Whether to make buttons visible
    • setLeftTree

      public void setLeftTree(JTree tree)
      Convenience method to set tree A.
      See Also:
    • setTreeA

      public void setTreeA(JTree tree)
      there is no programmatic way to determine which arrow is pointing where. To compensate, the parent panel must notify the panel who it is listening to. Since it can, at most, point to one tree, only the most recent tree to be submitted will be retainted.

      This method makes the pointing to the tree A (the upper or left most)

      Parameters:
      tree - DOCUMENT ME!
    • setTreeB

      public void setTreeB(JTree tree)
      there is no programmatic way to determine which arrow is pointing where. To compensate, the parent panel must notify the panel who it is listening to. Since it can, at most, point to one tree, only the most recent tree to be submitted will be retainted.

      This method makes the pointing to the tree B (the lower, or right most)

      Parameters:
      tree - DOCUMENT ME!
    • setLowerTree

      public void setLowerTree(JTree tree)
      Convience method to set tree B.
      See Also:
    • setRightTree

      public void setRightTree(JTree tree)
      Convience method to set tree B.
      See Also:
    • setUpperTree

      public void setUpperTree(JTree tree)
      Convience method to set tree A.
      See Also:
    • valueChanged

      public void valueChanged(TreeSelectionEvent lse)
      handles tree change events made when selecting from either left or right tree. This method has not been implemented

      If the event isn't from a JTree, an error messge is generated, and control is returned.

      Otherwise, the tree is copied to the appropriate storage Vectors to hold the tree.

      Specified by:
      valueChanged in interface TreeSelectionListener
      Parameters:
      lse - The selection event to treeen for.
    • copySelected

      protected void copySelected(JTree a, JTree b)
      Copies the selected items in tree A and appends them to tree B. The selected items in tree A are then de-selected.
      Parameters:
      a - the source tree.
      b - the destination tree.
    • deleteFrom

      protected void deleteFrom(JTree tree)
      Removes all selected items in the given tree.
      Parameters:
      tree - The tree of items.
    • getTreeLayout

      protected int getTreeLayout()
      Returns the layout of the associated display panel or "how the arrows point", not the layout of the buttons themselves.
      Returns:
      Provides the BoxLayout code for the intended layout of the associated display panel. Either BoxLayout.X_AXIS or BoxLayout.Y_AXIS.
    • setButtonFeatures

      protected void setButtonFeatures(JButton button, String actionLabel, String tip)
      adds the tooltip, and the action label to the buttoin, as well as setting the action treeener, font, borderpaint, and the enable.
      Parameters:
      button - DOCUMENT ME!
      actionLabel - DOCUMENT ME!
      tip - DOCUMENT ME!
    • getSelectedNodes

      private TreeNode[] getSelectedNodes(JTree t)
    • createAllDownButton

      private void createAllDownButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!
    • createAllLeftButton

      private void createAllLeftButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!
    • createAllTreeAButton

      private void createAllTreeAButton(boolean noImage)
      creates a button with either the image of an arrow (leftarrowcollection.gif) or with the text "Send All left" or "Send All up".
      Type Parameters:
      code - noImage DOCUMENT ME! uses text. false displays the image.
    • createAllTreeBButton

      private void createAllTreeBButton(boolean noImage)
      creates a button with either the image of an arrow (rightarrowcollection.gif) or with the text "Send all right" or "Send all down".
      Type Parameters:
      code - noImage DOCUMENT ME! uses text. false displays the image.
    • createAllRightButton

      private void createAllRightButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!
    • createAllUpButton

      private void createAllUpButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!
    • createDeleteButton

      private void createDeleteButton(boolean noImage)
      creates a button with either the image of an 'X' (delete.gif) or with the text "delete selection". Delete selection is initially not enabled.
      Type Parameters:
      code - noImage DOCUMENT ME! uses text. false displays the image.
    • createDownButton

      private void createDownButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!
    • createLeftButton

      private void createLeftButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!
    • createTreeAButton

      private void createTreeAButton(boolean noImage)
      creates a button with either the image of an arrow (leftarrow.gif) or with the text "Send left" or "Send up".
      Type Parameters:
      code - noImage DOCUMENT ME! uses text. false displays the image.
    • createTreeBButton

      private void createTreeBButton(boolean noImage)
      creates a button with either the image of an arrow (rightarrow.gif) or with the text "Send right" or "Send down".
      Type Parameters:
      code - noImage DOCUMENT ME! uses text. false displays the image.
    • createRightButton

      private void createRightButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!
    • createUpButton

      private void createUpButton(boolean noImage)
      convenience Method.
      Parameters:
      noImage - DOCUMENT ME!