Package manager

Source Code of manager.GUIController

package manager;

import agent.Agent;
import environment.Cell;
import environment.World;
import gui.GUIWorld;
import gui.MainJFrame;
import gui.WorldsContainerJPanel;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import constants.EventConstants;
import constants.GUIConstants;
import gui.CommandJPanel;
import java.util.List;
import parameters.UserGuiParams;

/**
*
* @author Marco Celesti
*/
public class GUIController extends Observable implements Observer, PropertyChangeListener {

    protected MainJFrame mainJFrame;
    private WorldsContainerJPanel worldsContainer;
    private CommandJPanel commandJPanel;
    private List<GUIWorldController> controllers = new ArrayList<GUIWorldController>();

    public GUIController(int nWorlds) {
        mainJFrame = new MainJFrame();
        worldsContainer = new WorldsContainerJPanel();
        worldsContainer.addPropertyChangeListener(this);

        commandJPanel = new CommandJPanel();
        commandJPanel.addPropertyChangeListener(this);

        for (int i = 0; i < nWorlds; i++) {
            GUIWorldController controller = new GUIWorldController();
            controller.addObserver(this);
            controllers.add(controller);
        }
    }

    public void addWorld(World world) {
        GUIWorld guiWorld = controllers.get(world.getId()).createGUIWorld(world);
        worldsContainer.addWorld(guiWorld);
        guiWorld.repaint();
    }

    public void pack() {
        if (UserGuiParams.GUI) {
            mainJFrame.setWorldsContainer(worldsContainer);
            if (UserGuiParams.COMMAND_PANEL) {
                mainJFrame.setCommandContainer(commandJPanel);
            }
            mainJFrame.setVisible(true);
        }
    }

    public void createAgent(Agent agent) {
        int idWorld = agent.getWorld().getId();
        controllers.get(idWorld).updateGUIAgent(agent);
    }

    public void update(Observable o, Object arg) {
        String event = (String) arg;
        if (event.equals(EventConstants.AGENT_EVENT)) {
            Agent agent = (Agent) o;
            int idWorld = agent.getWorld().getId();
            if (!agent.isAlive()) {
                killGuiAgent(agent);
            } else {
                controllers.get(idWorld).updateGUIAgent(agent);
            }
        } else if (event.equals(EventConstants.CELL_EVENT)) {
            World world = (World) o;
            int idWorld = world.getId();
            Cell cell = world.getChangedCell();
            controllers.get(idWorld).updateGUICell(cell);
        }
    }

    public void propertyChange(PropertyChangeEvent evt) {
        if (evt.getPropertyName().equals(GUIConstants.PHOTO)) {
            setChanged();
            notifyObservers(GUIConstants.PHOTO);
        }
    }

    private void killGuiAgent(Agent agent) {
        controllers.get(agent.getWorld().getId()).killGUIAgent(agent);
    }

    public void resetGrid(World world) {
        controllers.get(world.getId()).resetGUIGrid(world);
    }

    public void writeInfo(String info) {
        commandJPanel.writeInfo(info);
    }
}


TOP

Related Classes of manager.GUIController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.