AtomSetChooser
Date: 2019-10-22

org.openscience.jmol.app.jmolpanel

## Class AtomSetChooser

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - java.awt.Window
      - - java.awt.Frame
        - - javax.swing.JFrame
          - - org.openscience.jmol.app.jmolpanel.AtomSetChooser

- All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.lang.Runnable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ChangeListener, javax.swing.event.TreeSelectionListener, javax.swing.RootPaneContainer, javax.swing.WindowConstants

      public class AtomSetChooser
      extends javax.swing.JFrame
      implements javax.swing.event.TreeSelectionListener, java.beans.PropertyChangeListener, java.awt.event.ActionListener, javax.swing.event.ChangeListener, java.lang.Runnable

  A JFrame that allows for choosing an Atomset to view.
  Author:
    René Kanters, University of Richmond
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `private static class` | `AtomSetChooser.AtomSet` Objects in the AtomSetChooser tree

    - ### Nested classes/interfaces inherited from class javax.swing.JFrame

      `javax.swing.JFrame.AccessibleJFrame`

    - ### Nested classes/interfaces inherited from class java.awt.Frame

      `java.awt.Frame.AccessibleAWTFrame`

    - ### Nested classes/interfaces inherited from class java.awt.Window

      `java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type`

    - ### 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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static float` | `AMPLITUDE_MAX` Maximum value for vibration scale.
    `private static float` | `AMPLITUDE_PRECISION` Precision of the vibration scale slider
    `private static float` | `AMPLITUDE_VALUE` Initial value of vibration scale.
    `private javax.swing.JSlider` | `amplitudeSlider`
    `private java.lang.Thread` | `animThread`
    `(package private) static java.lang.String` | `COLLECTION` String for prefix/resource identifier for the collection area.
    `private int` | `currentIndex`
    `(package private) static java.lang.String` | `FF`
    `private static int` | `FPS_MAX` Maximum value for the fps slider.
    `private javax.swing.JSlider` | `fpsSlider`
    `private int[]` | `indexes` Sequence of atom set indexes in current tree selection for a branch, or siblings for a leaf.
    `private javax.swing.JLabel` | `infoLabel`
    `(package private) static java.lang.String` | `NEXT`
    `(package private) static java.lang.String` | `PAUSE`
    `private static float` | `PERIOD_MAX` Maximum value for the vibration period in seconds.
    `private static float` | `PERIOD_PRECISION` Precision of the vibration period slider in seconds.
    `private static float` | `PERIOD_VALUE` Initial value for the vibration period in seconds.
    `private javax.swing.JSlider` | `periodSlider`
    `(package private) static java.lang.String` | `PLAY`
    `(package private) static java.lang.String` | `PREVIOUS`
    `private javax.swing.JTextArea` | `propertiesTextArea`
    `private static int` | `RADIUS_MAX` Maximum value for vector radius.
    `private static int` | `RADIUS_VALUE` Initial value of vector radius.
    `private javax.swing.JSlider` | `radiusSlider`
    `private int` | `radiusValue`
    `private javax.swing.JCheckBox` | `repeatCheckBox`
    `(package private) static java.lang.String` | `REWIND`
    `(package private) static java.lang.String` | `SAVE`
    `private javax.swing.JFileChooser` | `saveChooser`
    `private static float` | `SCALE_MAX` Maximum value for vector scale.
    `private static float` | `SCALE_PRECISION` Precision of the vector scale slider
    `private static float` | `SCALE_VALUE` Initial value of vector scale.
    `private javax.swing.JSlider` | `scaleSlider`
    `private javax.swing.JSlider` | `selectSlider`
    `private javax.swing.JTree` | `tree`
    `private javax.swing.tree.DefaultTreeModel` | `treeModel`
    `(package private) static java.lang.String` | `VECTOR` String for prefix/resource identifier for the vector area.
    `private Viewer` | `vwr`

    - ### Fields inherited from class javax.swing.JFrame

      `accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled`

    - ### Fields inherited from class java.awt.Frame

      `CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR`

    - ### Fields inherited from class java.awt.Component

      `BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface javax.swing.WindowConstants

      `DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AtomSetChooser(Viewer vwr, javax.swing.JFrame frame)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `actionPerformed(java.awt.event.ActionEvent e)`
    `private void` | `createTreeModel()` Creates the treeModel of the AtomSets available in the JmolViewer
    `private javax.swing.JPanel` | `createVCRController(java.lang.String section)` Creates a VCR type set of controller inside a JPanel.
    `void` | `findFrequency(int index, int increment)` Have the vwr show a particular frame with frequencies if it can be found.
    `private void` | `layoutWindow(java.awt.Container container)`
    `void` | `propertyChange(java.beans.PropertyChangeEvent propertyChangeEvent)`
    `void` | `run()`
    `void` | `saveXYZCollection()` Saves the currently active collection as a multistep XYZ file.
    `private void` | `script(java.lang.String cmd)`
    `protected void` | `setIndexes(javax.swing.tree.DefaultMutableTreeNode node)` Sets the indexes to the atomSetIndex values of each leaf of the node.
    `protected void` | `showAtomSetIndex(int index, boolean bSetSelectSlider)` Show an atom set from the indexes array
    `protected void` | `showAuxiliaryInfo(java.util.Map<java.lang.String,java.lang.Object> auxiliaryInfo)` Shows the auxiliary information in the propertiesPane of the AtomSetChooser window
    `protected void` | `showProperties(java.util.Properties properties)` Shows the properties in the propertiesPane of the AtomSetChooser window
    `void` | `stateChanged(javax.swing.event.ChangeEvent e)`
    `void` | `valueChanged(javax.swing.event.TreeSelectionEvent e)`

    - ### Methods inherited from class javax.swing.JFrame

      `addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update`

    - ### Methods inherited from class java.awt.Frame

      `addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated`

    - ### Methods inherited from class java.awt.Window

      `addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFront`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.awt.MenuContainer

      `getFont, postEvent`

