WebPanel
Date: 2019-10-22

org.openscience.jmol.app.webexport

## Class WebPanel

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

- All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ListSelectionListener
  Direct Known Subclasses:
    PopInJmol, ScriptButtons

      abstract class WebPanel
      extends javax.swing.JPanel
      implements java.awt.event.ActionListener, javax.swing.event.ListSelectionListener, java.awt.event.ItemListener

- - ### Nested Class Summary

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

    - ### 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.JButton` | `addInstanceButton`
    `protected java.lang.String` | `appletInfoDivs`
    `protected javax.swing.JSpinner` | `appletSizeSpinnerH`
    `protected javax.swing.JSpinner` | `appletSizeSpinnerP`
    `protected javax.swing.JSpinner` | `appletSizeSpinnerW`
    `private javax.swing.JButton` | `deleteInstanceButton`
    `private javax.swing.JScrollPane` | `editorScrollPane`
    `private int` | `errCount`
    `private javax.swing.JFileChooser` | `fc`
    `private javax.swing.JButton` | `helpButton`
    `protected java.lang.String` | `htmlAppletTemplate`
    `private java.lang.String` | `htmlPath`
    `protected javax.swing.JList<JmolInstance>` | `instanceList`
    `protected java.lang.String` | `listLabel`
    `private javax.swing.JTextField` | `localAppletPath`
    `protected int` | `nWidgets`
    `private javax.swing.JTextField` | `pageAuthorName`
    `private int` | `panelIndex`
    `protected java.lang.String` | `panelName`
    `private javax.swing.JTextField` | `remoteAppletPath`
    `private javax.swing.JButton` | `saveButton`
    `private javax.swing.JButton` | `showInstanceButton`
    `protected Widgets` | `theWidgets`
    `private javax.swing.JButton` | `viewButton`
    `protected Viewer` | `vwr`
    `private javax.swing.JTextField` | `webPageTitle`
    `private WebPanel[]` | `webPanels`
    `private java.awt.Checkbox[]` | `widgetCheckboxes`

    - ### 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 java.awt.image.ImageObserver

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

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `WebPanel(Viewer vwr, javax.swing.JFileChooser fc, WebPanel[] webPanels, int panelIndex)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `actionPerformed(java.awt.event.ActionEvent e)`
    `javajs.util.BS` | `allSelectedWidgets()`
    `(package private) abstract javax.swing.JPanel` | `appletParamPanel()`
    `static boolean` | `checkOption(java.lang.Object o)`
    `private java.lang.String` | `copyandUnzip(java.lang.String fullPathName, java.lang.String dataPath, java.lang.String name)` Based on code available at Java2s.com
    `private java.lang.String` | `copyBinaryFile(java.lang.String fullPathName, java.lang.String dataPath)`
    `(package private) void` | `enableButtons(javax.swing.JList<?> list)`
    `(package private) java.lang.String` | `fileWriter(java.io.File file, javax.swing.JList<JmolInstance> InstanceList)`
    `(package private) abstract java.lang.String` | `fixHtml(java.lang.String html)`
    `(package private) abstract java.lang.String` | `getAppletDefs(int i, java.lang.String html, java.lang.StringBuilder appletDefs, JmolInstance instance)`
    `(package private) int` | `getInfoHeight()`
    `(package private) int` | `getInfoWidth()`
    `protected javax.swing.JList<JmolInstance>` | `getInstanceList()`
    `(package private) java.lang.String` | `getInstanceName(int i)`
    `private javax.swing.JPanel` | `getLeftPanel(int w, int h)`
    `(package private) javax.swing.JPanel` | `getPanel(int infoWidth, int infoHeight)`
    `void` | `itemStateChanged(java.awt.event.ItemEvent e)`
    `private java.lang.String` | `jmolJarPath()` Returns a string version of the path to Jmol.jar (including the trailing Jmol.jar) decoded using the system default text encoding (usually UTF-8).
    `private java.net.URL` | `jmolJarURL()`
    `static java.lang.String` | `replaceQuotedStrings(java.lang.String s, java.util.ArrayList<java.lang.String> list, java.util.ArrayList<java.lang.String> newList)`
    `(package private) void` | `syncLists()`
    `void` | `valueChanged(javax.swing.event.ListSelectionEvent e)`
    `private static java.lang.String` | `writeFileZipped(java.lang.String[] retName, byte[] data, int maxUnzipped)`

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

    - #### panelName

          protected java.lang.String panelName

    - #### htmlAppletTemplate

          protected java.lang.String htmlAppletTemplate

    - #### listLabel

          protected java.lang.String listLabel

    - #### appletInfoDivs

          protected java.lang.String appletInfoDivs

    - #### appletSizeSpinnerW

          protected javax.swing.JSpinner appletSizeSpinnerW

    - #### appletSizeSpinnerH

          protected javax.swing.JSpinner appletSizeSpinnerH

    - #### appletSizeSpinnerP

          protected javax.swing.JSpinner appletSizeSpinnerP

    - #### editorScrollPane

          private javax.swing.JScrollPane editorScrollPane

    - #### saveButton

          private javax.swing.JButton saveButton

    - #### viewButton

          private javax.swing.JButton viewButton

    - #### helpButton

          private javax.swing.JButton helpButton

    - #### addInstanceButton

          private javax.swing.JButton addInstanceButton

    - #### deleteInstanceButton

          private javax.swing.JButton deleteInstanceButton

    - #### showInstanceButton

          private javax.swing.JButton showInstanceButton

    - #### remoteAppletPath

          private javax.swing.JTextField remoteAppletPath

    - #### localAppletPath

          private javax.swing.JTextField localAppletPath

    - #### pageAuthorName

          private javax.swing.JTextField pageAuthorName

    - #### webPageTitle

          private javax.swing.JTextField webPageTitle

    - #### fc

          private javax.swing.JFileChooser fc

    - #### instanceList

          protected javax.swing.JList<JmolInstance> instanceList

    - #### theWidgets

          protected Widgets theWidgets

    - #### nWidgets

          protected int nWidgets

    - #### widgetCheckboxes

          private java.awt.Checkbox[] widgetCheckboxes

    - #### vwr

          protected Viewer vwr

    - #### panelIndex

          private int panelIndex

    - #### webPanels

          private WebPanel[] webPanels

    - #### errCount

          private int errCount

    - #### htmlPath

          private java.lang.String htmlPath

  - ### Constructor Detail

    - #### WebPanel

          protected WebPanel(Viewer vwr,
                             javax.swing.JFileChooser fc,
                             WebPanel[] webPanels,
                             int panelIndex)

  - ### Method Detail

    - #### getAppletDefs

          abstract java.lang.String getAppletDefs(int i,
                                                  java.lang.String html,
                                                  java.lang.StringBuilder appletDefs,
                                                  JmolInstance instance)

    - #### fixHtml

          abstract java.lang.String fixHtml(java.lang.String html)

    - #### appletParamPanel

          abstract javax.swing.JPanel appletParamPanel()

    - #### getPanel

          javax.swing.JPanel getPanel(int infoWidth,
                                      int infoHeight)

    - #### getInstanceList

          protected javax.swing.JList<JmolInstance> getInstanceList()

    - #### getLeftPanel

          private javax.swing.JPanel getLeftPanel(int w,
                                                  int h)

      Parameters:
        `w` - UNUSED
        `h` - UNUSED
      Returns:
        left panel

    - #### getInfoWidth

          int getInfoWidth()

    - #### getInfoHeight

          int getInfoHeight()

    - #### itemStateChanged

          public void itemStateChanged(java.awt.event.ItemEvent e)

      Specified by:
        `itemStateChanged` in interface `java.awt.event.ItemListener`

    - #### actionPerformed

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

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

    - #### valueChanged

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

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

    - #### getInstanceName

          java.lang.String getInstanceName(int i)

    - #### fileWriter

          java.lang.String fileWriter(java.io.File file,
                                      javax.swing.JList<JmolInstance> InstanceList)
                               throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### replaceQuotedStrings

          public static java.lang.String replaceQuotedStrings(java.lang.String s,
                                                              java.util.ArrayList<java.lang.String> list,
                                                              java.util.ArrayList<java.lang.String> newList)

    - #### allSelectedWidgets

          public javajs.util.BS allSelectedWidgets()

    - #### copyBinaryFile

          private java.lang.String copyBinaryFile(java.lang.String fullPathName,
                                                  java.lang.String dataPath)

    - #### writeFileZipped

          private static java.lang.String writeFileZipped(java.lang.String[] retName,
                                                          byte[] data,
                                                          int maxUnzipped)

    - #### copyandUnzip

          private java.lang.String copyandUnzip(java.lang.String fullPathName,
                                                java.lang.String dataPath,
                                                java.lang.String name)

      Based on code available at Java2s.com
      Parameters:
        `fullPathName` - String containing path to the zip file being copied and expanded
        `dataPath` - String containing path to the directory into which the file will be unzipped
        `name` - String containing name of the zipfile without the path (e.g. xxx.zip)
      Returns:
        string containing path to where file copied.

    - #### jmolJarURL

          private java.net.URL jmolJarURL()

      Returns:
        the URL pointing to the Jmol.jar that is running

    - #### jmolJarPath

          private java.lang.String jmolJarPath()
                                        throws java.io.UnsupportedEncodingException

      Returns a string version of the path to Jmol.jar (including the trailing Jmol.jar) decoded using the system default text encoding (usually UTF-8).
      Returns:
        system text encoding translated string version of the path to Jmol.jar
      Throws:
        `java.io.UnsupportedEncodingException` - if the encoding can't be used to decode the URL or the encoding is bad.

    - #### syncLists

          void syncLists()

    - #### enableButtons

          void enableButtons(javax.swing.JList<?> list)

    - #### checkOption

          public static boolean checkOption(java.lang.Object o)