edu.wisc.ssec.mcidasv.servermanager
Class RemoteEntryEditor

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Dialog
                  extended by javax.swing.JDialog
                      extended by edu.wisc.ssec.mcidasv.servermanager.RemoteEntryEditor
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants

public class RemoteEntryEditor
extends JDialog

Simple dialog that allows the user to define or modify RemoteAddeEntrys.

See Also:
Serialized Form

Nested Class Summary
static class RemoteEntryEditor.AddeStatus
          Possible entry verification states.
private static class RemoteEntryEditor.StatusWrapper
          Associates a RemoteAddeEntry with one of the states from RemoteEntryEditor.AddeStatus.
private  class RemoteEntryEditor.VerifyEntryTask
          Represents an ADDE entry verification task.
private  class RemoteEntryEditor.VerifyHostTask
           
 
Nested classes/interfaces inherited from class javax.swing.JDialog
JDialog.AccessibleJDialog
 
Nested classes/interfaces inherited from class java.awt.Dialog
Dialog.AccessibleAWTDialog, Dialog.ModalExclusionType, Dialog.ModalityType
 
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  JCheckBox acctBox
           
private  JButton addServer
           
private  Set<JTextField> badFields
          Contains any JTextFields that may be in an invalid (to McIDAS-V) state.
private  JButton cancelButton
           
private  JCheckBox capBox
           
private  Set<RemoteAddeEntry> currentEntries
          Current contents of the editor.
private  McVTextField datasetField
           
private  JLabel datasetLabel
           
private  String datasetText
          Initial contents of datasetField.
private  AddeEntry.EditorAction editorAction
          The last dialog action performed by the user.
private  JPanel entryPanel
           
private  EntryStore entryStore
          Reference back to the server manager.
private static Color ERROR_FIELD_COLOR
          Background Color of an "invalid" JTextField.
private static Color ERROR_TEXT_COLOR
          Text Color of an "invalid" JTextField.
private  JCheckBox gridBox
           
private  JCheckBox imageBox
           
private  boolean inErrorState
          Whether or not the editor is prompting the user to adjust input.
private static org.slf4j.Logger logger
          Logger object.
private  JCheckBox navBox
           
private static Color NORMAL_FIELD_COLOR
          Background Color of a "valid" JTextField.
private static Color NORMAL_TEXT_COLOR
          Text Color of a "valid" JTextField.
private  JCheckBox pointBox
           
private static int POOL
          Number of threads in the thread pool.
private static String PREF_FORCE_CAPS
          Whether or not to input in the dataset, username, and project fields should be uppercased.
private  JTextField projField
           
private  JLabel projLabel
           
private  JCheckBox radarBox
           
private  JTextField serverField
           
private  JLabel serverLabel
           
private  String serverText
          Initial contents of serverField.
private  JLabel statusLabel
           
private  JPanel statusPanel
           
private  JCheckBox textBox
           
private  JPanel typePanel
           
private  McVTextField userField
           
private  JLabel userLabel
           
private  JButton verifyAddButton
           
private  JButton verifyServer
           
 
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Dialog
DEFAULT_MODALITY_TYPE
 
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, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
RemoteEntryEditor(EntryStore entryStore, String address, String group)
          Populates the server and dataset text fields with given Strings.
RemoteEntryEditor(Frame parent, boolean modal, TabbedAddeManager manager, EntryStore store)
           
RemoteEntryEditor(Frame parent, boolean modal, TabbedAddeManager manager, EntryStore store, List<RemoteAddeEntry> entries)
           
RemoteEntryEditor(Frame parent, boolean modal, TabbedAddeManager manager, EntryStore store, RemoteAddeEntry entry)
           
 
Method Summary
private  void acctBoxActionPerformed(ActionEvent evt)
           
private  void addEntry()
          Creates new RemoteAddeEntrys based upon the contents of the dialog and adds "them" to the managed servers.
private  void addServerActionPerformed(ActionEvent evt)
           
private  boolean anyBadFields()
          Determines whether or not any fields are in an invalid state.
private static Map<RemoteAddeEntry,RemoteEntryEditor.AddeStatus> bulkPut(Collection<RemoteAddeEntry> entries, RemoteEntryEditor.AddeStatus status)
           
private  void cancelButtonActionPerformed(ActionEvent evt)
           
private  void capBoxActionPerformed(ActionEvent evt)
           
 Set<RemoteAddeEntry> checkGroups(Set<RemoteAddeEntry> entries)
           
 Set<RemoteAddeEntry> checkHosts(Set<RemoteAddeEntry> entries)
          Attempt to verify a Set of RemoteAddeEntrys.
 Set<RemoteAddeEntry> checkHosts2(Set<RemoteAddeEntry> entries)
           
private  void disposeDisplayable(boolean refreshManager)
           
