|
|||||||||
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
public class 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.
When you create new simulations (by frobbing the "New Simulation..." menu), you're presented with a ComboBox. Here you can type in any simulation class you like, or you can pick from a collection of pre-defined classes. The pre-defined class names are stored in the text file "simulation.classes", located in the same directory as the Console.class file. Feel free to edit it.
While normally you'd start a MASON application by running a main() method created by the developer, you can also fire up the Console directly and pick a model from the aforementioned ComboBox. To do this, simply run java sim.display.Console
If you attach a Frame to the Console, it will appear in the Console's "Displays" tab, where the user has control over hiding and showing various frames. The best time to do such attaching is during your GUIState's init() method. Such Frames should be set to hide (not dispose) when closed. JFrames do this by default.
Console places itself on-screen using the following rule. First it moves itself to an unusual location (presently -10000 x -10000). Then it calls init() on your GUIState. If in init() you move the Console to a position, then that's where it will stay. If not, then the Console looks up all the Frames attached to it during init() and places itself to the right of the rightmost such Frame, if there is room on the main display. If not, then Console puts itself in its default position (typically the top left corner of the screeen).
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/interfaces inherited from class javax.swing.JFrame |
---|
javax.swing.JFrame.AccessibleJFrame |
Nested classes/interfaces inherited from class java.awt.Frame |
---|
java.awt.Frame.AccessibleAWTFrame |
Nested classes/interfaces inherited from class java.awt.Window |
---|
java.awt.Window.AccessibleAWTWindow |
Nested classes/interfaces inherited from class java.awt.Container |
---|
java.awt.Container.AccessibleAWTContainer |
Nested classes/interfaces inherited from class java.awt.Component |
---|
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy |
Field Summary | |
---|---|
static java.util.WeakHashMap |
allControllers
A weak container for all current consoles and other controllers which wish to be there. |
static int |
DEFAULT_GUTTER
When the Console is laid out to the right of some window, the space allocated between it and the window |
static int |
DEFAULT_HEIGHT
Default height of the Console. |
static int |
DEFAULT_WIDTH
Default width of the Console. |
static int |
MAXIMUM_STEPS
Default maximum number of steps in the step slider |
static java.lang.String |
NAME_INDICATOR
Used in the 'simulation.classes' file to specify a special name for a simulation. |
static java.lang.String |
ONLY_INDICATOR
Used in the 'simulation.classes' file to indicate that nonstandard classes may not be accessed. |
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. |
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 | |
---|---|
protected void |
doAbout()
|
void |
doChangeCode(java.lang.Runnable r)
Deprecated. |
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. |
static 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. |
java.util.ArrayList |
getAllFrames()
Returns a list of all displays. |
java.util.ArrayList |
getAllInspectors()
Returns a list of all current inspectors. |
boolean |
getIncrementSeedOnPlay()
Deprecated. renamed to getIncrementSeedOnStop |
boolean |
getIncrementSeedOnStop()
|
Inspector |
getModelInspector()
Return the model inspector so simulations can do things like updating the properties. |
int |
getNumStepsPerStepButtonPress()
|
long |
getPlaySleep()
Gets how long we should sleep between each step in the play thread (in milliseconds). |
int |
getPlayState()
Gets whether or not the current thread is PS_PLAYING, PS_STOPPED, or PS_PAUSED. |
boolean |
getRequiresConfirmationToStop()
|
boolean |
getShouldRepeat()
Get whether or not the simualtion should repeat when the stop button is pressed. |
GUIState |
getSimulation()
|
double |
getStepsPerSecond()
Returns the frame rate. |
javax.swing.JTabbedPane |
getTabPane()
Simulations can call this to get access to the tabPane -- to add tabbed panes as they like. |
int |
getThreadPriority()
Deprecated. We may eliminate thread priority as an option |
long |
getWhenShouldEnd()
Get when the simulation should end. |
double |
getWhenShouldEndTime()
Get when the simulation should end. |
long |
getWhenShouldPause()
Get when the simulation should pause. |
double |
getWhenShouldPauseTime()
Get when the simulation should pause. |
void |
hideAllFrames()
Hides all JFrames registered with the Console. |
boolean |
isNewMenuAllowed()
|
static void |
main(java.lang.String[] args)
Pops up a window allowing the user to enter in a class name to start a new simulation. |
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 |
registerInspector(Inspector inspector,
Stoppable stopper)
Registers an inspector to be Stopped if necessary in the future. |
void |
removeAllInspectors(boolean killDraggedOutWindowsToo)
Stops and removes all inspectors. |
void |
setIncrementSeedOnPlay(boolean val)
Deprecated. renamed to setIncrementSeedOnStop |
void |
setIncrementSeedOnStop(boolean val)
|
void |
setInspectors(Bag inspectors,
Bag names)
Adds new inspectors to the Console's list, given the provided inspectors, their portrayals, and appropriate names for them. |
void |
setNewMenuAllowed(boolean val)
|
void |
setNumStepsPerStepButtonPress(int val)
Sets the number of steps per stepp button press. |
void |
setPlaySleep(long sleep)
Sets (in milliseconds) how long we should sleep between each step in the play thread. |
void |
setRequiresConfirmationToStop(boolean val)
|
void |
setShouldRepeat(boolean val)
Set whether or not the simualtion should repeat when the stop button is pressed. |
void |
setThreadPriority(int val)
Deprecated. We may eliminate thread priority as an option |
void |
setWhenShouldEnd(long val)
Set when the simulation should end. |
void |
setWhenShouldEndTime(double val)
Set when the simulation should end. |
void |
setWhenShouldPause(long val)
Sets when the simulation should pause. |
void |
setWhenShouldPauseTime(double val)
Sets when the simulation should pause. |
void |
showAllFrames()
Shows and brings to front all JFrames registered with the Console. |
void |
stopAllInspectors(boolean killDraggedOutWindowsToo)
Stops all inspectors. |
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, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update |
Methods inherited from class java.awt.Frame |
---|
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, 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, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, 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, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, 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, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface java.awt.MenuContainer |
---|
getFont, postEvent |
Field Detail |
---|
public static final int DEFAULT_WIDTH
public static final int DEFAULT_HEIGHT
public static final int DEFAULT_GUTTER
public static final int MAXIMUM_STEPS
public static final int PS_STOPPED
public static final int PS_PLAYING
public static final int PS_PAUSED
public static java.util.WeakHashMap allControllers
public static final java.lang.String ONLY_INDICATOR
public static final java.lang.String NAME_INDICATOR
Constructor Detail |
---|
public Console(GUIState simulation)
Method Detail |
---|
public GUIState getSimulation()
public void setNewMenuAllowed(boolean val)
public boolean isNewMenuAllowed()
public void setShouldRepeat(boolean val)
public boolean getShouldRepeat()
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 setWhenShouldEndTime(double val)
public double getWhenShouldEndTime()
public void setWhenShouldPauseTime(double val)
public double getWhenShouldPauseTime()
public void setPlaySleep(long sleep)
public long getPlaySleep()
public int getPlayState()
public javax.swing.JTabbedPane getTabPane()
public Inspector getModelInspector()
public static void doQuit()
public void doClose()
public static void main(java.lang.String[] args)
protected void doAbout()
public void doNew()
public void doSaveAs()
public void doSave()
public void doOpen()
public java.util.ArrayList getAllFrames()
getAllFrames
in interface Controller
public void showAllFrames()
public void hideAllFrames()
public void setRequiresConfirmationToStop(boolean val)
public boolean getRequiresConfirmationToStop()
public void setIncrementSeedOnPlay(boolean val)
public boolean getIncrementSeedOnPlay()
public void setIncrementSeedOnStop(boolean val)
public boolean getIncrementSeedOnStop()
public void pressStop()
public void pressPause()
public int getNumStepsPerStepButtonPress()
public void setNumStepsPerStepButtonPress(int val)
public void pressPlay()
public double getStepsPerSecond()
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 registerInspector(Inspector inspector, Stoppable stopper)
registerInspector
in interface Controller
public java.util.ArrayList getAllInspectors()
getAllInspectors
in interface Controller
public void stopAllInspectors(boolean killDraggedOutWindowsToo)
public void removeAllInspectors(boolean killDraggedOutWindowsToo)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |