avrora.gui
Class GraphEvents

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byavrora.gui.GraphEvents
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.AdjustmentListener, javax.swing.event.ChangeListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class GraphEvents
extends javax.swing.JPanel
implements javax.swing.event.ChangeListener, java.awt.event.AdjustmentListener

This is a generic helper class for visual monitors. It's purpose is to help graph events that occur in the simulator (constant this with GraphNumbers , which graph data values as time goes by. For each event that occurs, a colored dot will appear. The x-axis maps time gone by.

Events must be inserted into this class in temporal order

This class is not yet done. It needs to be more generic - right now it's hacked to specifically allow LED output to be graphed.

See Also:
Serialized Form

Nested Class Summary
 class GraphEvents.MyVector
          We don't want to store millions of Integer, but we still want an array that grows...so we define a MyVector class just for that
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 javax.swing.JScrollBar horzBar
          This is the bar that determines what part of the graph is displayed
 double stepsize
          number of pixels per x-axis value
 javax.swing.SpinnerNumberModel stepsizeVisual
          The visual component for setting stepsize
 
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
GraphEvents(int pminvalue, int pmaxvalue, double pstepsize)
           
 
Method Summary
 void addToVector(int vecnum, int anAddress)
          A monitor can add data using this function On next repaint, it will be added to the graph
 void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
          If the scroll bar was adjusted, we should repaint.
 javax.swing.JPanel chalkboardAndBar()
          Returns a panel which can be displayed that contains the graph numbers panel and a horz scrollbar at the bottom that makes changes viewing area easy
 int getHorzBarValue()
          used by paint so it knows what value to start painting with
 javax.swing.JPanel getOptionsPanel()
          This function creates the actual options panel that can be displayed.
 double getStepSize()
           
 boolean internalUpdate()
          This function is called by paint and it does what is necessary to update the privateNumbers vector
 void paint(java.awt.Graphics g)
          This actually paints the graph...note that it repaints the whole graph everytime its called (to improve performance, we could make use of an update function) The code here is actually faily ugly but eh..
 void setParentPanel(javax.swing.JPanel pparentPanel)
          Used in order to size thing correctly.
 void setStepSize(double pstepsize)
           
 void stateChanged(javax.swing.event.ChangeEvent e)
          this function processes the monitor options and re-sets the internal variables appropiatly
 void updateHorzBar()
          This function updates the scroll bar as new numbers are added to the vector or if we decided to jump to a certian value if the paramter is true, it will set the scroll bar to be the new max value...otherwise it just keeps value to whatver it used to be Synchronized because GUI thread and paintthread will access the horz bar
 javax.swing.JPanel visualSetStepSize()
          This creates a visual object that the user can interact with to set step size
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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

horzBar

public javax.swing.JScrollBar horzBar
This is the bar that determines what part of the graph is displayed


stepsize

public double stepsize
number of pixels per x-axis value


stepsizeVisual

public javax.swing.SpinnerNumberModel stepsizeVisual
The visual component for setting stepsize

Constructor Detail

GraphEvents

public GraphEvents(int pminvalue,
                   int pmaxvalue,
                   double pstepsize)
Method Detail

chalkboardAndBar

public javax.swing.JPanel chalkboardAndBar()
Returns a panel which can be displayed that contains the graph numbers panel and a horz scrollbar at the bottom that makes changes viewing area easy

Returns:
What you should directly display to the screen

updateHorzBar

public void updateHorzBar()
This function updates the scroll bar as new numbers are added to the vector or if we decided to jump to a certian value if the paramter is true, it will set the scroll bar to be the new max value...otherwise it just keeps value to whatver it used to be Synchronized because GUI thread and paintthread will access the horz bar


getHorzBarValue

public int getHorzBarValue()
used by paint so it knows what value to start painting with


getStepSize

public double getStepSize()
Returns:
stepsize value

setStepSize

public void setStepSize(double pstepsize)
Parameters:
pstepsize - The value that step size should be set to

visualSetStepSize

public javax.swing.JPanel visualSetStepSize()
This creates a visual object that the user can interact with to set step size

Returns:
A panel that contains a spinner for setting step size

getOptionsPanel

public javax.swing.JPanel getOptionsPanel()
This function creates the actual options panel that can be displayed. This allows the user to set monitor options

Returns:
A panel (can be directly displayed) of all monitor options

setParentPanel

public void setParentPanel(javax.swing.JPanel pparentPanel)
Used in order to size thing correctly. Should be called right after the constructor is called


addToVector

public void addToVector(int vecnum,
                        int anAddress)
A monitor can add data using this function On next repaint, it will be added to the graph

Parameters:
vecnum - an index that specified "which" event occured
anAddress - the time that the event occured

internalUpdate

public boolean internalUpdate()
This function is called by paint and it does what is necessary to update the privateNumbers vector

Returns:
true if it actually got some numbers, otherwise returns false

paint

public void paint(java.awt.Graphics g)
This actually paints the graph...note that it repaints the whole graph everytime its called (to improve performance, we could make use of an update function) The code here is actually faily ugly but eh..


stateChanged

public void stateChanged(javax.swing.event.ChangeEvent e)
this function processes the monitor options and re-sets the internal variables appropiatly

Specified by:
stateChanged in interface javax.swing.event.ChangeListener
Parameters:
e - Information about what event occured

adjustmentValueChanged

public void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
If the scroll bar was adjusted, we should repaint. This method takes care of that

Specified by:
adjustmentValueChanged in interface java.awt.event.AdjustmentListener