edu.wisc.ssec.mcidasv.supportform
Class SupportForm

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by edu.wisc.ssec.mcidasv.supportform.SupportForm
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants

public class SupportForm
extends JFrame

This class handles all the GUI elements of a McIDAS-V support request.

See Also:
Serialized Form

Nested Class Summary
private  class SupportForm.CancelListener
           
 
Nested classes/interfaces inherited from class javax.swing.JFrame
JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
private  JTextField attachmentOneField
           
private  JTextField attachmentTwoField
           
private  JCheckBox bundleCheckBox
           
private  JButton cancelButton
           
private  JCheckBox ccCheckBox
           
private  StateCollector collector
           
private  JTextField confirmField
           
private  JPanel contentPane
           
private  JTextArea descriptionArea
           
private  JTextField emailField
           
private static ExecutorService exec
           
private static String HELP_ID
           
private  JButton helpButton
           
private  SupportForm.CancelListener listener
           
private  JTextField organizationField
           
static String PROP_SUPPORTREQ_BUNDLE
           
static String PROP_SUPPORTREQ_CC
           
static String PROP_SUPPORTREQ_CONFIRMEMAIL
           
private  JButton sendButton
           
private  IdvObjectStore store
           
private  JTextField subjectField
           
private  JTextField userField
           
 
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
SupportForm(IdvObjectStore store, StateCollector collector)
          Creates a support request form that collects information about the current McIDAS-V session.
 
Method Summary
private static void attachFileToField(JTextField field)
           
private  void attachmentOneButtonActionPerformed(ActionEvent evt)
           
private  void attachmentOneFieldMouseClicked(MouseEvent evt)
           
private  void attachmentTwoButtonActionPerformed(ActionEvent evt)
           
private  void attachmentTwoFieldMouseClicked(MouseEvent evt)
           
 boolean canBundleState()
           
 boolean canSendLog()
           
 boolean checkEmailAddresses()
          Checks emailField and confirmField to see if they match (case is ignored).
 String getAttachmentOne()
          Returns whatever file path has monopolized attachmentOneField.
 String getAttachmentTwo()
          Returns whatever file path has appeared within attachmentTwoField.
 byte[] getBundledState()
           
 String getBundledStateName()
           
 String getConfirmedEmail()
          Returns whatever currently lives in confirmField.
 String getDescription()
          Returns whatever is ensconced inside descriptionArea.
 String getEmail()
          Returns whatever currently lives in emailField.
 byte[] getExtraState()
           
 String getExtraStateName()
           
 String getLogPath()
           
 String getOrganization()
          Returns whatever has commandeered organizationField.
 boolean getSendBundle()
           
 boolean getSendCopy()
           
 String getSubject()
          Returns whatever resides in subjectField.
 String getUser()
          Returns whatever occupies userField.
 boolean hasAttachmentOne()
          Checks whether or not the user has attached a file in the "first file" slot.
 boolean hasAttachmentTwo()
          Checks whether or not the user has attached a file in the "second file" slot.
 void initComponents()
          Create the frame.
static void main(String[] args)
          Launch a test of the Support Request Form.
private  void otherDoFocusThingNow()
          Due to some fields persisting user input between McIDAS-V sessions we set the focus to be on the first of these fields lacking input.
private  void persistInput()
          Saves user input for the following: name, email address, email address confirmation, organization, whether or not to CC the user a copy, and whether or not a "state" bundle should be included.
private  void sendRequest(ActionEvent evt)
           
 void showFailure(String reason)
           
private  void showInvalidInputs()
           
 void showSuccess()
           
private  void unpersistInput()
          Loads user input for the following: name, email address, email address confirmation, organization, whether or not to CC the user a copy, and whether or not a "state" bundle should be included.
private  boolean validInput()
          Checks to see if there is anything in the name, email, email confirmation, subject, and description.
 
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, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, 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, transferFocusBackward, 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, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, 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, isOpaque, 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, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, 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

PROP_SUPPORTREQ_BUNDLE

public static final String PROP_SUPPORTREQ_BUNDLE
See Also:
Constant Field Values

PROP_SUPPORTREQ_CC

public static final String PROP_SUPPORTREQ_CC
See Also:
Constant Field Values

PROP_SUPPORTREQ_CONFIRMEMAIL

public static final String PROP_SUPPORTREQ_CONFIRMEMAIL
See Also:
Constant Field Values

HELP_ID

private static final String HELP_ID
See Also:
Constant Field Values

exec

private static ExecutorService exec

store

private final IdvObjectStore store

collector

private final StateCollector collector

