## mars.venus
Class TextSegmentWindow

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  javax.swing.JInternalFrame
                      mars.venus.TextSegmentWindow

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

    public class TextSegmentWindow

extends JInternalFrame
implements Observer

Creates the Text Segment window in the Execute tab of the UI

Author:
  Team JSpim
See Also:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from class javax.swing.JInternalFrame
`JInternalFrame.AccessibleJInternalFrame, JInternalFrame.JDesktopIcon`

Nested classes/interfaces inherited from class javax.swing.JComponent
`JComponent.AccessibleJComponent`

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

Fields inherited from class javax.swing.JInternalFrame
`closable, CONTENT_PANE_PROPERTY, desktopIcon, FRAME_ICON_PROPERTY, frameIcon, GLASS_PANE_PROPERTY, iconable, IS_CLOSED_PROPERTY, IS_ICON_PROPERTY, IS_MAXIMUM_PROPERTY, IS_SELECTED_PROPERTY, isClosed, isIcon, isMaximum, isSelected, LAYERED_PANE_PROPERTY, maximizable, MENU_BAR_PROPERTY, resizable, ROOT_PANE_PROPERTY, rootPane, rootPaneCheckingEnabled, title, TITLE_PROPERTY`

Fields inherited from class javax.swing.JComponent
`accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

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, EXIT_ON_CLOSE, HIDE_ON_CLOSE`

Fields inherited from interface java.awt.image.ImageObserver
`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

Constructor Summary
`TextSegmentWindow()` Constructor, sets up a new JInternalFrame.

Method Summary
`void` `addProgramArgumentsPanel()`
`void` `clearAllBreakpoints()` Clears all breakpoints that have been set since last assemble, and updates the display of the breakpoint column.
`void` `clearWindow()` remove all components
`int` `getBreakpointCount()` Returns number of breakpoints currently set.
`boolean` `getCodeHighlighting()` Get code highlighting status.
`String` `getProgramArguments()` Get program arguments from text field in south border of text segment window.
`int[]` `getSortedBreakPointsArray()` Returns array of current breakpoints, each represented by a MIPS program counter address.
`void` `highlightStepAtAddress(int address)` Highlights the source code line whose address matches the given text segment address.
`void` `highlightStepAtAddress(int address, boolean inDelaySlot)` Highlights the source code line whose address matches the given text segment address.
`void` `highlightStepAtPC()` Highlights the source code line whose address matches the current program counter value.
`void` `highlightStepAtPC(boolean inDelaySlot)` Highlights the source code line whose address matches the current program counter value.
`void` `registerTableModelListener(TableModelListener tml)` Assign listener to Table model.
`void` `removeProgramArgumentsPanel()`
`void` `setCodeHighlighting(boolean highlightSetting)` Used to enable or disable source code highlighting.
`void` `setupTable()` Method to be called once the user compiles the program.
`void` `toggleBreakpoints()` Enable or disable all items in the Breakpoints column.
`void` `unhighlightAllSteps()` If any steps are highlighted, this erases the highlighting.
`void` `update(Observable observable, Object obj)` Required by Observer interface.
`void` `updateBasicStatements()` Redisplay the basic statements.
`void` `updateCodeAddresses()` Redisplay the addresses.

Methods inherited from class javax.swing.JInternalFrame

`addImpl, addInternalFrameListener, createRootPane, dispose, doDefaultCloseAction, fireInternalFrameEvent, getAccessibleContext, getContentPane, getDefaultCloseOperation, getDesktopIcon, getDesktopPane, getFocusCycleRootAncestor, getFocusOwner, getFrameIcon, getGlassPane, getInternalFrameListeners, getJMenuBar, getLastCursor, getLayer, getLayeredPane, getMenuBar, getMostRecentFocusOwner, getNormalBounds, getRootPane, getTitle, getUI, getUIClassID, getWarningString, hide, isClosable, isClosed, isFocusCycleRoot, isIcon, isIconifiable, isMaximizable, isMaximum, isResizable, isRootPaneCheckingEnabled, isSelected, moveToBack, moveToFront, pack, paintComponent, paramString, remove, removeInternalFrameListener, reshape, restoreSubcomponentFocus, setClosable, setClosed, setContentPane, setCursor, setDefaultCloseOperation, setDesktopIcon, setFocusCycleRoot, setFrameIcon, setGlassPane, setIcon, setIconifiable, setJMenuBar, setLayer, setLayer, setLayeredPane, setLayout, setMaximizable, setMaximum, setMenuBar, setNormalBounds, setResizable, setRootPane, setRootPaneCheckingEnabled, setSelected, setTitle, setUI, show, toBack, toFront, updateUI`

Methods inherited from class javax.swing.JComponent

`addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