private  void editEntry()
          Replaces the entries within currentEntries with new entries from pollWidgets(boolean).
private  void editServerActionPerformed(ActionEvent evt)
           
private  void formWindowClosed(WindowEvent evt)
           
 AddeEntry.EditorAction getEditorAction()
           
private  boolean getForceMcxCaps()
          Returns the value associated with the PREF_FORCE_CAPS preference.
private  void initComponents(List<RemoteAddeEntry> initEntries)
          This method is called from within the constructor to initialize the form.
private  Set<RemoteAddeEntry> pollWidgets(boolean ignoreCheckboxes)
          Poll the various UI components and attempt to construct valid ADDE entries based upon the information provided by the user.
private  void reactToValueChanges()
           
private  void resetBadFields()
          Clear out badFields and "set" the field's status to valid.
private  void setBadField(JTextField field, boolean isBad)
          Marks a JTextField as "valid" or "invalid".
private  void setEditorAction(AddeEntry.EditorAction editorAction)
           
private  void setForceMcxCaps(boolean value)
          Controls the value associated with the PREF_FORCE_CAPS preference.
private  void setStatus(String msg)
          Displays a short status message in statusLabel.
private  void verifyAddButtonActionPerformed(ActionEvent evt)
           
private  void verifyEditButtonActionPerformed(ActionEvent evt)
           
private  void verifyInput()
          Attempts to verify that the current contents of the GUI are "valid".
private  void verifyServerActionPerformed(ActionEvent evt)
           
 
Methods inherited from class javax.swing.JDialog
addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Dialog
addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setModalityType, setResizable, setTitle, setUndecorated, setVisible, show, toBack
 
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, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, 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, remove, 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
 

Field Detail

logger

private static final org.slf4j.Logger logger
Logger object.


POOL

private static final int POOL
Number of threads in the thread pool.

See Also:
Constant Field Values

PREF_FORCE_CAPS

private static final String PREF_FORCE_CAPS
Whether or not to input in the dataset, username, and project fields should be uppercased.

See Also:
Constant Field Values

ERROR_FIELD_COLOR

private static final Color ERROR_FIELD_COLOR
Background Color of an "invalid" JTextField.


ERROR_TEXT_COLOR

private static final Color ERROR_TEXT_COLOR
Text Color of an "invalid" JTextField.


NORMAL_FIELD_COLOR

private static final Color NORMAL_FIELD_COLOR
Background Color of a "valid" JTextField.


NORMAL_TEXT_COLOR

private static final Color NORMAL_TEXT_COLOR
Text Color of a "valid" JTextField.


badFields

private final Set<JTextField> badFields
Contains any JTextFields that may be in an invalid (to McIDAS-V) state.


entryStore

private final EntryStore entryStore
Reference back to the server manager.


currentEntries

private final Set<RemoteAddeEntry> currentEntries
Current contents of the editor.


editorAction

private AddeEntry.EditorAction editorAction
The last dialog action performed by the user.


serverText

private final String serverText
Initial contents of serverField. Be aware that null is allowed.


datasetText

private final String datasetText
Initial contents of datasetField. Be aware that null is allowed.


inErrorState

private boolean inErrorState
Whether or not the editor is prompting the user to adjust input.


acctBox

private JCheckBox acctBox

addServer

private JButton addServer

cancelButton

private JButton cancelButton

capBox

private JCheckBox capBox

datasetField

private McVTextField datasetField

datasetLabel

private JLabel datasetLabel

entryPanel

private JPanel entryPanel

gridBox

private JCheckBox gridBox

imageBox

private JCheckBox imageBox

navBox

private JCheckBox navBox

pointBox

private JCheckBox pointBox

projField

private JTextField projField

projLabel

private JLabel projLabel

radarBox

private JCheckBox radarBox

serverField

private JTextField serverField

serverLabel

private JLabel serverLabel

statusLabel

private JLabel statusLabel

statusPanel

private JPanel statusPanel

textBox

private JCheckBox textBox

typePanel

private JPanel typePanel

userField

private McVTextField userField

userLabel

private JLabel userLabel

verifyAddButton

private JButton verifyAddButton

verifyServer

private JButton verifyServer
Constructor Detail

RemoteEntryEditor

public RemoteEntryEditor(EntryStore entryStore,
                         String address,
                         String group)
Populates the server and dataset text fields with given Strings. This only works if the dialog is not yet visible.

This is mostly useful when adding an entry from a chooser.

Parameters:
address - Should be the address of a server, but empty and null values are allowed.
group - Should be the name of a group/dataset on server, but empty and null values are allowed.

RemoteEntryEditor

public RemoteEntryEditor(Frame parent,
                         boolean modal,
                         TabbedAddeManager manager,
                         EntryStore store)

