SurfaceToolGUI
Date: 2019-10-22

org.openscience.jmol.app.surfacetool

## Class SurfaceToolGUI

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JPanel
        - - org.openscience.jmol.app.surfacetool.SurfaceToolGUI

- All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.WindowFocusListener, java.awt.event.WindowListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ChangeListener, javax.swing.event.ListSelectionListener, javax.swing.WindowConstants

      class SurfaceToolGUI
      extends javax.swing.JPanel
      implements javax.swing.WindowConstants, java.awt.event.WindowListener, java.awt.event.WindowFocusListener, javax.swing.event.ChangeListener, java.awt.event.ActionListener, javax.swing.event.ListSelectionListener

  GUI for the Jmol surfaceTool
  Author:
    Jonathan Gutow (gutow@uwosh.edu)

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `SurfaceToolGUI.SurfaceListCellRenderer`

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

      `javax.swing.JPanel.AccessibleJPanel`

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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private javax.swing.JRadioButton` | `absoluteButton`
    `private javax.swing.JComboBox<java.lang.String>` | `angleUnitsList`
    `private javax.swing.JPanel` | `angleUnitsPanel`
    `private javax.swing.JSlider` | `angleXYSlider`
    `private javax.swing.JSlider` | `angleZSlider`
    `private javax.swing.JCheckBox` | `boundaryPlaneCheck`
    `private javax.swing.JCheckBox` | `capCheck`
    `private javax.swing.JPanel` | `capPlanesPanel`
    `private javax.swing.JCheckBox` | `ghostCheck`
    `private javax.swing.JPanel` | `ghostPanel`
    `private HistoryFile` | `historyFile`
    `private java.lang.String` | `histWinName`
    `private javax.swing.JPanel` | `normAnglePanel`
    `private javax.swing.JPanel` | `objectsPanel`
    `private javax.swing.JPanel` | `originPanel`
    `private javax.swing.JSlider` | `positionSlider`
    `private javax.swing.JPanel` | `positionThicknessPanel`
    `private SurfaceTool` | `slicer`
    `private javax.swing.JFrame` | `slicerFrame`
    `private javax.swing.JPanel` | `sliderPanel`
    `private javax.swing.JList<SurfaceStatus>` | `surfaceList`
    `private javax.swing.JScrollPane` | `surfaceScrollPane`
    `private javax.swing.JPanel` | `tabPanel`
    `private javax.swing.JSlider` | `thicknessSlider`
    `private javax.swing.JPanel` | `topPanel`
    `private javax.swing.JRadioButton` | `viewCenterButton`
    `private javax.swing.ButtonGroup` | `whichOrigin`

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

      `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

      `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

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

      `DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_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
    `SurfaceToolGUI(boolean isDoubleBuffered)`
    `SurfaceToolGUI(JmolViewer vwr, HistoryFile hfile, java.lang.String winName, SurfaceTool slicer)` Builds and opens a GUI to control slicing.
    `SurfaceToolGUI(java.awt.LayoutManager layout)`
    `SurfaceToolGUI(java.awt.LayoutManager layout, boolean isDoubleBuffered)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `actionPerformed(java.awt.event.ActionEvent e)`
    `(package private) javax.swing.JFrame` | `getFrame()`
    `(package private) void` | `saveHistory()`
    `private void` | `sliceSelected()`
    `void` | `stateChanged(javax.swing.event.ChangeEvent e)`
    `(package private) void` | `toFront()` Brings the surfaceTool to the front and updates sliders, etc...
    `private void` | `updateAngleSliders()`
    `private void` | `updatePositionSlider()`
    `(package private) void` | `updateSurfaceList()`
    `private void` | `updateThicknessSlider()`
    `void` | `valueChanged(javax.swing.event.ListSelectionEvent e)`
    `void` | `windowActivated(java.awt.event.WindowEvent e)`
    `void` | `windowClosed(java.awt.event.WindowEvent e)`
    `void` | `windowClosing(java.awt.event.WindowEvent e)`
    `void` | `windowDeactivated(java.awt.event.WindowEvent e)`
    `void` | `windowDeiconified(java.awt.event.WindowEvent e)`
    `void` | `windowGainedFocus(java.awt.event.WindowEvent e)`
    `void` | `windowIconified(java.awt.event.WindowEvent e)`
    `void` | `windowLostFocus(java.awt.event.WindowEvent e)`
    `void` | `windowOpened(java.awt.event.WindowEvent e)`

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

      `getAccessibleContext, getUI, getUIClassID, paramString, setUI, 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, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, 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, 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, transferFocusBackward, transferFocusUpCycle`

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

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

- - ### Field Detail

    - #### historyFile

          private HistoryFile historyFile

    - #### histWinName

          private java.lang.String histWinName

    - #### slicerFrame

          private javax.swing.JFrame slicerFrame

    - #### slicer

          private SurfaceTool slicer

    - #### tabPanel

          private javax.swing.JPanel tabPanel

    - #### objectsPanel

          private javax.swing.JPanel objectsPanel

    - #### topPanel

          private javax.swing.JPanel topPanel

    - #### angleUnitsPanel

          private javax.swing.JPanel angleUnitsPanel

    - #### angleUnitsList

          private javax.swing.JComboBox<java.lang.String> angleUnitsList

    - #### originPanel

          private javax.swing.JPanel originPanel

    - #### viewCenterButton

          private javax.swing.JRadioButton viewCenterButton

    - #### absoluteButton

          private javax.swing.JRadioButton absoluteButton

    - #### capCheck

          private javax.swing.JCheckBox capCheck

    - #### capPlanesPanel

          private javax.swing.JPanel capPlanesPanel

    - #### ghostPanel

          private javax.swing.JPanel ghostPanel

    - #### ghostCheck

          private javax.swing.JCheckBox ghostCheck

    - #### boundaryPlaneCheck

          private javax.swing.JCheckBox boundaryPlaneCheck

    - #### sliderPanel

          private javax.swing.JPanel sliderPanel

    - #### normAnglePanel

          private javax.swing.JPanel normAnglePanel

    - #### angleXYSlider

          private javax.swing.JSlider angleXYSlider

    - #### angleZSlider

          private javax.swing.JSlider angleZSlider

    - #### positionThicknessPanel

          private javax.swing.JPanel positionThicknessPanel

    - #### positionSlider

          private javax.swing.JSlider positionSlider

    - #### thicknessSlider

          private javax.swing.JSlider thicknessSlider

    - #### whichOrigin

          private javax.swing.ButtonGroup whichOrigin

    - #### surfaceScrollPane

          private javax.swing.JScrollPane surfaceScrollPane

    - #### surfaceList

          private javax.swing.JList<SurfaceStatus> surfaceList

  - ### Constructor Detail

    - #### SurfaceToolGUI

          SurfaceToolGUI(JmolViewer vwr,
                         HistoryFile hfile,
                         java.lang.String winName,
                         SurfaceTool slicer)

      Builds and opens a GUI to control slicing. Called automatically when a new SurfaceTool is created with useGUI = true.
      Parameters:
        `vwr` - (JmolViewer) the vwr that called for this surfaceTool.
        `hfile` - (HistoryFile) the history file used by this instance of Jmol
        `winName` - (String) name used for this window in history probably JmolPanel.SURFACETOOL_WINDOW_NAME
        `slicer` - (SurfaceTool) the surfaceTool that activated this GUI

    - #### SurfaceToolGUI

          SurfaceToolGUI(java.awt.LayoutManager layout)

      Parameters:
        `layout` -

    - #### SurfaceToolGUI

          SurfaceToolGUI(boolean isDoubleBuffered)

      Parameters:
        `isDoubleBuffered` -

    - #### SurfaceToolGUI

          SurfaceToolGUI(java.awt.LayoutManager layout,
                         boolean isDoubleBuffered)

      Parameters:
        `layout` -
        `isDoubleBuffered` -

  - ### Method Detail

    - #### actionPerformed

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

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

    - #### stateChanged

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

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

    - #### valueChanged

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

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

    - #### sliceSelected

          private void sliceSelected()

    - #### updatePositionSlider

          private void updatePositionSlider()

    - #### updateThicknessSlider

          private void updateThicknessSlider()

    - #### updateAngleSliders

          private void updateAngleSliders()

    - #### updateSurfaceList

          void updateSurfaceList()

    - #### saveHistory

          void saveHistory()

    - #### getFrame

          javax.swing.JFrame getFrame()

      Returns:
        (JFrame) The frame for the slicerGUI

    - #### toFront

          void toFront()

      Brings the surfaceTool to the front and updates sliders, etc...

    - #### windowGainedFocus

          public void windowGainedFocus(java.awt.event.WindowEvent e)

      Specified by:
        `windowGainedFocus` in interface `java.awt.event.WindowFocusListener`

    - #### windowLostFocus

          public void windowLostFocus(java.awt.event.WindowEvent e)

      Specified by:
        `windowLostFocus` in interface `java.awt.event.WindowFocusListener`

    - #### windowOpened

          public void windowOpened(java.awt.event.WindowEvent e)

      Specified by:
        `windowOpened` in interface `java.awt.event.WindowListener`

    - #### windowClosing

          public void windowClosing(java.awt.event.WindowEvent e)

      Specified by:
        `windowClosing` in interface `java.awt.event.WindowListener`

    - #### windowClosed

          public void windowClosed(java.awt.event.WindowEvent e)

      Specified by:
        `windowClosed` in interface `java.awt.event.WindowListener`

    - #### windowIconified

          public void windowIconified(java.awt.event.WindowEvent e)

      Specified by:
        `windowIconified` in interface `java.awt.event.WindowListener`

    - #### windowDeiconified

          public void windowDeiconified(java.awt.event.WindowEvent e)

      Specified by:
        `windowDeiconified` in interface `java.awt.event.WindowListener`

    - #### windowActivated

          public void windowActivated(java.awt.event.WindowEvent e)

      Specified by:
        `windowActivated` in interface `java.awt.event.WindowListener`

    - #### windowDeactivated

          public void windowDeactivated(java.awt.event.WindowEvent e)

      Specified by:
        `windowDeactivated` in interface `java.awt.event.WindowListener`