org.peace_tools.core.server
Class ServerTypeWizardPage

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.peace_tools.generic.GenericWizardPage
                      extended by org.peace_tools.core.server.ServerTypeWizardPage
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.lang.Runnable, java.util.EventListener, javax.accessibility.Accessible, WizardPage

public class ServerTypeWizardPage
extends GenericWizardPage
implements java.awt.event.ActionListener, java.lang.Runnable

This class serves as the first interactive page in a ServerWizard. This page permits the user to select the type of server entry to be added. In addition, if the selected server is a remote server then this wizard page permits the user to set the host name and credentials for logging onto the remote server. When the "Next >" button is clicked then this wizard verifies that it can connect with the given credentials.

See Also:
Serialized Form

Nested Class Summary
 
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
private  boolean changeCredentialsOnly
          If this flag is set to true, then this wizard permits the user only to change the credentials associated with a remote server.
private static java.lang.String ErrorMsg
          Just a simple error message that is displayed when connection to the remote host could not be successfully established.
private  javax.swing.JComponent[] fixedMsgs
          These labels are created in the constructor but one of them remains hidden.
private  javax.swing.JTextField hostName
          Field to read/display the host name to the user.
private  javax.swing.JTextField password
          Field to read/display the password ID.
(package private)  javax.swing.JProgressBar progressBar
          A roving progress bar to show the user we are doing some work.
private  javax.swing.JPanel remoteSrvrInfo
          The panel that contains the data entry fields related to a remote server entry.
private static long serialVersionUID
          A serialization UID to keep the compiler happy.
private  Server server
          Information about the actual server entry being edited.
private  javax.swing.JComboBox serverTypes
          The combo box that permits the user to choose between a local and remote server setting.
private  ServerSession srvrSession
          This instance variable is used to manage the connection to the remote server just for testing purposes.
private  javax.swing.JTextField userName
          Field to read/display the user/login ID.
private  WizardDialog wizard
          A reference to the wizard dialog that logically owns this page.
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
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
ServerTypeWizardPage(WizardDialog wizard, Server server, boolean changeCredentialsOnly)
          The constructor.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent arg0)
           
 void pageChanged(WizardDialog dialog, int currPage, int prevPage)
          This method is called just before this page is to be displayed.
 boolean pageChanging(WizardDialog dialog, int currPage, int nextPage)
          Method to veto a page change (if needed).
 void run()
          This method is invoked from a separate thread from the pageChanging() method.
 
Methods inherited from class org.peace_tools.generic.GenericWizardPage
getPage, getSubTitle, getTitle, setTitle
 
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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, hide, 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

wizard

private final WizardDialog wizard
A reference to the wizard dialog that logically owns this page. This reference is used to enable and disable buttons on this wizard appropriately.


server

private final Server server
Information about the actual server entry being edited. This reference is set when this class is instantiated and is never changed during the life time.


serverTypes

private javax.swing.JComboBox serverTypes
The combo box that permits the user to choose between a local and remote server setting.


remoteSrvrInfo

private javax.swing.JPanel remoteSrvrInfo
The panel that contains the data entry fields related to a remote server entry. This panel contains all the fields so that they can be enabled and disabled in one big swoop whenever the user changes between local and remote server settings.


hostName

private javax.swing.JTextField hostName
Field to read/display the host name to the user. The host name maybe the FQN or the IP address of the host.


userName

private javax.swing.JTextField userName
Field to read/display the user/login ID. This information is meaningful for remote servers.


password

private javax.swing.JTextField password
Field to read/display the password ID. This information is meaningful for remote servers.


fixedMsgs

private javax.swing.JComponent[] fixedMsgs
These labels are created in the constructor but one of them remains hidden. The visibility of the labels is swapped just before and after the verification process. The idea is let the user know that the wizard is doing some operation.


progressBar

javax.swing.JProgressBar progressBar
A roving progress bar to show the user we are doing some work. We really can't tell how much progress has happened but we can say we are doing something so that the user understands the GUI is not hanging.


changeCredentialsOnly

private boolean changeCredentialsOnly
If this flag is set to true, then this wizard permits the user only to change the credentials associated with a remote server.


srvrSession

private ServerSession srvrSession
This instance variable is used to manage the connection to the remote server just for testing purposes. Possibly this connection can be centralized into the ServerWizard for use throughout the wizard.


ErrorMsg

private static final java.lang.String ErrorMsg
Just a simple error message that is displayed when connection to the remote host could not be successfully established.

See Also:
Constant Field Values

serialVersionUID

private static final long serialVersionUID
A serialization UID to keep the compiler happy.

See Also:
Constant Field Values
Constructor Detail

ServerTypeWizardPage

public ServerTypeWizardPage(WizardDialog wizard,
                            Server server,
                            boolean changeCredentialsOnly)
The constructor. The constructor sets up the various components on this wizard page. The components include a combo box to choose between local and remote servers. In addition, there is a separate panel that is setup for credentials associated with the remote host.

Parameters:
wizard - The wizard that logically owns this page.
server - The in-memory server object that contains the core information about the server.
changeCredentialsOnly - Flag to indicate if this page must permit the user to just change the credentials.
Method Detail

pageChanged

public void pageChanged(WizardDialog dialog,
                        int currPage,
                        int prevPage)
This method is called just before this page is to be displayed. This page essentially updates the data being displayed in the GUI fields from the data stored in the in-memory Server object.

Specified by:
pageChanged in interface WizardPage
Overrides:
pageChanged in class GenericWizardPage
Parameters:
dialog - The wizard dialog that is invoking this method.
currPage - The logical (zero-based) index of the current page in the sequence of pages in the wizard that is going to be displayed.
prevPage - The logical (zero-based) index of the previous page that was displayed. For the first page this value is -1.

pageChanging

public boolean pageChanging(WizardDialog dialog,
                            int currPage,
                            int nextPage)
Description copied from class: GenericWizardPage
Method to veto a page change (if needed). This method is invoked by the core WizardDialog panel just before the user changes from this page. This method does not veto such a change and always returns true.

Specified by:
pageChanging in interface WizardPage
Overrides:
pageChanging in class GenericWizardPage
Parameters:
dialog - The wizard dialog that is invoking this method.
currPage - The logical (zero-based) index of the current page in the sequence of pages in the wizard.
nextPage - The logical (zero-based) index of the next page that is going to be displayed.
Returns:
This method always returns true to indicate that the user can navigate off from this page.

run

public void run()
This method is invoked from a separate thread from the pageChanging() method. This method performs the task of attempting to connect to the remote server using the credentials supplied by the user. The process of connecting to the remote machine is performed from a separate thread because of the way Ganymede SSH has been implemented. The call backs provided by Ganymede do not occur on the Swing's EventDispatch thread (but from an generic thread). Consequently, the GUI will be unresponsive (in most cases call backs result in a blank window being displayed and the whole GUI hangs) if the main EventDispatch thread is blocked. Consequently, the connection is performed from a separate thread. When this thread completes, it posts the necessary information back to the main EventDispatch thread for updates.

Specified by:
run in interface java.lang.Runnable

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent arg0)
Specified by:
actionPerformed in interface java.awt.event.ActionListener