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; }
/** Used to find the global attributes that another inspector has set so I can share it. */ GlobalAttributes findGlobalAttributes() { if (generator == null) return null; // got a problem int len = generator.getGlobalAttributeCount(); for (int i = 0; i < len; i++) if ((generator.getGlobalAttribute(i) instanceof GlobalAttributes)) return (GlobalAttributes) generator.getGlobalAttribute(i); return null; }
public void updateInspector() { double time = simulation.state.schedule.time(); // we should only update if we're at a new time that we've not seen yet, or if // we're at the start of inspection and haven't done an update yet. It's possible // for this second condition to be true while the first one is false: if we're at // simulation start, then lastTime == Schedule.BEFORE_SIMULATION == time, but we'd // still want to update at least one time. if (time >= Schedule.EPOCH && time < Schedule.AFTER_SIMULATION && (lastTime < time || !updatedOnceAlready)) // bug fix { updatedOnceAlready = true; updateSeries(time, lastTime); lastTime = time; // now determine when to update switch (globalAttributes.redraw) { case REDRAW_ALWAYS: // do it now generator.update(); break; case REDRAW_TENTH_SEC: updateBefore(100); break; case REDRAW_HALF_SEC: updateBefore(500); break; case REDRAW_ONE_SEC: updateBefore(1000); break; case REDRAW_TWO_SECS: updateBefore(2000); break; case REDRAW_FIVE_SECS: updateBefore(5000); break; case REDRAW_TEN_SECS: updateBefore(10000); break; case REDRAW_DONT: // do nothing break; default: System.err.println("Unknown redraw time specified"); } } }