Methods inherited from class java.awt.Container

`add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, size, toString, transferFocus, transferFocusUpCycle`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### TextSegmentWindow

    public TextSegmentWindow()

  Constructor, sets up a new JInternalFrame.

Method Detail

### setupTable

    public void setupTable()

  Method to be called once the user compiles the program. Should convert the lines of code over to the table rows and columns.

### getProgramArguments

    public String getProgramArguments()

  Get program arguments from text field in south border of text segment window.

  Returns:
    String containing program arguments

### addProgramArgumentsPanel

    public void addProgramArgumentsPanel()

### removeProgramArgumentsPanel

    public void removeProgramArgumentsPanel()

### clearWindow

    public void clearWindow()

  remove all components

### registerTableModelListener

    public void registerTableModelListener(TableModelListener tml)

  Assign listener to Table model. Used for breakpoints, since that is the only editable column in the table. Since table model objects are transient (get a new one with each successful assemble), this method will simply keep the identity of the listener then add it as a listener each time a new table model object is created. Limit 1 listener.

### updateCodeAddresses

    public void updateCodeAddresses()

  Redisplay the addresses. This should only be done when address display base is modified (e.g. between base 16 hex and base 10 dec).

### updateBasicStatements

    public void updateBasicStatements()

  Redisplay the basic statements. This should only be done when address or value display base is modified (e.g. between base 16 hex and base 10 dec).

### update

    public void update(Observable observable,
                       Object obj)

  Required by Observer interface. Called when notified by an Observable that we are registered with. The Observable here is a delegate of the Memory object, which lets us know of memory operations. More precisely, memory operations only in the text segment, since that is the only range of addresses we're registered for. And we're only interested in write operations.

  Specified by:
    `update` in interface `Observer`
  Parameters:
    `observable` - The Observable object who is notifying us
    `obj` - Auxiliary object with additional information.

### getBreakpointCount

    public int getBreakpointCount()

  Returns number of breakpoints currently set.

  Returns:
    number of current breakpoints

### getSortedBreakPointsArray

    public int[] getSortedBreakPointsArray()

  Returns array of current breakpoints, each represented by a MIPS program counter address. These are stored in the BREAK_COLUMN of the table model.

  Returns:
    int array of breakpoints, sorted by PC address, or null if there are none.

### clearAllBreakpoints

    public void clearAllBreakpoints()

  Clears all breakpoints that have been set since last assemble, and updates the display of the breakpoint column.

### highlightStepAtPC

    public void highlightStepAtPC()

  Highlights the source code line whose address matches the current program counter value. This is used for stepping through code execution and when reaching breakpoints.

### highlightStepAtPC

    public void highlightStepAtPC(boolean inDelaySlot)

  Highlights the source code line whose address matches the current program counter value. This is used for stepping through code execution and when reaching breakpoints.

  Parameters:
    `inDelaySlot` - Set true if delayed branching is enabled and the instruction at this address is executing in the delay slot, false otherwise.

### highlightStepAtAddress

    public void highlightStepAtAddress(int address)

  Highlights the source code line whose address matches the given text segment address.

  Parameters:
    `address` - text segment address of instruction to be highlighted.

### highlightStepAtAddress

    public void highlightStepAtAddress(int address,
                                       boolean inDelaySlot)

  Highlights the source code line whose address matches the given text segment address.

  Parameters:
    `address` - Text segment address of instruction to be highlighted.
    `inDelaySlot` - Set true if delayed branching is enabled and the instruction at this address is executing in the delay slot, false otherwise.

### setCodeHighlighting

    public void setCodeHighlighting(boolean highlightSetting)

  Used to enable or disable source code highlighting. If true (normally while stepping through execution) then MIPS statement at current program counter is highlighted. The code column's cell renderer tests this variable.

  Parameters:
    `highlightSetting` - true to enable highlighting, false to disable.

### getCodeHighlighting

    public boolean getCodeHighlighting()

  Get code highlighting status.

  Returns:
    true if code highlighting currently enabled, false otherwise.

### unhighlightAllSteps

    public void unhighlightAllSteps()

  If any steps are highlighted, this erases the highlighting.

### toggleBreakpoints

    public void toggleBreakpoints()

  Enable or disable all items in the Breakpoints column.