org.ascape.view.vis
Class AgentView

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.ascape.view.vis.PanelView
                      extended by org.ascape.view.vis.BufferView
                          extended by org.ascape.view.vis.AgentView
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Externalizable, java.io.Serializable, java.lang.Cloneable, java.util.EventListener, java.util.Observer, javax.accessibility.Accessible, ScapeListener, HasName, ComponentView
Direct Known Subclasses:
AgentSizedView, EntityRelationView, MapView, Overhead2DContinuousView

public abstract class AgentView
extends BufferView
implements java.util.Observer

A generic base class for views that draw some kind of spatial view of a group of cells. Cell views have a default draw feature that draws a background for the cell, using the cell color feature.

Since:
1.0
Version:
3.0d
Author:
Miles Parker, Josh Miller
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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  ColorFeature agentColorFeature
          The color feature used to set the cell draw color.
protected  AgentCustomizer agentCustomizer
          The panel responsible for customizing a selected cell.
protected  boolean clearBackgroundAutomatically
          The clear background automatically.
protected  VectorSelection drawSelection
          The draw features that have been selected to draw.
protected  boolean updateAllRequested
          Has an update all been requested?.
 
Fields inherited from class org.ascape.view.vis.BufferView
bufferedGraphics, bufferedImage
 
Fields inherited from class org.ascape.view.vis.PanelView
delegate, iterationsPerRedraw, name, scape
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
AgentView()
          Instantiates a new agent view.
AgentView(java.lang.String name)
          Instantiates a new agent view.
 
Method Summary
 void addDrawFeature(DrawFeature feature)
          Adds the provided draw feature to this scape.
 void build()
          Called to create and layout the components of the component view, once the view's scape has been created.
protected  AgentCustomizer createAgentCustomizer()
          Creates the agent customizer.
 AgentCustomizerPanel createAgentCustomizerPanel()
          Constructs an agent panel to use to represent Agent data in the customizer.
 void displayAgentCustomizer(Agent agent)
          Displays a window for altering the setting for this view.
 void displayCustomizer()
          Displays a customizer for altering the settings for this view.
protected  void drawSelectedAgent(java.awt.Graphics g)
          Draws a marker for the agent, if any, currently being viewed by the agent customizer.
protected  void drawSelectedAgent(java.awt.Graphics g, LocatedAgent a)
          Draws a marker for the provided selected agent.
 Agent getAgentAtPixel(int x, int y)
          Returns the cell at the given pixel in this view.
 ColorFeature getAgentColorFeature()
          Returns the color feature that will be used for determining agent color.
 AgentCustomizer getAgentCustomizer()
          Gets the agent customizer.
 java.util.Vector getDrawFeatures()
          Returns, as a vector, the draw features available for interpretation of members of this scape.
protected  java.util.Observable getDrawFeaturesObservable()
          Returns an observable delegate that notifies users of draw features that a change has occurred.
 VectorSelection getDrawSelection()
          Returns the selection of draw features for this view.
 boolean isClearBackground()
          Checks if is clear background.
 void paintComponent(java.awt.Graphics g)
          Paints the canvas.
 void readExternal(java.io.ObjectInput in)
          The object implements the readExternal method to restore its contents by calling the methods of DataInput for primitive types and readObject for objects, strings and arrays.
 void removeAgentCustomizer()
          Removes the agent inspector from this view.
 void removeCustomizer()
          Removes the customizer for this view.
 boolean removeDrawFeature(DrawFeature feature)
          Removes the provided draw feature.
 void requestUpdateAll()
          Requests that all cells be updated, irregardless of wether they have requested it or not.
 void scapeAdded(ScapeEvent scapeEvent)
          Called immediatly after the scape is started.
 void scapeStarted(ScapeEvent scapeEvent)
          Called immediatly after the scape is started.
 void setAgentColorFeature(ColorFeature agentColorFeature)
          Set the color feature that will be used for determining agent color.
 void setAgentCustomizer(AgentCustomizer customizer)
          Sets the agent customizer.
 void setClearBackground(boolean clearBackground)
          Sets the clear background.
 void setCustomizeAgent(Agent agent)
          Sets the customize agent.
 void update(java.util.Observable o, java.lang.Object arg)
           
 void updateScapeGraphics()
          Called when scape reports an update event.
 void writeExternal(java.io.ObjectOutput out)
          The object implements the writeExternal method to save its contents by calling the methods of DataOutput for its primitive values or calling the writeObject method of ObjectOutput for objects, strings, and arrays.
 
