Class JPanelListController

All Implemented Interfaces:
ActionListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, ListSelectionListener
Direct Known Subclasses:
JDialogListSaveSelection.JPanelListSelection, JDialogVOIStatistics.JPanelAddRemoveVOI

public class JPanelListController extends JPanel implements ActionListener, ListSelectionListener
panel to hold and transfer items between two lists. 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 list. It does display the list-control buttons, but the JLists held (ListA and ListB) 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 lists is created seperatly.

Version:
1

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

Author:
david parsons
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Use serialVersionUID for interoperability.
      See Also:
    • listA

      protected JList listA
      upper or left-most list.
    • listB

      protected JList listB
      lower or right-most list.
    • deleteSelection

      private JButton deleteSelection
      'X'.
    • listLayout

      private int listLayout
      DOCUMENT ME!
    • sendAllToListA

      private JButton sendAllToListA
      DOCUMENT ME!
    • sendAllToListB

      private JButton sendAllToListB
      DOCUMENT ME!
    • sendSelectionToListA

      private JButton sendSelectionToListA
      left arrow or up arrow.
    • sendSelectionToListB

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

    • JPanelListController

      public JPanelListController()
      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:
    • JPanelListController

      public JPanelListController(int layout)
      Creates a list controller, with the buttons in the given layout, but which defaults to display images only. The buttons point as if to lists 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:
    • JPanelListController

      public JPanelListController(boolean noImages)
      Creates a list 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 lists 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 lists 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:
    • JPanelListController

      public JPanelListController(int layout, boolean noImages)
      Creates a list 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 lists 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

    • createListControllerDisplay

      public static JSplitPane createListControllerDisplay(JPanelListController controls)
      Creates a simple List controller display. one with the the given controls and with the orientation defined by the control panel. The lists in the control panel are displayed, but if either are null, an new, empty list is provided.

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

      Parameters:
      controls - A JPanelListController to place into a visual display.
      Returns:
      A JSplitPane containing the list controller, formatted as the JPanelListController 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-list, 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 listen for.
    • getLeftList

      public JList getLeftList()
      Convience method to get list A.
      See Also:
    • getListA

      public JList getListA()
      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 list, only the most recent list to be submitted will be retainted.

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

      Returns:
      DOCUMENT ME!
    • getListB

      public JList getListB()
      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 list, only the most recent list to be submitted will be retainted.

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

      Returns:
      ListB is returned.
    • getLowerList

      public JList getLowerList()
      Convience method to get list B.
      Returns:
      ListB is returned.
      See Also:
    • getRightList

      public JList getRightList()
      Convience method to get list B.
      Returns:
      ListB is returned.
      See Also:
    • getUpperList

      public JList getUpperList()
      Convience method to get list A.
      Returns:
      ListA 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.
    • performSendToListA

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

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

      public void setBackArrowEnabled(boolean b)
      A convenience method to set the to-list-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-list-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-list-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-list-B buttons (both selected and all) to the given visible status.
      Parameters:
      v - Whether to make buttons visible
    • setLeftList

      public void setLeftList(JList list)
      Convience method to set list A.
      See Also:
    • setListA

      public void setListA(JList list)
      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 list, only the most recent list to be submitted will be retainted.

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

      Parameters:
      list - DOCUMENT ME!
    • setListB

      public void setListB(JList list)
      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 list, only the most recent list to be submitted will be retainted.

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

      Parameters:
      list - DOCUMENT ME!
    • setLowerList

      public void setLowerList(JList list)
      Convience method to set list B.
      See Also:
    • setRightList

      public void setRightList(JList list)
      Convience method to set list B.
      See Also:
    • setUpperList

      public void setUpperList(JList list)
      Convience method to set list A.
      See Also:
    • valueChanged

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

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

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

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

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

      protected void deleteFrom(JList list)
      Removes all selected items in the given list.
      Parameters:
      list - The list of items.
    • getListLayout

      protected int getListLayout()
      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.
    • removeRepeatedElements

      protected void removeRepeatedElements(JList list)
      Removes all repeated elements in the given list. All selections are lost after the method returns, however, as the list's model has been changed.
      Parameters:
      list - The list which is to have the duplicate items removed.
    • 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 listener, font, borderpaint, and the enable.
      Parameters:
      button - DOCUMENT ME!
      actionLabel - DOCUMENT ME!
      tip - DOCUMENT ME!
    • createAllDownButton

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

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

      private void createAllListAButton(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.
    • createAllListBButton

      private void createAllListBButton(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!
    • createListAButton

      private void createListAButton(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.
    • createListBButton

      private void createListBButton(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!