JSHOP2
Class JSHOP2GUI

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 JSHOP2.JSHOP2GUI
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class JSHOP2GUI
extends javax.swing.JFrame

This is the graphical interface for JSHOP2

Author:
John Shin
See Also:
Serialized Form

Nested Class Summary
private  class JSHOP2GUI.LeafTrackerDialog
          The object that creates the leaf node tracker dialog box.
private  class JSHOP2GUI.Node
          User object utilized by the tree model
private  class JSHOP2GUI.NodeRenderer
          Object used to render the nodes in the tree
private  class JSHOP2GUI.PlanDialog
          The object that creates the dialog box showing plan results whenever a plan is found.
private  class JSHOP2GUI.SHOP2GUIKeyAdapter
           
private  class JSHOP2GUI.SHOP2GUIMenuHandler
           
private  class JSHOP2GUI.SHOP2GUIWindowAdapter
          Listener Classes
private  class JSHOP2GUI.StateWindowDialog
           
 
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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  int count
           
protected  int iterator
           
protected  java.util.ArrayList<javax.swing.tree.DefaultMutableTreeNode> leafNodes
           
protected  JSHOP2GUI.LeafTrackerDialog leafTracker
           
protected  java.awt.Label messageLabel
           
protected  javax.swing.JTextField multiStepField
           
protected  PlanStepInfo newCommand
           
protected  java.lang.String newMethod
           
protected static int numPlans
           
protected  int planNumber
           
protected static java.util.ArrayList<PlanStepInfo> planStepList
           
protected  javax.swing.JProgressBar progressBar
           
protected  java.awt.Label progressLabel
           
protected  javax.swing.tree.DefaultMutableTreeNode rootNode
           
protected  java.awt.Dimension screenSize
           
protected  java.lang.String selectedNodeName
           
private static long serialVersionUID
           
protected  java.awt.Label stateLabel
           
protected  java.awt.TextArea stateTextArea
           
protected  java.awt.TextArea stepInfoTextArea
           
protected  javax.swing.JTree tree
           
protected  javax.swing.tree.DefaultTreeModel treeModel
           
protected  java.util.Hashtable<java.lang.Integer,javax.swing.tree.DefaultMutableTreeNode> treeNodeReferences
           
 
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
JSHOP2GUI()
          The default constructor.
 
Method Summary
private  void backtrack(javax.swing.tree.DefaultMutableTreeNode treeNode)
          This function handles the procedures that take place when backtracking.
private  void initFieldsAndCreateInterface()
          Initializes all fields and constructs the graphical interface
private  void processBacktracking(PlanStepInfo step)
          Helper function to runOneStep().
private  void processPlanFound()
          Helper function to runOneStep().
private  javax.swing.tree.DefaultMutableTreeNode processReduced(PlanStepInfo step, java.util.ArrayList<JSHOP2GUI.Node> toAdd)
          Helper function to runOneStep().
private  javax.swing.tree.DefaultMutableTreeNode processSetGoalTasks(PlanStepInfo step, java.util.ArrayList<JSHOP2GUI.Node> toAdd)
          Sets the goal tasks for the problem.
private  javax.swing.tree.DefaultMutableTreeNode processStateChanged(PlanStepInfo step)
           
private  javax.swing.tree.DefaultMutableTreeNode processTrying(PlanStepInfo step, java.util.ArrayList<JSHOP2GUI.Node> toAdd)
          Helper function to runOneStep().
private  void renumberLeaves()
          This function renumbers all current leaf nodes in the order they were visited relative to one another.
private  boolean runOneStep()
          Executes a single step in the plan step list
private  void setGoalTasksHelper(TaskList[] children, PlanStepInfo step, java.util.ArrayList<JSHOP2GUI.Node> toAdd)
           
static void setNumPlans(int numPlansIn)
          This function is used to set the total number of plans found for the current problem by JSHOP2
static void setPlanStepList(java.util.ArrayList<PlanStepInfo> inputList)
          This function is used to pass in the list of plan steps that represent the actions taken by JSHOP2 to find plans for the current problem.
 
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, setIconImage, 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, 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, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, 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, 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, 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, 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, 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, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, 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

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

planStepList

protected static java.util.ArrayList<PlanStepInfo> planStepList

numPlans

protected static int numPlans

iterator

protected int iterator

