edu.cornell.cs.sam.ui
Class SamGUI

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 edu.cornell.cs.sam.ui.SamGUI
All Implemented Interfaces:
Video, SamUI.Component, SamThread.ThreadParent, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class SamGUI
extends javax.swing.JFrame
implements Video, SamUI.Component, SamThread.ThreadParent

Provides a GUI for the SaM Simulator that can run SaM programs and capture their state after each instruction execution for later review. To start, call one of the SamGUI.startUI calls.

See Also:
Serialized Form

Nested Class Summary
static class SamGUI.BreakpointList
          Stores breakpoints and provides convenience functions We currently use a hashtable for fast access with key=PC of break and value=Boolean(true)
 class SamGUI.RunThread
          Allows a GUI to run a program with breakpoints and with the ability to stop execution at any time
 
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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
static int classID
           
 
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
protected SamGUI(Sys sys)
          Creates a new SamGUI with an existing system Use start() to actually show the window Use loadFile() to load a file at startup
 
Method Summary
 javax.swing.JPanel buildButtonPanel()
           
 javax.swing.JPanel buildConsolePanel()
           
 javax.swing.JPanel buildProgramCodePanel()
           
 boolean close()
          Destroys the window, system, and any dialogs
 SamAboutDialog getAboutDialog()
          Returns the aboutDialog for this program
 void loadFile(java.io.File samFile)
          Loads the provided file
 void loadProgram(Program prog, java.lang.String filename)
          Loads the provided program
 char readChar()
          Request character input from the video implementation
 float readFloat()
          Request floating point input from the video implementation
 int readInt()
          Requests integer input from the video implementation
 java.lang.String readString()
          Request String input from the video implementation
 void save(java.io.File samFile)
          Saves the provided file
protected  void start()
          Makes the window visible
static void startUI()
          Starts SamGUI without a file loaded
static void startUI(Program prog, java.lang.String filename, Sys sys)
          Starts SamGUI with the provided program/filename/system
static void startUI(java.lang.String filename)
          Starts SamGUI and loads the provided file
 void threadEvent(int code, java.lang.Object o)
          Called when a thread event has occurred
 void writeChar(char c)
          Writes character output to the video implementation
 void writeFloat(float f)
          Writes floating point output to the video implementation
 void writeInt(int i)
          Writes integer output to the video implementation
 void writeString(java.lang.String str)
          Writes string output to the video implementation
 
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, setIconImage, 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, 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, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, 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, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, 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, 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, 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, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, 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

classID

public static int classID
Constructor Detail

SamGUI

protected SamGUI(Sys sys)
Creates a new SamGUI with an existing system Use start() to actually show the window Use loadFile() to load a file at startup

Parameters:
sys - The system to use
Method Detail

buildProgramCodePanel

public javax.swing.JPanel buildProgramCodePanel()

buildConsolePanel

public javax.swing.JPanel buildConsolePanel()

buildButtonPanel

public javax.swing.JPanel buildButtonPanel()

close

public boolean close()
Destroys the window, system, and any dialogs

Specified by:
close in interface SamUI.Component

start

protected void start()
Makes the window visible


loadFile

public void loadFile(java.io.File samFile)
Loads the provided file

Parameters:
samFile - The file to load

loadProgram

public void loadProgram(Program prog,
                        java.lang.String filename)
Loads the provided program

Parameters:
prog - the program to load
filename - the name of the file being loaded

save

public void save(java.io.File samFile)
Saves the provided file

Parameters:
samFile - The file to save to

threadEvent

public void threadEvent(int code,
                        java.lang.Object o)
Description copied from interface: SamThread.ThreadParent
Called when a thread event has occurred

Specified by:
threadEvent in interface SamThread.ThreadParent
Parameters:
code - The integer code representing the event
o - An optional Object to store event data

writeString

public void writeString(java.lang.String str)
Description copied from interface: Video
Writes string output to the video implementation

Specified by:
writeString in interface Video
Parameters:
str - The string to be written

writeInt

public void writeInt(int i)
Description copied from interface: Video
Writes integer output to the video implementation

Specified by:
writeInt in interface Video
Parameters:
i - The integer to be written

writeChar

public void writeChar(char c)
Description copied from interface: Video
Writes character output to the video implementation

Specified by:
writeChar in interface Video
Parameters:
c - The character to be written

writeFloat

public void writeFloat(float f)
Description copied from interface: Video
Writes floating point output to the video implementation

Specified by:
writeFloat in interface Video
Parameters:
f - The float to be written

readString

public java.lang.String readString()
Description copied from interface: Video
Request String input from the video implementation

Specified by:
readString in interface Video
Returns:
The String received

readInt

public int readInt()
Description copied from interface: Video
Requests integer input from the video implementation

Specified by:
readInt in interface Video
Returns:
The integer received

readFloat

public float readFloat()
Description copied from interface: Video
Request floating point input from the video implementation

Specified by:
readFloat in interface Video
Returns:
The floating point number received

readChar

public char readChar()
Description copied from interface: Video
Request character input from the video implementation

Specified by:
readChar in interface Video
Returns:
The character received

getAboutDialog

public SamAboutDialog getAboutDialog()
Returns the aboutDialog for this program

Specified by:
getAboutDialog in interface SamUI.Component

startUI

public static void startUI()
Starts SamGUI without a file loaded


startUI

public static void startUI(java.lang.String filename)
Starts SamGUI and loads the provided file

Parameters:
filename - loads this file if it is not null

startUI

public static void startUI(Program prog,
                           java.lang.String filename,
                           Sys sys)
Starts SamGUI with the provided program/filename/system

Parameters:
prog - The program to load
filename - The filename to associates with the program
sys - The system to use