- - ### Field Detail

    - #### animThread

          private java.lang.Thread animThread

    - #### propertiesTextArea

          private javax.swing.JTextArea propertiesTextArea

    - #### tree

          private javax.swing.JTree tree

    - #### treeModel

          private javax.swing.tree.DefaultTreeModel treeModel

    - #### vwr

          private Viewer vwr

    - #### repeatCheckBox

          private javax.swing.JCheckBox repeatCheckBox

    - #### selectSlider

          private javax.swing.JSlider selectSlider

    - #### infoLabel

          private javax.swing.JLabel infoLabel

    - #### fpsSlider

          private javax.swing.JSlider fpsSlider

    - #### amplitudeSlider

          private javax.swing.JSlider amplitudeSlider

    - #### periodSlider

          private javax.swing.JSlider periodSlider

    - #### scaleSlider

          private javax.swing.JSlider scaleSlider

    - #### radiusSlider

          private javax.swing.JSlider radiusSlider

    - #### saveChooser

          private javax.swing.JFileChooser saveChooser

    - #### REWIND

          static final java.lang.String REWIND

      See Also:
        Constant Field Values

    - #### PREVIOUS

          static final java.lang.String PREVIOUS

      See Also:
        Constant Field Values

    - #### PLAY

          static final java.lang.String PLAY

      See Also:
        Constant Field Values

    - #### PAUSE

          static final java.lang.String PAUSE

      See Also:
        Constant Field Values

    - #### NEXT

          static final java.lang.String NEXT

      See Also:
        Constant Field Values

    - #### FF

          static final java.lang.String FF

      See Also:
        Constant Field Values

    - #### SAVE

          static final java.lang.String SAVE

      See Also:
        Constant Field Values

    - #### COLLECTION

          static final java.lang.String COLLECTION

      String for prefix/resource identifier for the collection area. This value is used in the Jmol properties files.
      See Also:
        Constant Field Values

    - #### VECTOR

          static final java.lang.String VECTOR

      String for prefix/resource identifier for the vector area. This value is used in the Jmol properties files.
      See Also:
        Constant Field Values

    - #### indexes

          private int[] indexes

      Sequence of atom set indexes in current tree selection for a branch, or siblings for a leaf.

    - #### currentIndex

          private int currentIndex

    - #### FPS_MAX

          private static final int FPS_MAX

      Maximum value for the fps slider.
      See Also:
        Constant Field Values

    - #### AMPLITUDE_PRECISION

          private static final float AMPLITUDE_PRECISION

      Precision of the vibration scale slider
      See Also:
        Constant Field Values

    - #### AMPLITUDE_MAX

          private static final float AMPLITUDE_MAX

      Maximum value for vibration scale. Should be in preferences?
      See Also:
        Constant Field Values

    - #### AMPLITUDE_VALUE

          private static final float AMPLITUDE_VALUE

      Initial value of vibration scale. Should be in preferences?
      See Also:
        Constant Field Values

    - #### PERIOD_PRECISION

          private static final float PERIOD_PRECISION

      Precision of the vibration period slider in seconds.
      See Also:
        Constant Field Values

    - #### PERIOD_MAX

          private static final float PERIOD_MAX

      Maximum value for the vibration period in seconds. Should be in preferences?
      See Also:
        Constant Field Values

    - #### PERIOD_VALUE

          private static final float PERIOD_VALUE

      Initial value for the vibration period in seconds. Should be in preferences?
      See Also:
        Constant Field Values

    - #### RADIUS_MAX

          private static final int RADIUS_MAX

      Maximum value for vector radius.
      See Also:
        Constant Field Values

    - #### RADIUS_VALUE

          private static final int RADIUS_VALUE

      Initial value of vector radius. Should be in preferences?
      See Also:
        Constant Field Values

    - #### SCALE_PRECISION

          private static final float SCALE_PRECISION

      Precision of the vector scale slider
      See Also:
        Constant Field Values

    - #### SCALE_MAX

          private static final float SCALE_MAX

      Maximum value for vector scale. Should be in preferences?
      See Also:
        Constant Field Values

    - #### SCALE_VALUE

          private static final float SCALE_VALUE

      Initial value of vector scale. Should be in preferences?
      See Also:
        Constant Field Values

    - #### radiusValue

          private int radiusValue

  - ### Constructor Detail

    - #### AtomSetChooser

          public AtomSetChooser(Viewer vwr,
                                javax.swing.JFrame frame)

  - ### Method Detail

    - #### layoutWindow

          private void layoutWindow(java.awt.Container container)

    - #### createVCRController

          private javax.swing.JPanel createVCRController(java.lang.String section)

      Creates a VCR type set of controller inside a JPanel.

      Uses the JmolResourceHandler to get the label for the panel, the images for the buttons, and the tooltips. The button names are `rewind`, `prev`, `play`, `pause`, `next`, and `ff`.

      The handler for the buttons should determine from the getActionCommand which button in which section triggered the actionEvent, which is identified by `{section}.{name}`.

      Parameters:
        `section` - String of the section that the controller belongs to.
      Returns:
        The JPanel

    - #### valueChanged

          public void valueChanged(javax.swing.event.TreeSelectionEvent e)

      Specified by:
        `valueChanged` in interface `javax.swing.event.TreeSelectionListener`

    - #### showAtomSetIndex

          protected void showAtomSetIndex(int index,
                                          boolean bSetSelectSlider)

      Show an atom set from the indexes array
      Parameters:
        `index` - The index in the index array
        `bSetSelectSlider` - If true, updates the selectSlider

    - #### setIndexes

          protected void setIndexes(javax.swing.tree.DefaultMutableTreeNode node)

      Sets the indexes to the atomSetIndex values of each leaf of the node.
      Parameters:
        `node` - The node whose leaf's atomSetIndex values should be used

    - #### actionPerformed

          public void actionPerformed(java.awt.event.ActionEvent e)

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

    - #### saveXYZCollection

          public void saveXYZCollection()

      Saves the currently active collection as a multistep XYZ file.

    - #### findFrequency

          public void findFrequency(int index,
                                    int increment)

      Have the vwr show a particular frame with frequencies if it can be found.
      Parameters:
        `index` - Starting index where to start looking for frequencies
        `increment` - Increment value for how to go through the list

    - #### stateChanged

          public void stateChanged(javax.swing.event.ChangeEvent e)

      Specified by:
        `stateChanged` in interface `javax.swing.event.ChangeListener`

    - #### script

          private void script(java.lang.String cmd)

    - #### showProperties

          protected void showProperties(java.util.Properties properties)

      Shows the properties in the propertiesPane of the AtomSetChooser window
      Parameters:
        `properties` - Properties to be shown.

    - #### showAuxiliaryInfo

          protected void showAuxiliaryInfo(java.util.Map<java.lang.String,java.lang.Object> auxiliaryInfo)

      Shows the auxiliary information in the propertiesPane of the AtomSetChooser window
      Parameters:
        `auxiliaryInfo` - Hashtable to be shown.

    - #### createTreeModel

          private void createTreeModel()

      Creates the treeModel of the AtomSets available in the JmolViewer

    - #### propertyChange

          public void propertyChange(java.beans.PropertyChangeEvent propertyChangeEvent)

      Specified by:
        `propertyChange` in interface `java.beans.PropertyChangeListener`

    - #### run

          public void run()

      Specified by:
        `run` in interface `java.lang.Runnable`