RemoteEntryEditor

public RemoteEntryEditor(Frame parent,
                         boolean modal,
                         TabbedAddeManager manager,
                         EntryStore store,
                         RemoteAddeEntry entry)

RemoteEntryEditor

public RemoteEntryEditor(Frame parent,
                         boolean modal,
                         TabbedAddeManager manager,
                         EntryStore store,
                         List<RemoteAddeEntry> entries)
Method Detail

pollWidgets

private Set<RemoteAddeEntry> pollWidgets(boolean ignoreCheckboxes)
Poll the various UI components and attempt to construct valid ADDE entries based upon the information provided by the user.

Parameters:
ignoreCheckboxes - Whether or not the "type" checkboxes should get ignored. Setting this to true means that all types are considered valid--which is useful when attempting to verify the user's input.
Returns:
Set of entries that represent the user's input, or an empty Set if the input was invalid somehow.

disposeDisplayable

private void disposeDisplayable(boolean refreshManager)

addEntry

private void addEntry()
Creates new RemoteAddeEntrys based upon the contents of the dialog and adds "them" to the managed servers. If the dialog is displayed, we call Window.dispose() and attempt to refresh the server manager GUI if it is available.


editEntry

private void editEntry()
Replaces the entries within currentEntries with new entries from pollWidgets(boolean). If the dialog is displayed, we call Window.dispose() and attempt to refresh the server manager GUI if it's available.


verifyInput

private void verifyInput()
Attempts to verify that the current contents of the GUI are "valid".


setStatus

private void setStatus(String msg)
Displays a short status message in statusLabel.

Parameters:
msg - Status message. Shouldn't be null.

setBadField

private void setBadField(JTextField field,
                         boolean isBad)
Marks a JTextField as "valid" or "invalid". Mostly this just means that the field is highlighted in order to provide to the user a sense of "what do I fix" when something goes wrong.

Parameters:
field - JTextField to mark.
isBad - true means that the field is "invalid", false means that the field is "valid".

anyBadFields

private boolean anyBadFields()
Determines whether or not any fields are in an invalid state. Useful for disallowing the user to add invalid entries to the server manager.

Returns:
Whether or not any fields are invalid.

resetBadFields

private void resetBadFields()
Clear out badFields and "set" the field's status to valid.


getEditorAction

public AddeEntry.EditorAction getEditorAction()
See Also:
editorAction

setEditorAction

private void setEditorAction(AddeEntry.EditorAction editorAction)
See Also:
editorAction

setForceMcxCaps

private void setForceMcxCaps(boolean value)
Controls the value associated with the PREF_FORCE_CAPS preference.

Parameters:
value - true causes user input into the dataset, username, and project fields to be capitalized.
See Also:
getForceMcxCaps()

getForceMcxCaps

private boolean getForceMcxCaps()
Returns the value associated with the PREF_FORCE_CAPS preference.

See Also:
setForceMcxCaps(boolean)

initComponents

private void initComponents(List<RemoteAddeEntry> initEntries)
This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.


acctBoxActionPerformed

private void acctBoxActionPerformed(ActionEvent evt)

capBoxActionPerformed

private void capBoxActionPerformed(ActionEvent evt)

verifyAddButtonActionPerformed

private void verifyAddButtonActionPerformed(ActionEvent evt)

verifyEditButtonActionPerformed

private void verifyEditButtonActionPerformed(ActionEvent evt)

cancelButtonActionPerformed

private void cancelButtonActionPerformed(ActionEvent evt)

formWindowClosed

private void formWindowClosed(WindowEvent evt)

verifyServerActionPerformed

private void verifyServerActionPerformed(ActionEvent evt)

addServerActionPerformed

private void addServerActionPerformed(ActionEvent evt)

editServerActionPerformed

private void editServerActionPerformed(ActionEvent evt)

reactToValueChanges

private void reactToValueChanges()

checkHosts

public Set<RemoteAddeEntry> checkHosts(Set<RemoteAddeEntry> entries)
Attempt to verify a Set of RemoteAddeEntrys. Useful for checking a "MCTABLE.TXT" after importing.

Parameters:
entries - Set of remote ADDE entries to validate. Cannot be null.
Returns:
Set of RemoteAddeEntrys that McIDAS-V was able to connect to.
Throws:
NullPointerException - if entries is null.

checkHosts2

public Set<RemoteAddeEntry> checkHosts2(Set<RemoteAddeEntry> entries)

checkGroups

public Set<RemoteAddeEntry> checkGroups(Set<RemoteAddeEntry> entries)

bulkPut

private static Map<RemoteAddeEntry,RemoteEntryEditor.AddeStatus> bulkPut(Collection<RemoteAddeEntry> entries,
                                                                         RemoteEntryEditor.AddeStatus status)