edu.columbia.cs.coms4701.agent.observer
Class GUIEnvironmentObserver<K extends AgentAction,P extends AgentPercept,A extends Agent<K,P>,J extends javax.swing.JPanel>

java.lang.Object
  extended by edu.columbia.cs.coms4701.agent.observer.GUIEnvironmentObserver<K,P,A,J>
All Implemented Interfaces:
EnvironmentObserver<K,P,A>, ObserverPlayingStateChangedListener, AgentAddedListener<K,P,A>, AgentChoseActionListener<K,P,A>, AgentReceivedPerceptsListener<K,P,A>, EnvironmentBeganRunningListener, EnvironmentObjectAddedListener, EnvironmentStoppedRunningListener, java.beans.PropertyChangeListener, java.util.EventListener, javax.swing.event.ChangeListener
Direct Known Subclasses:
GridEnvironmentObserver

public abstract class GUIEnvironmentObserver<K extends AgentAction,P extends AgentPercept,A extends Agent<K,P>,J extends javax.swing.JPanel>
extends java.lang.Object
implements EnvironmentObserver<K,P,A>, ObserverPlayingStateChangedListener, javax.swing.event.ChangeListener

Provides a GUI display for observing the progress of an Environment.

Subclasses must, at minimum, implement the #generateEnvironmentPanel method, which produces a component that displays a God-like overview of the entire environment in some sensible graphical fashion.

Version:
0.1

User: aaron Date: Aug 29, 2006 Time: 2:00:38 PM

Author:
aaron@cs

Field Summary
protected  int delay
           
protected  int delay_default
           
protected  int delay_max
           
protected  double delay_r
           
protected  ObserverFrame<K,P,A,J> frame
           
protected  edu.columbia.cs.coms4701.agent.observer.GUIEnvironmentObserver.PlayingMode playingMode
           
protected  double x_0
           
 
Constructor Summary
GUIEnvironmentObserver()
          Constructs a new GUIEnvironmentObserver, which can then be attached to a (single!) Environment to track progress.
 
Method Summary
 void agentAdded(AgentAddedEvent<K,P,A> theEvent)
          Fired when an agent is added to an environment.
 void agentChoseAction(AgentChoseActionEvent<K,P,A> theEvent)
          Fired when an agent in an environment chooses an action (i.e.
 void agentReceivedPercepts(AgentReceivedPerceptsEvent<K,P,A> theEvent)
          Fired when an agent in an environment receives percepts, i.e.
protected  int delayForSetting(int setting)
          Given a number between 0 and 100 (inclusive), returns a delay in milliseconds.
 void environmentBeganRunning(EnvironmentBeganRunningEvent theEvent)
          Fired when an environment has just begun its run() loop.
 void environmentObjectAdded(EnvironmentObjectAddedEvent theEvent)
          Fired when an EnvironmentObject is added to an environment.
 void environmentStoppedRunning(EnvironmentStoppedRunningEvent theEvent)
          Fired when an environment is about to stop its run() loop.
abstract  J generateEnvironmentPanel()
          Generates a new instance of the environment panel for this observer.
 void playingStateChanged(ObserverPlayingStateChangedEvent theEvent)
          Fired when the user clicks one of the buttons to change the playing state.
 void propertyChange(java.beans.PropertyChangeEvent propertyChangeEvent)
           
 void stateChanged(javax.swing.event.ChangeEvent changeEvent)
          Fired when the user adjusts the slider to set the playing speed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delay_r

protected double delay_r

x_0

protected double x_0

delay_max

protected int delay_max

delay_default

protected int delay_default

frame

protected ObserverFrame<K extends AgentAction,P extends AgentPercept,A extends Agent<K,P>,J extends javax.swing.JPanel> frame

delay

protected int delay

playingMode

protected edu.columbia.cs.coms4701.agent.observer.GUIEnvironmentObserver.PlayingMode playingMode
Constructor Detail

GUIEnvironmentObserver

public GUIEnvironmentObserver()
Constructs a new GUIEnvironmentObserver, which can then be attached to a (single!) Environment to track progress. Subclasses should

Method Detail

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent propertyChangeEvent)
Specified by:
propertyChange in interface java.beans.PropertyChangeListener

environmentBeganRunning

public void environmentBeganRunning(EnvironmentBeganRunningEvent theEvent)
Fired when an environment has just begun its run() loop.

Specified by:
environmentBeganRunning in interface EnvironmentBeganRunningListener
Parameters:
theEvent - event specifying the environment

agentAdded

public void agentAdded(AgentAddedEvent<K,P,A> theEvent)
Fired when an agent is added to an environment.

Specified by:
agentAdded in interface AgentAddedListener<K extends AgentAction,P extends AgentPercept,A extends Agent<K,P>>
Parameters:
theEvent - event specifying the environment and agent

environmentObjectAdded

public void environmentObjectAdded(EnvironmentObjectAddedEvent theEvent)
Fired when an EnvironmentObject is added to an environment.

We should add ourselves as a property-change observer for this object.

Specified by:
environmentObjectAdded in interface EnvironmentObjectAddedListener
Parameters:
theEvent - event specifying the environment and the object.

agentReceivedPercepts

public void agentReceivedPercepts(AgentReceivedPerceptsEvent<K,P,A> theEvent)
Fired when an agent in an environment receives percepts, i.e. immediately *before* the agent's AgentProgram is called.

Specified by:
agentReceivedPercepts in interface AgentReceivedPerceptsListener<K extends AgentAction,P extends AgentPercept,A extends Agent<K,P>>
Parameters:
theEvent - event specifying the environment, agent, and set of percepts

agentChoseAction

public void agentChoseAction(AgentChoseActionEvent<K,P,A> theEvent)
Fired when an agent in an environment chooses an action (i.e. executes its AgentProgram)

This step is where the GUI imposes a delay, or pauses.

Specified by:
agentChoseAction in interface AgentChoseActionListener<K extends AgentAction,P extends AgentPercept,A extends Agent<K,P>>
Parameters:
theEvent - specifies the environment, agent, and action

environmentStoppedRunning

public void environmentStoppedRunning(EnvironmentStoppedRunningEvent theEvent)
Fired when an environment is about to stop its run() loop.

Specified by:
environmentStoppedRunning in interface EnvironmentStoppedRunningListener
Parameters:
theEvent - event specifying the environment.

playingStateChanged

public void playingStateChanged(ObserverPlayingStateChangedEvent theEvent)
Fired when the user clicks one of the buttons to change the playing state.

Specified by:
playingStateChanged in interface ObserverPlayingStateChangedListener
Parameters:
theEvent -

stateChanged

public void stateChanged(javax.swing.event.ChangeEvent changeEvent)
Fired when the user adjusts the slider to set the playing speed.

Specified by:
stateChanged in interface javax.swing.event.ChangeListener
Parameters:
changeEvent -

generateEnvironmentPanel

public abstract J generateEnvironmentPanel()
Generates a new instance of the environment panel for this observer.

Returns:
a new environment panel, calling constructors as necessary

delayForSetting

protected int delayForSetting(int setting)
Given a number between 0 and 100 (inclusive), returns a delay in milliseconds.

The idea here is to allow relatively fine control over the faster speeds (smaller delays), while still allowing the delay to range to large values.

This implementation uses a simple logistic equation to give a nice curve.

Parameters:
setting, - between 0 and 100 where 0 = fast, 100 = slow
Returns:
a delay in milliseconds