## mars.tools
Class DigitalLabSim

    java.lang.Object
      java.awt.Component
          java.awt.Container
              java.awt.Window
                  java.awt.Frame
                      javax.swing.JFrame
                          mars.tools.AbstractMarsToolAndApplication
                              mars.tools.DigitalLabSim

All Implemented Interfaces:
  ImageObserver, MenuContainer, Serializable, Observer, Accessible, RootPaneContainer, WindowConstants, MarsTool

    public class DigitalLabSim

extends AbstractMarsToolAndApplication

See Also:
  Serialized Form

Nested Class Summary
`class` `DigitalLabSim.HexaKeyboard`
`class` `DigitalLabSim.OneSecondCounter`
`class` `DigitalLabSim.SevenSegmentDisplay`
`class` `DigitalLabSim.SevenSegmentPanel`

Nested classes/interfaces inherited from class mars.tools.AbstractMarsToolAndApplication
`AbstractMarsToolAndApplication.ConnectButton, AbstractMarsToolAndApplication.EnterKeyListener`

Nested classes/interfaces inherited from class javax.swing.JFrame
`JFrame.AccessibleJFrame`

Nested classes/interfaces inherited from class java.awt.Frame
`Frame.AccessibleAWTFrame`

Nested classes/interfaces inherited from class java.awt.Window
`Window.AccessibleAWTWindow`

Nested classes/interfaces inherited from class java.awt.Container
`Container.AccessibleAWTContainer`

Nested classes/interfaces inherited from class java.awt.Component
`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

Field Summary
`static int` `EXTERNAL_INTERRUPT_HEXA_KEYBOARD`
`static int` `EXTERNAL_INTERRUPT_TIMER`

Fields inherited from class mars.tools.AbstractMarsToolAndApplication
`connectButton, isBeingUsedAsAMarsTool, theWindow, thisMarsApp`

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
`DigitalLabSim()`
`DigitalLabSim(String title, String heading)`

Method Summary
`protected void` `addAsObserver()` Add this app/tool as an Observer of desired MIPS Observables (memory and registers).
`protected JComponent` `buildMainDisplayArea()` Abstract method that must be instantiated by subclass to build the main display area of the GUI.
`protected JComponent` `getHelpComponent()` Override this method to provide a JComponent (probably a JButton) of your choice to be placed just left of the Close/Exit button.
`String` `getName()` Required MarsTool method to return Tool name.
`static void` `main(String[] args)`
`protected void` `reset()` Method that will be called each time the default Reset button is clicked.
`void` `update(Observable ressource, Object accessNotice)` Called when receiving notice of access to MIPS memory or registers.
`void` `updateHexaKeyboard(char row)`
`void` `updateOneSecondCounter(char value)`
`void` `updateSevenSegment(int number, char value)`

Methods inherited from class mars.tools.AbstractMarsToolAndApplication
`action, addAsObserver, addAsObserver, buildButtonAreaMarsTool, buildButtonAreaStandAlone, buildHeadingArea, deleteAsObserver, deleteAsObserver, go, initializePostGUI, initializePreGUI, isObserving, performSpecialClosingDuties, processMIPSUpdate, updateDisplay`

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

### EXTERNAL_INTERRUPT_TIMER

    public static final int EXTERNAL_INTERRUPT_TIMER

See Also:
  Constant Field Values

### EXTERNAL_INTERRUPT_HEXA_KEYBOARD

    public static final int EXTERNAL_INTERRUPT_HEXA_KEYBOARD

See Also:
  Constant Field Values

Constructor Detail

### DigitalLabSim

    public DigitalLabSim(String title,
                         String heading)

### DigitalLabSim

    public DigitalLabSim()

Method Detail

### main

    public static void main(String[] args)

### getName

    public String getName()

  Description copied from class: `AbstractMarsToolAndApplication`
  Required MarsTool method to return Tool name. Must be defined by subclass.

  Specified by:
    `getName` in interface `MarsTool`
  Specified by:
    `getName` in class `AbstractMarsToolAndApplication`
  Returns:
    Tool name. MARS will display this in menu item.

### addAsObserver

    protected void addAsObserver()

  Description copied from class: `AbstractMarsToolAndApplication`
  Add this app/tool as an Observer of desired MIPS Observables (memory and registers). By default, will add as an Observer of the entire Data Segment in memory. Override if you want something different. Note that the Memory methods to add an Observer to memory are flexible (you can register for a range of addresses) but may throw an AddressErrorException that you need to catch. This method is called whenever the default "Connect" button on a MarsTool or the default "Assemble and run" on a stand-alone Mars app is selected. The corresponding NOTE: if you do not want to register as an Observer of the entire data segment (starts at address 0x10000000) then override this to either do some alternative or nothing at all. This method is also overloaded to allow arbitrary memory subrange.

  Overrides:
    `addAsObserver` in class `AbstractMarsToolAndApplication`

### update

    public void update(Observable ressource,
                       Object accessNotice)

  Description copied from class: `AbstractMarsToolAndApplication`
  Called when receiving notice of access to MIPS memory or registers. Default implementation of method required by Observer interface. This method will filter out notices originating from the MARS GUI or from direct user editing of memory or register displays. Only notices arising from MIPS program access are allowed in. It then calls two methods to be overridden by the subclass (since they do nothing by default): processMIPSUpdate() then updateDisplay().

  Specified by:
    `update` in interface `Observer`
  Overrides:
    `update` in class `AbstractMarsToolAndApplication`
  Parameters:
    `ressource` - the attached MIPS resource
    `accessNotice` - AccessNotice information provided by the resource

### reset

    protected void reset()

  Description copied from class: `AbstractMarsToolAndApplication`
  Method that will be called each time the default Reset button is clicked. Use it to reset any data structures and/or GUI components. By default it does nothing.

  Overrides:
    `reset` in class `AbstractMarsToolAndApplication`

### buildMainDisplayArea

    protected JComponent buildMainDisplayArea()

  Description copied from class: `AbstractMarsToolAndApplication`
  Abstract method that must be instantiated by subclass to build the main display area of the GUI. It will be placed in the CENTER area of a BorderLayout. The title is in the NORTH area, and the controls are in the SOUTH area.

  Specified by:
    `buildMainDisplayArea` in class `AbstractMarsToolAndApplication`

### getHelpComponent

    protected JComponent getHelpComponent()

  Description copied from class: `AbstractMarsToolAndApplication`
  Override this method to provide a JComponent (probably a JButton) of your choice to be placed just left of the Close/Exit button. Its anticipated use is for a "help" button that launches a help message or dialog. But it can be any valid JComponent that doesn't mind co-existing among a bunch of JButtons.

  Overrides:
    `getHelpComponent` in class `AbstractMarsToolAndApplication`

### updateSevenSegment

    public void updateSevenSegment(int number,
                                   char value)

### updateHexaKeyboard

    public void updateHexaKeyboard(char row)

### updateOneSecondCounter

    public void updateOneSecondCounter(char value)