// @topic S-0330-14-15-20 Java MVC JTable Demo // @brief Use case controller package gui_demo; import java.util.ArrayList; public class ControllerDemo { //---------------------------------------- // data //---------------------------------------- private WindowMainApp window = null; private boolean isSimulationRunning = false; private Scenario scenario = new Scenario(); //---------------------------------------- // constructors //---------------------------------------- //---------------------------------------- //operations //---------------------------------------- public void initUseCase() { // construct business objects as neccessary }//initUseCase public Scenario getScenario() { return scenario; }//getScenario public WindowMainApp getWindow() { return window; }//getWindow public void setWindow( WindowMainApp window ) { this.window = window; }//setWindow public void startAnimation() { isSimulationRunning = true; }//startAnimation public void animate() { if ( isSimulationRunning == false ) { return; } // update business model ArrayList<Elevator> elevators = ElevatorBank.GetInstance().getElevators(); for ( Elevator elevator : elevators ) { elevator.move(); } // update the view updateWindow(); }//animate void updateWindow() { // Make sure that the actual update happens on // the EDT thread: java.awt.EventQueue.invokeLater(new Runnable() { public void run() { // this must be done on EDT thread window.update(); } }); }//updateWindow public void saveScenario( int numberOfFloors, int numberOfElevators ) { // update the scenario object with current user data scenario.setNumberOfElevators(numberOfElevators); scenario.setNumberOfFloors(numberOfFloors); // tell the elevator bank to configure // floor and elevators: ElevatorBank.GetInstance().updateConfiguration( numberOfFloors, numberOfElevators ); }//saveScenario public void runSimulation() { isSimulationRunning = true; }//runSimulation public void stopSimulation() { isSimulationRunning = false; }//stopSimulation }//class ControllerDemo