sim.display
Class Console

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by sim.display.Console
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, Controller

public class Console
extends javax.swing.JFrame
implements Controller

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.

See Also:
Serialized Form

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.
 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

DEFAULT_WIDTH

public static final int DEFAULT_WIDTH
Default width of the Console.

See Also:
Constant Field Values

DEFAULT_HEIGHT

public static final int DEFAULT_HEIGHT
Default height of the Console.

See Also:
Constant Field Values

DEFAULT_GUTTER

public static final int DEFAULT_GUTTER
When the Console is laid out to the right of some window, the space allocated between it and the window

See Also:
Constant Field Values

MAXIMUM_STEPS

public static final int MAXIMUM_STEPS
Default maximum number of steps in the step slider

See Also:
Constant Field Values

PS_STOPPED

public static final int PS_STOPPED
The play thread is presently stopped.

See Also:
Constant Field Values

PS_PLAYING

public static final int PS_PLAYING
The play thread is presently playing.

See Also:
Constant Field Values

PS_PAUSED

public static final int PS_PAUSED
The play thread is presently paused.

See Also:
Constant Field Values

allControllers

public static java.util.WeakHashMap allControllers
A weak container for all current consoles and other controllers which wish to be there.


ONLY_INDICATOR

public static final java.lang.String ONLY_INDICATOR
Used in the 'simulation.classes' file to indicate that nonstandard classes may not be accessed.

See Also:
Constant Field Values

NAME_INDICATOR

public static final java.lang.String NAME_INDICATOR
Used in the 'simulation.classes' file to specify a special name for a simulation.

See Also:
Constant Field Values
Constructor Detail

Console

public Console(GUIState simulation)
Creates a Console, using the default initial start behavior (INITIAL_BEHAVIOR_START). Sets the simulation's controller to point to this Console.

Method Detail

setNewMenuAllowed

public void setNewMenuAllowed(boolean val)

isNewMenuAllowed

public boolean isNewMenuAllowed()

setShouldRepeat

public void setShouldRepeat(boolean val)
Set whether or not the simualtion should repeat when the stop button is pressed.


getShouldRepeat

public boolean getShouldRepeat()
Get whether or not the simualtion should repeat when the stop button is pressed.


setThreadPriority

public void setThreadPriority(int val)
Deprecated. We may eliminate thread priority as an option

Set the thread priority.


getThreadPriority

public int getThreadPriority()
Deprecated. We may eliminate thread priority as an option

Gets the thread priority.


setWhenShouldEnd

public void setWhenShouldEnd(long val)
Set when the simulation should end.


getWhenShouldEnd

public long getWhenShouldEnd()
Get when the simulation should end.


setWhenShouldPause

public void setWhenShouldPause(long val)
Sets when the simulation should pause.


getWhenShouldPause

public long getWhenShouldPause()
Get when the simulation should pause.


setWhenShouldEndTime

public void setWhenShouldEndTime(double val)
Set when the simulation should end.


getWhenShouldEndTime

public double getWhenShouldEndTime()
Get when the simulation should end.


setWhenShouldPauseTime

public void setWhenShouldPauseTime(double val)
Sets when the simulation should pause.


getWhenShouldPauseTime

public double getWhenShouldPauseTime()
Get when the simulation should pause.


setPlaySleep

public void setPlaySleep(long sleep)
Sets (in milliseconds) how long we should sleep between each step in the play thread. This method is run as a doChangeCode so it can interrupt the possibly sleeping thread and give it a new interval.


getPlaySleep

public long getPlaySleep()
Gets how long we should sleep between each step in the play thread (in milliseconds).


getPlayState

public int getPlayState()
Gets whether or not the current thread is PS_PLAYING, PS_STOPPED, or PS_PAUSED.


getTabPane

public javax.swing.JTabbedPane getTabPane()
Simulations can call this to get access to the tabPane -- to add tabbed panes as they like.


getModelInspector

public Inspector getModelInspector()
Return the model inspector so simulations can do things like updating the properties.


doQuit

public static void doQuit()
Quits the program. Called by the Quit menu option.


doClose

public void doClose()
Closes the Console and shuts down the simulation. Quits the program only if other simulations are not running in the same program. Called when the user clicks on the close button of the Console, or during a program-wide doQuit() process. Can also be called programmatically.


main

public 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.


doAbout

protected void doAbout()

doNew

public void doNew()
Pops up a window allowing the user to enter in a class name to start a new simulation.


doSaveAs

public void doSaveAs()
Lets the user checkpoint out a simulation to a file with a given name.


doSave