Methods inherited from class org.ascape.view.vis.BufferView
addNotify, buildGraphicsBuffer, finalize, getBufferedImage, imageUpdate, setBounds, setBufferedImage
 
Methods inherited from class org.ascape.view.vis.PanelView
clone, environmentQuiting, forceScapeNotify, getDelegate, getIcon, getIterationsPerRedraw, getName, getPreferredSizeWithin, getScape, getViewFrame, iconUpdated, isGraphic, isLifeOfScape, notifyScapeUpdated, onChangeIterationsPerRedraw, scapeClosing, scapeDeserialized, scapeInitialized, scapeIterated, scapeNotification, scapeRemoved, scapeSetup, scapeStopped, setDelegate, setIterationsPerRedraw, setMovieRecorder, setName, setViewFrame, toString
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setSize, setSize, show, show, size, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

updateAllRequested

protected boolean updateAllRequested
Has an update all been requested?.


agentCustomizer

protected AgentCustomizer agentCustomizer
The panel responsible for customizing a selected cell.


agentColorFeature

protected ColorFeature agentColorFeature
The color feature used to set the cell draw color.


drawSelection

protected VectorSelection drawSelection
The draw features that have been selected to draw.


clearBackgroundAutomatically

protected boolean clearBackgroundAutomatically
The clear background automatically.

Constructor Detail

AgentView

public AgentView()
Instantiates a new agent view.


AgentView

public AgentView(java.lang.String name)
Instantiates a new agent view.

Parameters:
name - the name
Method Detail

build

public void build()
Called to create and layout the components of the component view, once the view's scape has been created.

Specified by:
build in interface ComponentView
Overrides:
build in class PanelView

updateScapeGraphics

public void updateScapeGraphics()
Description copied from class: PanelView
Called when scape reports an update event. (No need to call this method after updating panel.)

Specified by:
updateScapeGraphics in interface ComponentView
Overrides:
updateScapeGraphics in class PanelView

scapeAdded

public void scapeAdded(ScapeEvent scapeEvent)
                throws java.util.TooManyListenersException
Called immediatly after the scape is started.

Specified by:
scapeAdded in interface ScapeListener
Overrides:
scapeAdded in class PanelView
Parameters:
scapeEvent - the scape event
Throws:
java.util.TooManyListenersException - the too many listeners exception

scapeStarted

public void scapeStarted(ScapeEvent scapeEvent)
Called immediatly after the scape is started.

Specified by:
scapeStarted in interface ScapeListener
Overrides:
scapeStarted in class PanelView
Parameters:
scapeEvent - the scape event

getDrawFeaturesObservable

protected java.util.Observable getDrawFeaturesObservable()
Returns an observable delegate that notifies users of draw features that a change has occurred. If you need to know when a change in draw features occur, implement observer in the appropriate class and add it to the Observerable this method returns.

Returns:
the draw features observable

addDrawFeature

public void addDrawFeature(DrawFeature feature)
Adds the provided draw feature to this scape.

Parameters:
feature - the feature
See Also:
DrawFeature

removeDrawFeature

public boolean removeDrawFeature(DrawFeature feature)
Removes the provided draw feature.

Parameters:
feature - the draw feature to be removed
Returns:
returns true if successful. False, otherwise.

getDrawFeatures

public java.util.Vector getDrawFeatures()
Returns, as a vector, the draw features available for interpretation of members of this scape.

Returns:
the draw features
See Also:
DrawFeature

setCustomizeAgent

public void setCustomizeAgent(Agent agent)
Sets the customize agent.

Parameters:
agent - the new customize agent

getAgentCustomizer

public AgentCustomizer getAgentCustomizer()
Gets the agent customizer.

Returns:
the agent customizer

setAgentCustomizer

public void setAgentCustomizer(AgentCustomizer customizer)
Sets the agent customizer.

Parameters:
customizer - the new agent customizer

getDrawSelection

public VectorSelection getDrawSelection()
Returns the selection of draw features for this view.

Returns:
the draw selection

displayCustomizer

public void displayCustomizer()
Displays a customizer for altering the settings for this view. May be a no op if (in the case of no swing support) a customizer isn't available for the environment.


removeCustomizer

public void removeCustomizer()
Removes the customizer for this view.


createAgentCustomizer

protected AgentCustomizer createAgentCustomizer()
Creates the agent customizer.

Returns:
the agent customizer

createAgentCustomizerPanel

public AgentCustomizerPanel createAgentCustomizerPanel()
Constructs an agent panel to use to represent Agent data in the customizer. Override this method to create custom implementations of AgentCustomizerPanel.

Returns:
a new instance of AgentCusotmizerPanel.

displayAgentCustomizer

public void displayAgentCustomizer(Agent agent)
Displays a window for altering the setting for this view. May be a no op if (in the case of no swing support) a viewCustomizer isn't available for the environment.

Parameters:
agent - the agent

removeAgentCustomizer

public void removeAgentCustomizer()
Removes the agent inspector from this view.


getAgentColorFeature

public ColorFeature getAgentColorFeature()
Returns the color feature that will be used for determining agent color. The default color feature is simply the getColor() method of the agent.

Returns:
the agent color feature

setAgentColorFeature

public void setAgentColorFeature(ColorFeature agentColorFeature)
Set the color feature that will be used for determining agent color. The default color feature is simply the getColor() method of the agent.

Parameters:
agentColorFeature - the color feature, whose object is assumed to be an agent populating this lattice

requestUpdateAll

public void requestUpdateAll()
Requests that all cells be updated, irregardless of wether they have requested it or not. Should be called whenever a change that can affect the view as a whole, such as a change in draw selection, is made. is made.


isClearBackground

public boolean isClearBackground()
Checks if is clear background.

Returns:
true, if is clear background

setClearBackground

public void setClearBackground(boolean clearBackground)
Sets the clear background.

Parameters:
clearBackground - the new clear background

getAgentAtPixel

public Agent getAgentAtPixel(int x,
                             int y)
Returns the cell at the given pixel in this view.

Parameters:
x - the horizontal pixel location
y - the vertical pixel location
Returns:
the agent at pixel

drawSelectedAgent

protected void drawSelectedAgent(java.awt.Graphics g,
                                 LocatedAgent a)
Draws a marker for the provided selected agent.

Parameters:
g - the graphics context to draw to
a - the agent to draw

drawSelectedAgent

protected void drawSelectedAgent(java.awt.Graphics g)
Draws a marker for the agent, if any, currently being viewed by the agent customizer.

Parameters:
g - the graphics context to draw to

update

public void update(java.util.Observable o,
                   java.lang.Object arg)
Specified by:
update in interface java.util.Observer

paintComponent

public void paintComponent(java.awt.Graphics g)
Paints the canvas. Ordinarily, you should not do painting here, but into the buffer in the scape updated method. Paint draws the buffer into the canvas. Here, we are just painting the selected cell, if any, directly into the graphics and calling the super method.

Overrides:
paintComponent in class BufferView
Parameters:
g - the g

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
The object implements the writeExternal method to save its contents by calling the methods of DataOutput for its primitive values or calling the writeObject method of ObjectOutput for objects, strings, and arrays.

Specified by:
writeExternal in interface java.io.Externalizable
Overrides:
writeExternal in class PanelView
Parameters:
out - the stream to write the object to
Throws:
java.io.IOException - Signals that an I/O exception has occurred.
java.io.IOException - Includes any I/O exceptions that may occur

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
The object implements the readExternal method to restore its contents by calling the methods of DataInput for primitive types and readObject for objects, strings and arrays. The readExternal method must read the values in the same sequence and with the same types as were written by writeExternal.

Specified by:
readExternal in interface java.io.Externalizable
Overrides:
readExternal in class PanelView
Parameters:
in - the stream to read data from in order to restore the object
Throws:
java.io.IOException - Signals that an I/O exception has occurred.
java.lang.ClassNotFoundException - the class not found exception
java.io.IOException - if I/O errors occur
java.lang.ClassNotFoundException - If the class for an object being restored cannot be found.


Copyright © 1998-2008 The Brookings Institution, NuTech Solutions, Metascape, LLC All Rights Reserved.