|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
sim.display.Console
Console is an elaborate Controller which provides a variety of GUI niceties to control the basics of a simulation. Most significantly it provides:
Console maintains the underlying play thread of the model, and handles much of the complexities that come with doing threads.
Console generates a mammoth number of anonymous subclasses. Well, such is life with a complicated GUI I guess. Don't be daunted by them -- almost all of them are little tiny things like Runnables to pass into SwingUtilities.invokeLater(), or various anonymous listeners and adapters for buttons and text fields etc.
Nested Class Summary |
Nested classes inherited from class javax.swing.JFrame |
javax.swing.JFrame.AccessibleJFrame |
Nested classes inherited from class java.awt.Frame |
java.awt.Frame.AccessibleAWTFrame |
Nested classes inherited from class java.awt.Window |
java.awt.Window.AccessibleAWTWindow |
Nested classes inherited from class java.awt.Container |
java.awt.Container.AccessibleAWTContainer |
Nested classes inherited from class java.awt.Component |
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy |
Field Summary | |
static javax.swing.ImageIcon |
I_PAUSE_OFF
|
static javax.swing.ImageIcon |
I_PAUSE_ON
|
static javax.swing.ImageIcon |
I_PLAY_OFF
|
static javax.swing.ImageIcon |
I_PLAY_ON
|
static javax.swing.ImageIcon |
I_STEP_OFF
|
static javax.swing.ImageIcon |
I_STEP_ON
|
static javax.swing.ImageIcon |
I_STOP_OFF
|
static javax.swing.ImageIcon |
I_STOP_ON
|
static int |
PS_PAUSED
The play thread is presently paused. |
static int |
PS_PLAYING
The play thread is presently playing. |
static int |
PS_STOPPED
The play thread is presently stopped. |
GUIState |
simulation
Our simulation |
Fields inherited from class javax.swing.JFrame |
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled |
Fields inherited from class java.awt.Frame |
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR |
Fields inherited from class java.awt.Component |
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
Fields inherited from interface javax.swing.WindowConstants |
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE |
Fields inherited from interface java.awt.image.ImageObserver |
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
Console(GUIState simulation)
Creates a Console, using the default initial start behavior (INITIAL_BEHAVIOR_START). |
Method Summary | |
void |
doChangeCode(java.lang.Runnable r)
This method will interrupt the simulation (pause it), call your runnable, then continue (uninterrupt) the simulation. |
void |
doClose()
Closes the Console and shuts down the simulation. |
void |
doNew()
Pops up a window allowing the user to enter in a class name to start a new simulation. |
void |
doOpen()
Reverts the current simulation to the simulation stored at a user-specified checkpoint filename. |
void |
doQuit()
Quits the program. |
void |
doSave()
Lets the user checkpoint out a simulation to the last checkpoint filename. |
void |
doSaveAs()
Lets the user checkpoint out a simulation to a file with a given name. |
static java.lang.String |
ensureFileEndsWith(java.lang.String filename,
java.lang.String ending)
Returns a filename which is guaranteed to end with the given ending. |
long |
getPlaySleep()
Gets how long we should sleep between each step in the play thread (in milliseconds). |
javax.swing.JTabbedPane |
getTabPane()
Simulations can call this to get access to the tabPane -- to add tabbed panes as they like. |
int |
getThreadPriority()
Get when the simulation should end. |
long |
getWhenShouldEnd()
Get when the simulation should end. |
long |
getWhenShouldPause()
Get when the simulation should pause. |
void |
informOfError(java.lang.Throwable error,
java.lang.String errorDescription)
Pops up an error dialog box. |
void |
pressPause()
Called when the user presses the pause button. |
void |
pressPlay()
Called when the user presses the play button. |
void |
pressStop()
Called when the user presses the stop button. |
void |
refresh()
Lazily updates and redraws all the displays and inspectors. |
boolean |
registerFrame(javax.swing.JFrame frame)
Simulations can call this to add a frame to be listed in the "Display list" of the console |
void |
removeAllInspectors(boolean killDraggedOutWindowsToo)
Removes all inspectors. |
void |
setInspectors(Bag inspectors,
Bag names)
Adds new inspectors, given the provided inspectors, their portrayals, and appropriate names for them. |
void |
setPlaySleep(long sleep)
Sets (in milliseconds) how long we should sleep between each step in the play thread. |
void |
setThreadPriority(int val)
Set when the simulation should end. |
void |
setTicksPerSecond(double val)
Sets the frame rate. |
void |
setTime(long val)
Sets the time. |
void |
setWhenShouldEnd(long val)
Set when the simulation should end. |
void |
setWhenShouldPause(long val)
Sets when the simulation should pause. |
void |
toggleShowsTime()
Shows or hides the time and frame rate. |
boolean |
unregisterAllFrames()
Simulations can call this to clear out the "Display list" of the console |
boolean |
unregisterFrame(javax.swing.JFrame frame)
Simulations can call this to remove a frame from the "Display list" of the console |
Methods inherited from class javax.swing.JFrame |
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update |
Methods inherited from class java.awt.Frame |
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setIconImage, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated |
Methods inherited from class java.awt.Window |
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, show, toBack, toFront |
Methods inherited from class java.awt.Container |
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree |
Methods inherited from class java.awt.Component |
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle |
Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface java.awt.MenuContainer |
getFont, postEvent |
Field Detail |
public GUIState simulation
public static final javax.swing.ImageIcon I_PLAY_ON
public static final javax.swing.ImageIcon I_PLAY_OFF
public static final javax.swing.ImageIcon I_STOP_ON
public static final javax.swing.ImageIcon I_STOP_OFF
public static final javax.swing.ImageIcon I_PAUSE_ON
public static final javax.swing.ImageIcon I_PAUSE_OFF
public static final javax.swing.ImageIcon I_STEP_ON
public static final javax.swing.ImageIcon I_STEP_OFF
public static final int PS_STOPPED
public static final int PS_PLAYING
public static final int PS_PAUSED
Constructor Detail |
public Console(GUIState simulation)
Method Detail |
public void setThreadPriority(int val)
public int getThreadPriority()
public void setWhenShouldEnd(long val)
public long getWhenShouldEnd()
public void setWhenShouldPause(long val)
public long getWhenShouldPause()
public void setPlaySleep(long sleep)
public long getPlaySleep()
public javax.swing.JTabbedPane getTabPane()
public void informOfError(java.lang.Throwable error, java.lang.String errorDescription)
public static java.lang.String ensureFileEndsWith(java.lang.String filename, java.lang.String ending)
public void doQuit()
public void doClose()
public void doNew()
public void doSaveAs()
public void doSave()
public void doOpen()
public void pressStop()
public void pressPause()
public void pressPlay()
public void toggleShowsTime()
public void setTicksPerSecond(double val)
public void setTime(long val)
public boolean registerFrame(javax.swing.JFrame frame)
registerFrame
in interface Controller
public boolean unregisterFrame(javax.swing.JFrame frame)
unregisterFrame
in interface Controller
public boolean unregisterAllFrames()
unregisterAllFrames
in interface Controller
public void doChangeCode(java.lang.Runnable r)
Controller
You have other options for updating the model from external threads. One option is to add a Steppable to GUIState's scheduleImmediate(...) queue. When the Steppable is stepped, it will be done so inside the model's thread. This is asynchronous (non-blocking), however.
Alternatively, you can synchronize on state.schedule and run your code. This is synchronous.
doChangeCode
in interface Controller
public void refresh()
Controller
refresh
in interface Controller
public void setInspectors(Bag inspectors, Bag names)
setInspectors
in interface Controller
public void removeAllInspectors(boolean killDraggedOutWindowsToo)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |