fr.lifl.jedi.gui.display.colorGrid.view
Class ColorGridGUI

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 fr.lifl.jedi.gui.display.colorGrid.view.ColorGridGUI
All Implemented Interfaces:
ISimulationGUI, java.awt.event.ActionListener, java.awt.event.WindowListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class ColorGridGUI
extends javax.swing.JFrame
implements ISimulationGUI, java.awt.event.ActionListener, java.awt.event.WindowListener

This class corresponds to the frame where simulations are displayed.

This GUI displays the simulation as a two dimensional panel.

Every agent family is displayed thanks to an instance of the AgentDisplayer class.

In order to define how agents are represented in the environment, a particular object has to be created, and to be added to the GUI (see and {@link ColorGridModel#setHowToDisplay(Class, AgentDisplayer)}). Such an object has to extend the class AgentDisplayer, or to instantiate one of the following classes :

  1. ColorRectangleDisplayer : it displays the agent as a rectangle filled with a particular color. The dimensions of the rectangle are based on the surface of the agent.
  2. ColorRectangleWithLineDisplayer : it displays the agent as a rectangle filled with a particular color. The dimensions of the rectangle are based on the surface of the agent. Moreover, the direction of the agent is displayed within the rectangle in a particular color.
  3. ColorTriangleDisplayer : it displays the agent as a triangle filled with a particular color. The dimensions of the triangle are based on the surface of the agent. The triangle rotates according to the direction of the agent.
  4. EmptyDisplayer : it does not display the agent in the GUI.
  5. StaticColorRectangleDisplayer : it displays the agent as a rectangle filled with a particular color. The dimensions of the rectangle are defined at the beginning of the simulation, and do not depend on the surface of the agent.
  6. StaticColorTriangleDisplayer : it displays the agent as a triangle filled with a particular color. The dimensions of the triangle are defined at the beginning of the simulation, and do not depend on the surface of the agent. The triangle rotates according to the direction of the agent.
  7. IconDisplayer : it displays the agent as an icon. The dimensions of the icon are based on the surface of the agent.
  8. StaticIconDisplayer : it displays the agent as an icon. The dimensions of the icon are defined at the beginning of the simulation, and do not depend on the surface of the agent.

Version:
JEDI V 2.2
Created the 4th nov. 2008
Created the 5th may 2009
Author:
Yoann Kubera
SMAC Team (Systèmes Multi-Agents et Comportement)
LIFL (Laboratoire d'Informatique Fondamentale de Lille)
University of Lille, France
See Also:
ColorGridModel, AgentDisplayer, Serialized Form

Nested Class Summary
 
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
 
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
ColorGridGUI(Environment e, java.lang.String title, int scalingFactor)
          Constructor of simulations GUI.
ColorGridGUI(Environment e, java.lang.String title, int width, int height, int scalingFactor)
          Constructor of simulations GUI.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
           
 void addObserver(java.util.Observer o)
          Adds an observer to this GUI
protected  ColorGridDisplayPanel createDisplayPanel(Environment e, int width, int height, int scalingFactor)
          Factory method used to create the panel where the simulation is displayed.
 void displayGUI()
          This method makes the GUI visible.
 ColorGridDisplayPanel getDisplayPanel()
          Gets the panel where the simulation is drawn.
 ColorGridDisplayUI getDisplayUI()
          Gets the element that draws the simulation on screen.
 ColorGridModel getGraphicalModel()
          Gets the graphical model associated with the GUI.
 javax.swing.JSlider getScaleBar()
          Gets the slide bar where the scaling factor of painting is defined.
 javax.swing.JLabel getScaleLabel()
          Gets the label where the zoom current value is displayed.
 javax.swing.JLabel getStepsLabel()
          Gets the label where the current time step number is displayed.
 void notifyObservers(ISimulationEvent m)
          Notifies a message to all observers registered to this GUI.
 void removeObserver(java.util.Observer o)
          Removes an observer from this GUI
 void windowActivated(java.awt.event.WindowEvent e)
           
 void windowClosed(java.awt.event.WindowEvent e)
           
 void windowClosing(java.awt.event.WindowEvent e)
           
 void windowDeactivated(java.awt.event.WindowEvent e)
           
 void windowDeiconified(java.awt.event.WindowEvent e)
           
 void windowIconified(java.awt.event.WindowEvent e)
           
 void windowOpened(java.awt.event.WindowEvent e)
           
 
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
 

Constructor Detail

ColorGridGUI

public ColorGridGUI(Environment e,
                    java.lang.String title,
                    int width,
                    int height,
                    int scalingFactor)
Constructor of simulations GUI.

Parameters:
e - The environment to display in the GUI
title - The text used as title of the frame.
width - The width of the displayed frame.
height - The height of the displayed frame.
scalingFactor - The factor that is used to scale all distances defined in the simulation.

ColorGridGUI

public ColorGridGUI(Environment e,
                    java.lang.String title,
                    int scalingFactor)
Constructor of simulations GUI.

This GUI uses a default resolution of 800 x 600.

Parameters:
e - The environment to display in the GUI
title - The text used as title of the frame.
scalingFactor - The factor that is used to scale all distances defined in the simulation.
Method Detail

createDisplayPanel

protected ColorGridDisplayPanel createDisplayPanel(Environment e,
                                                   int width,
                                                   int height,
                                                   int scalingFactor)
Factory method used to create the panel where the simulation is displayed.

Parameters:
e - The environment to display in the GUI
width - The width of the displayed frame.
height - The height of the displayed frame.
scalingFactor - The factor that is used to scale all distances defined in the simulation.

getDisplayUI

public ColorGridDisplayUI getDisplayUI()
Gets the element that draws the simulation on screen.

Returns:
The element that draws the simulation on screen.

getDisplayPanel

public ColorGridDisplayPanel getDisplayPanel()
Gets the panel where the simulation is drawn.

Returns:
The panel where the simulation is drawn

getGraphicalModel

public ColorGridModel getGraphicalModel()
Gets the graphical model associated with the GUI.

This model defines :

Returns:
the graphical model associated with the GUI.

getStepsLabel

public javax.swing.JLabel getStepsLabel()
Gets the label where the current time step number is displayed.

Returns:
the label where the current time step number is displayed.

getScaleBar

public javax.swing.JSlider getScaleBar()
Gets the slide bar where the scaling factor of painting is defined.

Returns:
the slide bar where the scaling factor of painting is defined.

getScaleLabel

public javax.swing.JLabel getScaleLabel()
Gets the label where the zoom current value is displayed.

Returns:
the label where the zoom current value is displayed.

displayGUI

public void displayGUI()
This method makes the GUI visible.


addObserver

public void addObserver(java.util.Observer o)
Description copied from interface: ISimulationGUI
Adds an observer to this GUI

Specified by:
addObserver in interface ISimulationGUI
Parameters:
o - The observer to add to the GUI
See Also:
ISimulationGUI.addObserver(java.util.Observer)

removeObserver

public void removeObserver(java.util.Observer o)
Description copied from interface: ISimulationGUI
Removes an observer from this GUI

Specified by:
removeObserver in interface ISimulationGUI
Parameters:
o - The observer to add to the GUI
See Also:
ISimulationGUI.removeObserver(java.util.Observer)

notifyObservers

public void notifyObservers(ISimulationEvent m)
Description copied from interface: ISimulationGUI
Notifies a message to all observers registered to this GUI.

Specified by:
notifyObservers in interface ISimulationGUI
Parameters:
m - The notified event.
See Also:
ISimulationGUI.notifyObservers(ISimulationEvent)

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
Specified by:
actionPerformed in interface java.awt.event.ActionListener
See Also:
ActionListener.actionPerformed(java.awt.event.ActionEvent)

windowActivated

public void windowActivated(java.awt.event.WindowEvent e)
Specified by:
windowActivated in interface java.awt.event.WindowListener
See Also:
WindowListener.windowActivated(java.awt.event.WindowEvent)

windowClosed

public void windowClosed(java.awt.event.WindowEvent e)
Specified by:
windowClosed in interface java.awt.event.WindowListener
See Also:
WindowListener.windowClosed(java.awt.event.WindowEvent)

windowClosing

public void windowClosing(java.awt.event.WindowEvent e)
Specified by:
windowClosing in interface java.awt.event.WindowListener
See Also:
WindowListener.windowClosing(java.awt.event.WindowEvent)

windowDeactivated

public void windowDeactivated(java.awt.event.WindowEvent e)
Specified by:
windowDeactivated in interface java.awt.event.WindowListener
See Also:
WindowListener.windowDeactivated(java.awt.event.WindowEvent)

windowDeiconified

public void windowDeiconified(java.awt.event.WindowEvent e)
Specified by:
windowDeiconified in interface java.awt.event.WindowListener
See Also:
WindowListener.windowDeiconified(java.awt.event.WindowEvent)

windowIconified

public void windowIconified(java.awt.event.WindowEvent e)
Specified by:
windowIconified in interface java.awt.event.WindowListener
See Also:
WindowListener.windowIconified(java.awt.event.WindowEvent)

windowOpened

public void windowOpened(java.awt.event.WindowEvent e)
Specified by:
windowOpened in interface java.awt.event.WindowListener
See Also:
WindowListener.windowOpened(java.awt.event.WindowEvent)