edu.kzoo.grid.gui
Class ControlledGridAppFrame

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--javax.swing.JFrame
                                |
                                +--edu.kzoo.grid.gui.GridAppFrame
                                      |
                                      +--edu.kzoo.grid.gui.ControlledGridAppFrame
All Implemented Interfaces:
javax.accessibility.Accessible, GridDisplay, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants

public class ControlledGridAppFrame
extends GridAppFrame

Grid GUI Support Package:
The ControlledGridAppFrame class provides a window in which to run and display a grid application controlled by the user via a combination of Step, NSteps, Run, and Stop buttons. Other options include a speed slider bar and a Start/Restart button.

Version:
29 February 2004
Author:
Alyce Brady (based on code by Julie Zelenski)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class edu.kzoo.grid.gui.GridAppFrame
GridAppFrame.DisplayMouseListener, GridAppFrame.GUIExceptionHandler
 
Field Summary
protected  GridAppController appController
           
protected  boolean includeNSteps
           
protected  boolean includeRun
           
protected  boolean includeStep
           
protected  boolean includeStop
           
protected  javax.swing.JButton nStepsButton
           
protected  int numStepsSoFar
           
protected  int numStepsToRun
           
protected  boolean putRestartFirst
           
protected  javax.swing.JButton runButton
           
protected  boolean running
           
protected  boolean runningNSteps
           
protected  javax.swing.JButton stepButton
           
protected  javax.swing.JButton stopButton
           
protected  javax.swing.Timer timer
           
 
Fields inherited from class edu.kzoo.grid.gui.GridAppFrame
DEFAULT_INITIAL_DELAY, DEFAULT_MAX_DELAY_MSECS, DEFAULT_MIN_DELAY_MSECS
 
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
ControlledGridAppFrame(GridAppController control, boolean includeStep, boolean includeNSteps, boolean includeRun, boolean includeStop)
          Constructs an empty ControlledGridAppFrame window object that will display a grid controlled by a combination of Step, NSteps, Run, and Stop buttons.
 
Method Summary
protected  void enterNotRunningMode()
          Enables and disables GUI components as necessary when an application is not running.
protected  void enterRunningMode()
          Enables and disables GUI components as necessary while the application is running.
protected  java.lang.String getClarificationResponse(int suggested)
          Provides a follow-up prompt for number of steps if initial response failed validation, and gets result.
 GridAppController getController()
          Returns the controller used to drive the application.
protected  java.lang.String getInitialResponse(int suggested)
          Provides inital prompt for number of steps and gets result.
 void includeRestartAfterRunButtons(java.lang.String label, boolean enabled)
          Includes a Start/Restart/Reset button with the specified label after the step, N steps, run, and stop buttons.
 void includeRestartBeforeRunButtons(java.lang.String label, boolean enabled)
          Includes a Start/Restart/Reset button with the specified label before the step, N steps, run, and stop buttons.
 void includeStartRestart(java.lang.String label, boolean enabled)
          Includes a Start/Restart/Reset button with the specified label.
protected  javax.swing.JPanel makeControlPanel()
          Creates the control panel.
protected  javax.swing.JComponent makeControlPanelInterior()
          Creates the interior component for the control panel.
 void nSteps()
          Advances the application multiple (N) steps (where N is provided by the user in a dialog box).
 void restart()
          Restarts the application.
 void run()
          Starts a timer to repeatedly step the application at the speed currently indicated by the speed slider.
 void setGrid(Grid grid)
          Sets the Grid being displayed.
 boolean shouldStop()
          Determines whether a running application has reached a desired stopping state.
 void showGrid()
          Shows the grid.
 void step()
          Advances the application one step.
 void stop()
          Stops any existing timer currently stepping the application.
 
Methods inherited from class edu.kzoo.grid.gui.GridAppFrame
addGridChangeListener, constructDisplay, constructWindowContents, defineContent, getDelay, getDisplay, getGrid, getMouseListenerForDisplay, getResetButton, getSpeedSlider, includeMenu, includeSpeedSlider, includeSpeedSlider, includeSpeedSlider, makeDisplayPanel, makeSliderPanel, notifyGridChangeListeners, onMousePressOverDisplay, setDelay
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setIconImage, 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, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, 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, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, 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, isOpaque, 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, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

appController

protected GridAppController appController

timer

protected javax.swing.Timer timer

putRestartFirst

protected boolean putRestartFirst

stepButton

protected javax.swing.JButton stepButton

nStepsButton

protected javax.swing.JButton nStepsButton

runButton

protected javax.swing.JButton runButton

stopButton

protected javax.swing.JButton stopButton

includeStep

protected boolean includeStep

includeNSteps

protected boolean includeNSteps

