org.peace_tools.core
Class MainFrame

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 org.peace_tools.core.MainFrame
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class MainFrame
extends javax.swing.JFrame
implements java.awt.event.ActionListener

See Also:
Serialized Form

Nested Class Summary
private  class MainFrame.DefaultViewFactory
          A default implementation for a view factory.
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
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  DnDTabbedPane centerPane
          The permanent tab that is always present in in the main frame.
private  MainFrame.DefaultViewFactory defaultViewFactory
          The default view factory that is used to create all the views associated with this main frame.
private  javax.swing.JPanel desktop
          This is the parent component of all the tabs and tabbed panes that constitute the visual layout of the main frame.
private static java.lang.String JOB_DONE_MSG
          This message is displayed by the main frame when a job being monitored does complete successfully and the files need to be copied over.
private static java.lang.String JOB_ERR_MSG
          This message is displayed by the main frame when a job being monitored does not complete successfully.
private  java.util.HashMap<AbstractMenuHelper.HelperType,AbstractMenuHelper> menuHelpers
          The list of menu helpers associated with this main frame.
private static java.lang.String SAVING_ERROR
          This message is displayed when the work space file could not be saved successfully.
private static long serialVersionUID
          A generated serial version ID.
private static java.lang.String SERVER_IN_BAD_STATUS
          This message is displayed by the main frame when a server entry is in an unexpected state on start up.
private  javax.swing.JToolBar toolbar
          A reference to the toolbar associated with this main frame.
private static java.lang.ThreadGroup workerThreads
          A thread group that contains various worker threads.
 
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
MainFrame()
          Sets up the default layout for the main frame.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
          The action performed method that handles various application-level events.
 void checkAllServerStatus()
          Method to ensure status of servers are as expected right after start up.
 void createJobThreads()
          Method to create threads for all jobs whose status is to be monitored.
private  void createMenus()
          This is a helper method that invoked from the constructor to create the main menu and associated toolbars.
 DnDTabbedPane getCenterPane()
          Obtain the permanent, center pane for this frame.
(package private)  javax.swing.JPanel getDesktop()
          Obtain the permanent desktop panel for this frame.
 AbstractMenuHelper getMenuHelper(AbstractMenuHelper.HelperType helperType)
          Obtain a menu helper for a given helper type.
 javax.swing.JToolBar getToolBar()
          Obtain the toolbar associated with this frame.
 ViewFactory getViewFactory()
          Obtain the view factory associated with this main frame.
protected static java.lang.ThreadGroup getWorkerThreads()
          Obtain the thread group that contains the job status monitoring threads.
 void saveDelayedWorkspace()
          This method is a helper method to save the workspace from a separate thread.
 void saveWorkspace(java.awt.Dialog dialog)
          Save the workspace data directly.
 
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, 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, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, 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, transferFocusBackward, 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

centerPane

private final DnDTabbedPane centerPane
The permanent tab that is always present in in the main frame. This pane is created in the constructor and is never changed.


desktop

private final javax.swing.JPanel desktop
This is the parent component of all the tabs and tabbed panes that constitute the visual layout of the main frame. This component is always present and is never removed from the main frame.


defaultViewFactory

private MainFrame.DefaultViewFactory defaultViewFactory
The default view factory that is used to create all the views associated with this main frame.


menuHelpers

private final java.util.HashMap<AbstractMenuHelper.HelperType,AbstractMenuHelper> menuHelpers
The list of menu helpers associated with this main frame. This hash map is used to maintain and rapidly access various menu helpers associated with the main frame. The list is populated in the createMenus() method.


toolbar

private javax.swing.JToolBar toolbar
A reference to the toolbar associated with this main frame. The tool bar may be visible or invisible at any given time.


workerThreads

private static final transient java.lang.ThreadGroup workerThreads
A thread group that contains various worker threads. This thread group is created when a main frame is instantiated. Threads are created whenever the status of a job needs to be asynchronously monitored and updated by the JobWizard.


JOB_ERR_MSG

private static final java.lang.String JOB_ERR_MSG
This message is displayed by the main frame when a job being monitored does not complete successfully. This message is formatted with suitable values before it is displayed to the user.

See Also:
Constant Field Values

JOB_DONE_MSG

private static final java.lang.String JOB_DONE_MSG
This message is displayed by the main frame when a job being monitored does complete successfully and the files need to be copied over. This message is formatted with suitable values before it is displayed to the user.

See Also:
Constant Field Values

SAVING_ERROR

private static final java.lang.String SAVING_ERROR
This message is displayed when the work space file could not be saved successfully.

See Also:
Constant Field Values

SERVER_IN_BAD_STATUS

private static final java.lang.String SERVER_IN_BAD_STATUS
This message is displayed by the main frame when a server entry is in an unexpected state on start up. This message is formatted with suitable values before it is displayed to the user.

See Also:
Constant Field Values

serialVersionUID

private static final long serialVersionUID
A generated serial version ID.

See Also:
Constant Field Values
Constructor Detail

MainFrame

public MainFrame()
Sets up the default layout for the main frame. The constructor uses the data in the current workspace to setup the various panels and components.

Note: Prior to creating the main frame ensure that a valid operational work space has been created.

Method Detail

createMenus

private void createMenus()
This is a helper method that invoked from the constructor to create the main menu and associated toolbars. This method was introduced to keep the code clutter down in the constructor.


getDesktop

javax.swing.JPanel getDesktop()
Obtain the permanent desktop panel for this frame.

Returns:
The permanent desktop panel for this frame.

getCenterPane

public DnDTabbedPane getCenterPane()
Obtain the permanent, center pane for this frame.

Returns:
The permanent center pane for this frame.

getToolBar

public javax.swing.JToolBar getToolBar()
Obtain the toolbar associated with this frame.

Returns:
The toolbar associated with this frame. The return value is never null. However, the toolbar may not be visible at all times.

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
The action performed method that handles various application-level events. One event that this method processes is notifications from JobMonitor threads when they exit.

Specified by:
actionPerformed in interface java.awt.event.ActionListener
See Also:
JobMonitor

saveWorkspace

public void saveWorkspace(java.awt.Dialog dialog)
Save the workspace data directly. This method saves the work space data via the work space file.

Parameters:
dialog - If the dialog is not null, then this method hides and disposes the dialog. This parameter can be null.

saveDelayedWorkspace

public void saveDelayedWorkspace()
This method is a helper method to save the workspace from a separate thread. This method creates a dialog indicating that the work space is being saved and then saves the work space from another thread so as not to hold up the GUI thread.


getViewFactory

public ViewFactory getViewFactory()
Obtain the view factory associated with this main frame.

Returns:
The view factory associated with this main frame.

createJobThreads

public void createJobThreads()
Method to create threads for all jobs whose status is to be monitored. This method is typically invoked from PEACE.launchMainFrame() method after the main frame is created. This method performs the task of checking job status and creating a job thread if a job needs to be monitored.

Note: Invoking this method twice will cause unnecessary monitoring threads to start up. So avoid duplicate calls.


checkAllServerStatus

public void checkAllServerStatus()
Method to ensure status of servers are as expected right after start up.

This method is typically invoked from PEACE.launchMainFrame() method after the main frame has been created. This method performs the task of checking to ensure that the status of all the server entries in the workspace are in a consistent state --- that is, the status is not INSTALLING or UNINSTALLING. If the status is as expected, this method displays a suitable warning to the user and updates the server status.

This check is needed in cases where the user starts an install or uninstall but intentionally kills the GUI due some other issue (such as network connection failures etc). The status needs to be updated so that the entry can be deleted from the work space.


getWorkerThreads

protected static java.lang.ThreadGroup getWorkerThreads()
Obtain the thread group that contains the job status monitoring threads.

Returns:
The thread group that logically contains all the job status monitoring threads that are currently active.

getMenuHelper

public AbstractMenuHelper getMenuHelper(AbstractMenuHelper.HelperType helperType)
Obtain a menu helper for a given helper type. This method can be used to obtain a menu helper for a given type of action to be performed.

Parameters:
helperType - The class (or category) of operation for which the menu helper object is desired.
Returns:
The menu helper object for the specified category. If the helper object is not found, then this method returns null.