listener

private final SupportForm.CancelListener listener

contentPane

private JPanel contentPane

userField

private JTextField userField

emailField

private JTextField emailField

confirmField

private JTextField confirmField

organizationField

private JTextField organizationField

subjectField

private JTextField subjectField

attachmentOneField

private JTextField attachmentOneField

attachmentTwoField

private JTextField attachmentTwoField

descriptionArea

private JTextArea descriptionArea

bundleCheckBox

private JCheckBox bundleCheckBox

ccCheckBox

private JCheckBox ccCheckBox

sendButton

private JButton sendButton

cancelButton

private JButton cancelButton

helpButton

private JButton helpButton
Constructor Detail

SupportForm

public SupportForm(IdvObjectStore store,
                   StateCollector collector)
Creates a support request form that collects information about the current McIDAS-V session.

Parameters:
store - Storage for persisted user input. Should not be null.
collector - Collects information about the current session.
Method Detail

persistInput

private void persistInput()
Saves user input for the following: name, email address, email address confirmation, organization, whether or not to CC the user a copy, and whether or not a "state" bundle should be included.

You should initialize the GUI components before calling this method.


unpersistInput

private void unpersistInput()
Loads user input for the following: name, email address, email address confirmation, organization, whether or not to CC the user a copy, and whether or not a "state" bundle should be included.

You should initialize the GUI components before calling this method.


initComponents

public void initComponents()
Create the frame.


checkEmailAddresses

public boolean checkEmailAddresses()
Checks emailField and confirmField to see if they match (case is ignored).

Returns:
true if there is a match, false otherwise.

getUser

public String getUser()
Returns whatever occupies userField.

Returns:
User's name.

getEmail

public String getEmail()
Returns whatever currently lives in emailField.

Returns:
User's email address.

getConfirmedEmail

public String getConfirmedEmail()
Returns whatever currently lives in confirmField.

Returns:
User's confirmed email address.

getSubject

public String getSubject()
Returns whatever resides in subjectField.

Returns:
Subject of the support request.

getOrganization

public String getOrganization()
Returns whatever has commandeered organizationField.

Returns:
Organization to which the user belongs.

getDescription

public String getDescription()
Returns whatever is ensconced inside descriptionArea.

Returns:
Body of the user's email.

hasAttachmentOne

public boolean hasAttachmentOne()
Checks whether or not the user has attached a file in the "first file" slot.

Returns:
true if there's a file, false otherwise.

hasAttachmentTwo

public boolean hasAttachmentTwo()
Checks whether or not the user has attached a file in the "second file" slot.

Returns:
true if there's a file, false otherwise.

getAttachmentOne

public String getAttachmentOne()
Returns whatever file path has monopolized attachmentOneField.

Returns:
Path to the first file attachment, or a blank string if no file has been selected.

getAttachmentTwo

public String getAttachmentTwo()
Returns whatever file path has appeared within attachmentTwoField.

Returns:
Path to the second file attachment, or a blank string if no file has been selected.

getSendCopy

public boolean getSendCopy()

getSendBundle

public boolean getSendBundle()

getExtraState

public byte[] getExtraState()

getExtraStateName

public String getExtraStateName()

canBundleState

public boolean canBundleState()

getBundledState

public byte[] getBundledState()

getBundledStateName

public String getBundledStateName()

canSendLog

public boolean canSendLog()

getLogPath

public String getLogPath()

showSuccess

public void showSuccess()

showFailure

public void showFailure(String reason)

validInput

private boolean validInput()
Checks to see if there is anything in the name, email, email confirmation, subject, and description.

Returns:
true if all of the required fields have some sort of input, false otherwise.

attachmentOneButtonActionPerformed

private void attachmentOneButtonActionPerformed(ActionEvent evt)

attachmentTwoButtonActionPerformed

private void attachmentTwoButtonActionPerformed(ActionEvent evt)

attachmentOneFieldMouseClicked

private void attachmentOneFieldMouseClicked(MouseEvent evt)

attachmentTwoFieldMouseClicked

private void attachmentTwoFieldMouseClicked(MouseEvent evt)

showInvalidInputs

private void showInvalidInputs()

sendRequest

private void sendRequest(ActionEvent evt)

otherDoFocusThingNow

private void otherDoFocusThingNow()
Due to some fields persisting user input between McIDAS-V sessions we set the focus to be on the first of these fields lacking input.


attachFileToField

private static void attachFileToField(JTextField field)

main

public static void main(String[] args)
Launch a test of the Support Request Form.

Parameters:
args - Ignored.