/*
* Copyright 2011 by Mark Coletti, Keith Sullivan, Sean Luke, and
* George Mason University Mason University Licensed under the Academic
* Free License version 3.0
*
* See the file "LICENSE" for more information
*
* $Id$
*/
package sim.app.geo.campusworld;
import com.vividsolutions.jts.io.ParseException;
import java.awt.Color;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import sim.display.Console;
import sim.display.Controller;
import sim.display.Display2D;
import sim.display.GUIState;
import sim.engine.SimState;
import sim.portrayal.geo.GeomPortrayal;
import sim.portrayal.geo.GeomVectorFieldPortrayal;
import sim.portrayal.simple.OvalPortrayal2D;
/** MASON GUI wrapper for Campus World demo
*
*/
public class CampusWorldWithUI extends GUIState
{
private Display2D display;
private JFrame displayFrame;
private GeomVectorFieldPortrayal walkwaysPortrayal = new GeomVectorFieldPortrayal();
private GeomVectorFieldPortrayal buildingPortrayal = new GeomVectorFieldPortrayal();
private GeomVectorFieldPortrayal roadsPortrayal = new GeomVectorFieldPortrayal();
private GeomVectorFieldPortrayal agentPortrayal = new GeomVectorFieldPortrayal();
public CampusWorldWithUI(SimState state)
{
super(state);
}
public CampusWorldWithUI() throws ParseException
{
super(new CampusWorld(System.currentTimeMillis()));
}
@Override
public void init(Controller controller)
{
super.init(controller);
display = new Display2D(CampusWorld.WIDTH, CampusWorld.HEIGHT, this);
display.attach(walkwaysPortrayal, "Walkways", true);
display.attach(buildingPortrayal, "Buildings", true);
display.attach(roadsPortrayal, "Roads", true);
display.attach(agentPortrayal, "Agents", true);
displayFrame = display.createFrame();
controller.registerFrame(displayFrame);
displayFrame.setVisible(true);
}
@Override
public void start()
{
super.start();
setupPortrayals();
}
private void setupPortrayals()
{
CampusWorld world = (CampusWorld)state;
walkwaysPortrayal.setField(world.walkways);
walkwaysPortrayal.setPortrayalForAll(new GeomPortrayal(Color.CYAN,true));
buildingPortrayal.setField(world.buildings);
BuildingLabelPortrayal b = new BuildingLabelPortrayal(new GeomPortrayal(Color.DARK_GRAY,true), Color.BLUE);
buildingPortrayal.setPortrayalForAll(b);
roadsPortrayal.setField(world.roads);
roadsPortrayal.setPortrayalForAll(new GeomPortrayal(Color.GRAY,true));
agentPortrayal.setField(world.agents);
agentPortrayal.setPortrayalForAll(new GeomPortrayal(Color.RED,10.0,true));
// agentPortrayal.setPortrayalForAll(new OvalPortrayal2D(Color.RED,6.0));
display.reset();
display.setBackdrop(Color.WHITE);
display.repaint();
}
public static void main(String[] args)
{
CampusWorldWithUI worldGUI = null;
try
{
worldGUI = new CampusWorldWithUI();
}
catch (ParseException ex)
{
Logger.getLogger(CampusWorldWithUI.class.getName()).log(Level.SEVERE, null, ex);
}
Console console = new Console(worldGUI);
console.setVisible(true);
}
}