edu.princeton.toy
Class TSimStdout2Pane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by edu.princeton.toy.TSimStdout2Pane
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

public class TSimStdout2Pane
extends JPanel
implements Scrollable

TSimStdout2Pane is a variant of TSimStdoutPane which displays its data in the form of a set of punchcards.

See Also:
Serialized Form

Nested Class Summary
protected  class TSimStdout2Pane.Listener
          The Listener of a TBaseConverterPane pays attention to the changes in the PTextFields, and fires off changes to the other PTextFields.
protected  class TSimStdout2Pane.Runner
          Runner is a simple implementation of Runnable for the Thread started when the component's size changes.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
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
static int MAX_SCALE
          The maxmimum scale which the TSimStdout2Pane can be scaled to.
static int MIN_SCALE
          The minimum scale which the TSimStdout2Pane can be scaled to.
static int PREFERRED_SCALE
          The scale used in determining the preferred size of the TSimStdout2Pane.
static String RESCALE_COMMAND
          The command to update the contents of the inputList with the stdin stream of the virtualMachine.
static String UPDATE_COMMAND
          The command to update the contents of the inputList with the stdin stream of the virtualMachine.
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
TSimStdout2Pane(TVirtualMachine virtualMachine)
          Creates a new TSimStdout2Pane.
 
Method Summary
 boolean doCommand(String command, Object extraInfo)
          Performs a command based on the argument.
 Dimension getPreferredScrollableViewportSize()
          Implement scrollable to make the viewport's preferred size that of the page size at the PREFERRED_SCALE.
 int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
          Implement scrollable to make the block increment a full page.
 boolean getScrollableTracksViewportHeight()
          Implement scrollable to make the InternalTextArea's height always equal to that of it's viewport's.
 boolean getScrollableTracksViewportWidth()
          Implement scrollable to make the InternalTextArea's size the greater of its own size and its viewport's size.
 int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
          Implement scrollable to make the unit increment a tenth of a page.
 TVirtualMachine getVirtualMachine()
          Returns the virtualMachine attached to this TSimStdout2Pane.
 void paintComponent(Graphics g)
          Override paintComponent() to make this TSimStdout2Pane actually paint the memory information.
protected  void processComponentEvent(ComponentEvent e)
          Intercept ComponentEvents to do resize and move the memPanel when this component is resized.
protected  void processHierarchyBoundsEvent(HierarchyEvent e)
          Intercept HierarchyEvents to do resize and move the detailPanel when this component is resized.
protected  void processMouseEvent(MouseEvent e)
          Process MouseEvents to mark the beginning of a mouse dragging session and to catch the mouse leaving.
protected  void processMouseMotionEvent(MouseEvent e)
          Process MouseEvents to scroll the pane when the mouse is dragged and get the selectedIndex of the component.
 void scrollToFrontier()
          Ensures that the cell representing the word at the frontier of the stdout list is visible.
 void setVirtualMachine(TVirtualMachine virtualMachine)
          Sets the virtualMachine attached to this TSimStdout2Pane.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, 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, getRootPane, 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, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, 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, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, getFocusCycleRootAncestor, 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, hide, 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, processFocusEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

RESCALE_COMMAND

public static final String RESCALE_COMMAND
The command to update the contents of the inputList with the stdin stream of the virtualMachine.


UPDATE_COMMAND

public static final String UPDATE_COMMAND
The command to update the contents of the inputList with the stdin stream of the virtualMachine.


MIN_SCALE

public static final int MIN_SCALE
The minimum scale which the TSimStdout2Pane can be scaled to.

See Also:
Constant Field Values

MAX_SCALE

public static final int MAX_SCALE
The maxmimum scale which the TSimStdout2Pane can be scaled to.


PREFERRED_SCALE

public static final int PREFERRED_SCALE
The scale used in determining the preferred size of the TSimStdout2Pane.

See Also:
Constant Field Values
Constructor Detail

TSimStdout2Pane

public TSimStdout2Pane(TVirtualMachine virtualMachine)
Creates a new TSimStdout2Pane.

Method Detail

setVirtualMachine

public void setVirtualMachine(TVirtualMachine virtualMachine)
Sets the virtualMachine attached to this TSimStdout2Pane.

Parameters:
virtualMachine - The virtualMachine to be attached to this TSimStdout2Pane.

getVirtualMachine

public TVirtualMachine getVirtualMachine()
Returns the virtualMachine attached to this TSimStdout2Pane.

Returns:
The virtualMachine attached to this TSimStdout2Pane.

doCommand

public boolean doCommand(String command,
                         Object extraInfo)
Performs a command based on the argument.

Parameters:
command - A string representing the command. Note that pointer equality (not string equality) is tested here, so it is important to use the string constants defined in this class. An IllegalArgumentException will be thrown if the argument is invalid.
Returns:
True iff the command was executed sucessfully.

paintComponent

public void paintComponent(Graphics g)
Override paintComponent() to make this TSimStdout2Pane actually paint the memory information.

Overrides:
paintComponent in class JComponent

processHierarchyBoundsEvent

protected void processHierarchyBoundsEvent(HierarchyEvent e)
Intercept HierarchyEvents to do resize and move the detailPanel when this component is resized.

Overrides:
processHierarchyBoundsEvent in class Component

processComponentEvent

protected void processComponentEvent(ComponentEvent e)
Intercept ComponentEvents to do resize and move the memPanel when this component is resized.

Overrides:
processComponentEvent in class Component

processMouseEvent

protected void processMouseEvent(MouseEvent e)
Process MouseEvents to mark the beginning of a mouse dragging session and to catch the mouse leaving.

Overrides:
processMouseEvent in class JComponent

processMouseMotionEvent

protected void processMouseMotionEvent(MouseEvent e)
Process MouseEvents to scroll the pane when the mouse is dragged and get the selectedIndex of the component.

Overrides:
processMouseMotionEvent in class JComponent

scrollToFrontier

public void scrollToFrontier()
Ensures that the cell representing the word at the frontier of the stdout list is visible.


getPreferredScrollableViewportSize

public Dimension getPreferredScrollableViewportSize()
Implement scrollable to make the viewport's preferred size that of the page size at the PREFERRED_SCALE.

Specified by:
getPreferredScrollableViewportSize in interface Scrollable

getScrollableUnitIncrement

public int getScrollableUnitIncrement(Rectangle visibleRect,
                                      int orientation,
                                      int direction)
Implement scrollable to make the unit increment a tenth of a page.

Specified by:
getScrollableUnitIncrement in interface Scrollable

getScrollableBlockIncrement

public int getScrollableBlockIncrement(Rectangle visibleRect,
                                       int orientation,
                                       int direction)
Implement scrollable to make the block increment a full page.

Specified by:
getScrollableBlockIncrement in interface Scrollable

getScrollableTracksViewportWidth

public boolean getScrollableTracksViewportWidth()
Implement scrollable to make the InternalTextArea's size the greater of its own size and its viewport's size.

Specified by:
getScrollableTracksViewportWidth in interface Scrollable

getScrollableTracksViewportHeight

public boolean getScrollableTracksViewportHeight()
Implement scrollable to make the InternalTextArea's height always equal to that of it's viewport's.

Specified by:
getScrollableTracksViewportHeight in interface Scrollable