public void doSave()
Lets the user checkpoint out a simulation to the last checkpoint filename.


doOpen

public void doOpen()
Reverts the current simulation to the simulation stored at a user-specified checkpoint filename.


getAllFrames

public java.util.ArrayList getAllFrames()
Returns a list of all displays. You own the resulting list and can do what you like with it.

Specified by:
getAllFrames in interface Controller

showAllFrames

public void showAllFrames()
Shows and brings to front all JFrames registered with the Console. Note that this method should probably only be called from within the Swing event thread.


hideAllFrames

public void hideAllFrames()
Hides all JFrames registered with the Console. Note that this method should probably only be called from within the Swing event thread.


setRequiresConfirmationToStop

public void setRequiresConfirmationToStop(boolean val)

getRequiresConfirmationToStop

public boolean getRequiresConfirmationToStop()

setIncrementSeedOnPlay

public void setIncrementSeedOnPlay(boolean val)
Deprecated. renamed to setIncrementSeedOnStop


getIncrementSeedOnPlay

public boolean getIncrementSeedOnPlay()
Deprecated. renamed to getIncrementSeedOnStop


setIncrementSeedOnStop

public void setIncrementSeedOnStop(boolean val)

getIncrementSeedOnStop

public boolean getIncrementSeedOnStop()

pressStop

public void pressStop()
Called when the user presses the stop button. You can call this as well to simulate the same.


pressPause

public void pressPause()
Called when the user presses the pause button. You can call this as well to simulate the same. Keep in mind that pause is a toggle.


getNumStepsPerStepButtonPress

public int getNumStepsPerStepButtonPress()

setNumStepsPerStepButtonPress

public void setNumStepsPerStepButtonPress(int val)
Sets the number of steps per stepp button press. The value must be > 0


pressPlay

public void pressPlay()
Called when the user presses the play button. You can call this as well to simulate the same. Keep in mind that play will change to step if pause is down.


getStepsPerSecond

public double getStepsPerSecond()
Returns the frame rate. If val is <= 0, then the frame rate is presently unknown.


registerFrame

public boolean registerFrame(javax.swing.JFrame frame)
Simulations can call this to add a frame to be listed in the "Display list" of the console

Specified by:
registerFrame in interface Controller

unregisterFrame

public boolean unregisterFrame(javax.swing.JFrame frame)
Simulations can call this to remove a frame from the "Display list" of the console

Specified by:
unregisterFrame in interface Controller

unregisterAllFrames

public boolean unregisterAllFrames()
Simulations can call this to clear out the "Display list" of the console

Specified by:
unregisterAllFrames in interface Controller

doChangeCode

public void doChangeCode(java.lang.Runnable r)
Deprecated. 

Description copied from interface: Controller
This method will interrupt the simulation (pause it), call your runnable, then continue (uninterrupt) the simulation. This allows you to guarantee a way to change the model from a separate thread -- for example, the Swing event thread -- in a synchronous, blocking fashion.

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.

Specified by:
doChangeCode in interface Controller

refresh

public void refresh()
Description copied from interface: Controller
Lazily updates and redraws all the displays and inspectors. Do not call this method from the model thread -- only from the Swing event thread. This is an expensive procedure and should not be done unless necessary. Typically it's done in response to some event (a button press etc.) rather than in the model itself.

Specified by:
refresh in interface Controller

setInspectors

public 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. These bags must match in size, else an exception will be thrown.

Specified by:
setInspectors in interface Controller

registerInspector

public void registerInspector(Inspector inspector,
                              Stoppable stopper)
Registers an inspector to be Stopped if necessary in the future. This automatically happens if you call setInspectors(...).

Specified by:
registerInspector in interface Controller

getAllInspectors

public java.util.ArrayList getAllInspectors()
Returns a list of all current inspectors. Some of these inspectors may be stored in the Console itself, and others may have been dragged out into their own JFrames. You will need to distinguish between these two on your own. Note that some of these inspectors are stored as weak keys in the Console, so holding onto this list will prevent them from getting garbage collected. As a result, you should only use this list for temporary scans.

Specified by:
getAllInspectors in interface Controller

stopAllInspectors

public void stopAllInspectors(boolean killDraggedOutWindowsToo)
Stops all inspectors. If killDraggedOutWindowsToo is true, then the detatched inspectors are stopped as well. Updates all inspectors once as well for good measure prior to stopping some.


removeAllInspectors

public void removeAllInspectors(boolean killDraggedOutWindowsToo)
Stops and removes all inspectors. If killDraggedOutWindowsToo is true, then all inspector windows will be closed; else only the inspectors presently embedded in the console will be stopped and removed.