count

protected int count

planNumber

protected int planNumber

newCommand

protected PlanStepInfo newCommand

newMethod

protected java.lang.String newMethod

leafNodes

protected java.util.ArrayList<javax.swing.tree.DefaultMutableTreeNode> leafNodes

tree

protected javax.swing.JTree tree

treeModel

protected javax.swing.tree.DefaultTreeModel treeModel

rootNode

protected javax.swing.tree.DefaultMutableTreeNode rootNode

messageLabel

protected java.awt.Label messageLabel

stateLabel

protected java.awt.Label stateLabel

stateTextArea

protected java.awt.TextArea stateTextArea

stepInfoTextArea

protected java.awt.TextArea stepInfoTextArea

multiStepField

protected javax.swing.JTextField multiStepField

treeNodeReferences

protected java.util.Hashtable<java.lang.Integer,javax.swing.tree.DefaultMutableTreeNode> treeNodeReferences

progressBar

protected javax.swing.JProgressBar progressBar

progressLabel

protected java.awt.Label progressLabel

leafTracker

protected JSHOP2GUI.LeafTrackerDialog leafTracker

selectedNodeName

protected java.lang.String selectedNodeName

screenSize

protected java.awt.Dimension screenSize
Constructor Detail

JSHOP2GUI

public JSHOP2GUI()
The default constructor. Call this constructor only after the plan step list has been initialized by setPlanStepList and the the number of plans has been set by setNumPlans. When called successfully, this constructor will launch the GUI.

Method Detail

setPlanStepList

public static void setPlanStepList(java.util.ArrayList<PlanStepInfo> inputList)
This function is used to pass in the list of plan steps that represent the actions taken by JSHOP2 to find plans for the current problem.

Parameters:
inputList - - an ArrayList of PlanStepInfo objects that are used to reconstruct the plan finding process

setNumPlans

public static void setNumPlans(int numPlansIn)
This function is used to set the total number of plans found for the current problem by JSHOP2

Parameters:
numPlansIn - - an integer representing the total number of plans found

initFieldsAndCreateInterface

private void initFieldsAndCreateInterface()
Initializes all fields and constructs the graphical interface


runOneStep

private boolean runOneStep()
Executes a single step in the plan step list


processPlanFound

private void processPlanFound()
Helper function to runOneStep(). This function executes the steps required to display the plan on-screen


processTrying

private javax.swing.tree.DefaultMutableTreeNode processTrying(PlanStepInfo step,
                                                              java.util.ArrayList<JSHOP2GUI.Node> toAdd)
Helper function to runOneStep(). This function determines the current state of the world for every node and inserts the goal task into the tree.


processReduced

private javax.swing.tree.DefaultMutableTreeNode processReduced(PlanStepInfo step,
                                                               java.util.ArrayList<JSHOP2GUI.Node> toAdd)
Helper function to runOneStep(). This function adds children to existing nodes and marks them if they are ordered.


processStateChanged

private javax.swing.tree.DefaultMutableTreeNode processStateChanged(PlanStepInfo step)

processSetGoalTasks

private javax.swing.tree.DefaultMutableTreeNode processSetGoalTasks(PlanStepInfo step,
                                                                    java.util.ArrayList<JSHOP2GUI.Node> toAdd)
Sets the goal tasks for the problem. The goal tasks are stored in the 'children' field of the 'step' parameter. Each element of 'children' represents a TaskList that encapsulates a goal task. Calling getTask() on each TaskList gives access to the TaskAtom that represents the goal task. If getTask() returns null, then that means the goal task is encapsulated one or more levels down and getSubtasks() must be called. This is done recursively by 'setGoalTasksHelper'.


setGoalTasksHelper

private void setGoalTasksHelper(TaskList[] children,
                                PlanStepInfo step,
                                java.util.ArrayList<JSHOP2GUI.Node> toAdd)

processBacktracking

private void processBacktracking(PlanStepInfo step)
Helper function to runOneStep(). This function takes care of backtracking procedures.


backtrack

private void backtrack(javax.swing.tree.DefaultMutableTreeNode treeNode)
This function handles the procedures that take place when backtracking. First, it modifies the leafNodes list and then deletes any children under treeNode.


renumberLeaves

private void renumberLeaves()
This function renumbers all current leaf nodes in the order they were visited relative to one another.