ChartGenerator createNewChart(final GUIState simulation) { generator = createNewGenerator(); globalAttributes = new GlobalAttributes(); generator.addGlobalAttribute(globalAttributes); // it'll be added last // set up the simulation -- need a new name other than guiObjects: and it should be // a HashMap rather than a Bag. if (simulation.guiObjects == null) simulation.guiObjects = new Bag(); simulation.guiObjects.add(generator); final JFrame f = generator.createFrame(simulation); WindowListener wl = new WindowListener() { public void windowActivated(WindowEvent e) {} public void windowClosed(WindowEvent e) {} public void windowClosing(WindowEvent e) { generator.quit(); } public void windowDeactivated(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowOpened(WindowEvent e) {} }; f.addWindowListener(wl); f.setVisible(true); return generator; }
public void init(Controller c) { super.init(c); // Make the Display2D. We'll have it display stuff later. display = new Display2D(500, 500, this, 1); // at 400x400, we've got 4x4 per array position displayFrame = display.createFrame(); c.registerFrame(displayFrame); // register the frame so it appears in the "Display" list displayFrame.setVisible(true); // attach the portrayals from bottom to top display.attach(foodPortrayal, "Food"); display.attach(agentPortrayal, "Agents"); displayFrame.setTitle("Agents"); // specify the backdrop color -- what gets painted behind the displays display.setBackdrop(Color.yellow); // Make the Display2D. We'll have it display stuff later. display2 = new Display2D(400, 400, this, 1); // at 400x400, we've got 4x4 per array position displayFrame2 = display2.createFrame(); displayFrame2.setTitle("Statistic"); c.registerFrame(displayFrame2); // register the frame so it appears in the "Display" list displayFrame2.setVisible(false); // specify the backdrop color -- what gets painted behind the displays display2.setBackdrop(Color.GRAY); // attach the portrayals from bottom to top display2.attach(summaryPortrayal, "Summary"); }
public void quit() { super.quit(); display = null; if (displayFrame != null) { JFrame f = displayFrame; displayFrame = null; f.dispose(); } }
// this method is called when the user close the java window public void quit() { super.quit(); // disposing the displayFrame automatically calls quit() on the display, // so we don't need to do so ourselves here. if (displayFrame != null) { displayFrame.dispose(); displayFrame2.dispose(); } // displayFrame = null; // let gc // displayFrame2=null; // display = null; // let gc // display2=null; }
public void init(final Controller c) { super.init(c); // make the displayer display = new Display2D(448, 560, this) { public void createConsoleMenu() {} public void quit() { super.quit(); ((SimpleController) c).doClose(); } }; display.setBackdrop(Color.black); displayFrame = display.createFrame(); displayFrame.setTitle("MASON Pac Man"); c.registerFrame(displayFrame); // register the frame so it appears in the "Display" list displayFrame.setVisible(true); // Notice the order: first the background, then the dots, then the agents, then the overlay display.attach(mazePortrayal, "Maze"); // display.attach( background, "Background"); display.attach(dotPortrayal, "Dots", 8, 8, true); display.attach(agentPortrayal, "Agents", 8, 8, true); display.attach(new Overlay(this), "Overlay"); // Some stuff to make this feel less like MASON // delete the header display.remove(display.header); // delete all listeners display.removeListeners(); // delete the scroll bars display.display.setVerticalScrollBarPolicy(display.display.VERTICAL_SCROLLBAR_NEVER); display.display.setHorizontalScrollBarPolicy(display.display.HORIZONTAL_SCROLLBAR_NEVER); // when we close the window, the application quits displayFrame.setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE); // can't resize displayFrame.setResizable(false); // add antialiasing and interpolation display.insideDisplay.setupHints(true, false, false); // the window won't be the right size now -- modify it. displayFrame.pack(); // Now we add in the listeners we want addListeners(display); }
/** Creates key listeners which issue requests to the simulation. */ public void addListeners(final Display2D display) { final PacMan pacman = (PacMan) state; final SimpleController cont = (SimpleController) controller; // Make us able to take focus -- this is by default true usually anyway display.setFocusable(true); // Make us request focus whenever our window comes up displayFrame.addWindowListener( new WindowAdapter() { public void windowActivated(WindowEvent e) { display.requestFocusInWindow(); } }); // the display frame has just been set visible so we need to request focus once display.requestFocusInWindow(); display.addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent e) { int c = e.getKeyCode(); switch (c) { case KeyEvent.VK_UP: pacman.actions[0] = Pac.N; break; case KeyEvent.VK_DOWN: pacman.actions[0] = Pac.S; break; case KeyEvent.VK_LEFT: pacman.actions[0] = Pac.W; break; case KeyEvent.VK_RIGHT: pacman.actions[0] = Pac.E; break; case KeyEvent.VK_W: pacman.actions[1] = Pac.N; break; case KeyEvent.VK_S: pacman.actions[1] = Pac.S; break; case KeyEvent.VK_A: pacman.actions[1] = Pac.W; break; case KeyEvent.VK_D: pacman.actions[1] = Pac.E; break; case KeyEvent .VK_R: // Reset the board. Easiest way: stop and play, which calls start() cont.pressStop(); cont.pressPlay(); break; case KeyEvent.VK_P: // Pause or unpause the game cont.pressPause(); break; case KeyEvent.VK_M: // Call forth MASON's new simulation window if (cont.getPlayState() != cont.PS_PAUSED) // pause it! cont.pressPause(); cont.doNew(); // the MASON window belongs to our frame, so Java stupidly doesn't send // us a window activated event when the MASON window is closed and our // frame comes to the fore again. So we have to manually do request // focus again here. display.requestFocusInWindow(); break; default: // do nothing break; } } }); }