includeRun

protected boolean includeRun

includeStop

protected boolean includeStop

running

protected boolean running

runningNSteps

protected boolean runningNSteps

numStepsToRun

protected int numStepsToRun

numStepsSoFar

protected int numStepsSoFar
Constructor Detail

ControlledGridAppFrame

public ControlledGridAppFrame(GridAppController control,
                              boolean includeStep,
                              boolean includeNSteps,
                              boolean includeRun,
                              boolean includeStop)
Constructs an empty ControlledGridAppFrame window object that will display a grid controlled by a combination of Step, NSteps, Run, and Stop buttons. The boolean parameters determine which buttons will be included in the control panel of the graphical user interface. Use methods such as includeStartRestart and includeSpeedSlider to include components on the other than the basic grid display and the specified run buttons. Then use the constructWindowContents method to set the properties of the window and make it visible. (Precondition: control is not null.)

Parameters:
control - the object that controls the running of the grid application through step and/or run methods.
includeStep - true if GUI should include a One Step button
includeNSteps - true if GUI should include an N Steps button
includeRun - true if GUI should include a Run... button
includeStop - true if GUI should include a Stop button
Method Detail

includeStartRestart

public void includeStartRestart(java.lang.String label,
                                boolean enabled)
Includes a Start/Restart/Reset button with the specified label. This method will have no effect unless it is called before the constructWindowContents method.

Overrides:
includeStartRestart in class GridAppFrame
Parameters:
label - the button label (examples: "Start", "Reset")
enabled - true if button should initially be enabled; false if button should initially be disabled

includeRestartBeforeRunButtons

public void includeRestartBeforeRunButtons(java.lang.String label,
                                           boolean enabled)
Includes a Start/Restart/Reset button with the specified label before the step, N steps, run, and stop buttons. This method will have no effect unless it is called before the constructWindowContents method.

Parameters:
label - the button label (examples: "Start", "Reset")
enabled - true if button should initially be enabled; false if button should initially be disabled

includeRestartAfterRunButtons

public void includeRestartAfterRunButtons(java.lang.String label,
                                          boolean enabled)
Includes a Start/Restart/Reset button with the specified label after the step, N steps, run, and stop buttons. This method will have no effect unless it is called before the constructWindowContents method.

Parameters:
label - the button label (examples: "Start", "Reset")
enabled - true if button should initially be enabled; false if button should initially be disabled

getController

public GridAppController getController()
Returns the controller used to drive the application.


makeControlPanel

protected javax.swing.JPanel makeControlPanel()
Creates the control panel.

Overrides:
makeControlPanel in class GridAppFrame
Returns:
a panel containing the control components

makeControlPanelInterior

protected javax.swing.JComponent makeControlPanelInterior()
Creates the interior component for the control panel. The actual buttons included in the panel depend on the values specified when this active grid window was constructed.

Overrides:
makeControlPanelInterior in class GridAppFrame
Returns:
a component representing the contents of the control panel

setGrid

public void setGrid(Grid grid)
Sets the Grid being displayed.

Specified by:
setGrid in interface GridDisplay
Overrides:
setGrid in class GridAppFrame
Parameters:
grid - the Grid to display

showGrid

public void showGrid()
Shows the grid.

Specified by:
showGrid in interface GridDisplay
Overrides:
showGrid in class GridAppFrame

step

public void step()
Advances the application one step. Should be redefined if the application wants to show the grid after each step. For example:
     super.step();
     showGrid();
  


shouldStop

public boolean shouldStop()
Determines whether a running application has reached a desired stopping state.

Returns:
true if the application should stop

nSteps

public void nSteps()
Advances the application multiple (N) steps (where N is provided by the user in a dialog box). It may stop before the N steps have completed if the user clicks on the stop button (if one is provided) or if the application controller indicates that the application has reached a stopping state.


getInitialResponse

protected java.lang.String getInitialResponse(int suggested)
Provides inital prompt for number of steps and gets result.


getClarificationResponse

protected java.lang.String getClarificationResponse(int suggested)
Provides a follow-up prompt for number of steps if initial response failed validation, and gets result.


run

public void run()
Starts a timer to repeatedly step the application at the speed currently indicated by the speed slider. It will stop when the user clicks on the stop button or when the application controller indicates that the application has reached a stopping state.


stop

public void stop()
Stops any existing timer currently stepping the application.


restart

public void restart()
Restarts the application. Should be redefined if the application wants to show the grid after the restart.

Overrides:
restart in class GridAppFrame

enterRunningMode

protected void enterRunningMode()
Enables and disables GUI components as necessary while the application is running.


enterNotRunningMode

protected void enterNotRunningMode()
Enables and disables GUI components as necessary when an application is not running.