aima.gui.framework
Class AgentAppFrame

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 aima.gui.framework.AgentAppFrame
All Implemented Interfaces:
AgentAppModel.ModelChangedListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants
Direct Known Subclasses:
MapAgentFrame, VacuumAppDemo.VacuumFrame

public class AgentAppFrame
extends javax.swing.JFrame
implements AgentAppModel.ModelChangedListener

Universal frame for building graphical agent applications. It provides buttons for controlling the application and two panels and a status bar to visualize agent, environment, and general simulation state.

To make the frame fit to your needs, you will at least have to add some selectors and replace the dummy agent view pane by a view which is capable to visualize your agent. The frame is configurable at run-time, so subclassing will not always be necessary.

See Also:
Serialized Form

Nested Class Summary
static class AgentAppFrame.AbstractAgentView
          Base class for all agent views.
static interface AgentAppFrame.Controller
          The agent application frame delegates the execution of all domain-level commands to a controller.
static class AgentAppFrame.SelectionState
          Contains the names of all selectors and the indices of their selected items.
 
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
protected  aima.gui.framework.AgentAppFrame.AgentThread agentThread
          Thread running the agent.
protected  AgentAppFrame.AbstractAgentView agentView
           
protected  AgentAppFrame.Controller controller
          The controller, which executes the domain-level commands.
protected  boolean isPrepared
          Flag, indicating whether the agent is ready for running.
protected  javax.swing.JTextArea textArea
           
 
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
AgentAppFrame()
          Standard constructor.
 
Method Summary
 AgentAppFrame.SelectionState getSelection()
          Returns an object which represents the current selection state of all selectors.
 void logMessage(java.lang.String message)
          Prints a log message on the text area.
static void main(java.lang.String[] args)
           
 void modelChanged()
          Updates the agent view after the state of the model has changed.
protected  void selectionChanged()
          Tells the controller to prepare the agent.
 void setAgentView(AgentAppFrame.AbstractAgentView view)
          Template method, replacing the agent view.
 void setController(AgentAppFrame.Controller controller)
          Defines, who should react on button and selection events.
 void setDefaultSelection()
          Adjusts selection state of all selectors.
 void setModel(AgentAppModel model)
          Gives the frame access to agent and environment data.
 void setSelectorItems(java.lang.String selectorName, java.lang.String[] items, int defaultIdx)
          Sets the choice items and the default value of a specified selector.
 void setSelectors(java.lang.String[] selectorNames, java.lang.String[] tooltips)
          Specifies a set of combo boxes to be added to the toolbar.
 void setSplitPaneResizeWeight(double value)
          Specifies how to distribute extra space when resizing the split pane.
 void setStatus(java.lang.String status)
          Displays a text in the status bar.
 void setUpdateDelay(int msec)
          Sets a delay for displaying model changes.
 
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, paint, 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, 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, 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
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

controller

protected AgentAppFrame.Controller controller
The controller, which executes the domain-level commands.


agentThread

protected aima.gui.framework.AgentAppFrame.AgentThread agentThread
Thread running the agent.


isPrepared

protected boolean isPrepared
Flag, indicating whether the agent is ready for running.


textArea

protected javax.swing.JTextArea textArea

agentView

protected AgentAppFrame.AbstractAgentView agentView
Constructor Detail

AgentAppFrame

public AgentAppFrame()
Standard constructor.

Method Detail

setSelectors

public void setSelectors(java.lang.String[] selectorNames,
                         java.lang.String[] tooltips)
Specifies a set of combo boxes to be added to the toolbar. Each combobox has a name, which is used to access its selection state on software level and optionally a tool tip, which is shown to the user.

Parameters:
tooltips - Array of strings or null.

setSelectorItems

public void setSelectorItems(java.lang.String selectorName,
                             java.lang.String[] items,
                             int defaultIdx)
Sets the choice items and the default value of a specified selector. The first item has index 0.


setDefaultSelection

public void setDefaultSelection()
Adjusts selection state of all selectors.


getSelection

public AgentAppFrame.SelectionState getSelection()
Returns an object which represents the current selection state of all selectors.


setAgentView

public void setAgentView(AgentAppFrame.AbstractAgentView view)
Template method, replacing the agent view. The agent view is the panel to the left of the splitbar. It typically implements a 2D-visualization of the agent in its environment.


setSplitPaneResizeWeight

public void setSplitPaneResizeWeight(double value)
Specifies how to distribute extra space when resizing the split pane.


setController

public void setController(AgentAppFrame.Controller controller)
Defines, who should react on button and selection events.


setModel

public void setModel(AgentAppModel model)
Gives the frame access to agent and environment data.


setUpdateDelay

public void setUpdateDelay(int msec)
Sets a delay for displaying model changes. Used for animation.


setStatus

public void setStatus(java.lang.String status)
Displays a text in the status bar.


modelChanged

public void modelChanged()
Updates the agent view after the state of the model has changed.

Specified by:
modelChanged in interface AgentAppModel.ModelChangedListener

logMessage

public void logMessage(java.lang.String message)
Prints a log message on the text area.

Specified by:
logMessage in interface AgentAppModel.ModelChangedListener

selectionChanged

protected void selectionChanged()
Tells the controller to prepare the agent.


main

public static void main(java.lang.String[] args)