tenua.gui
Class GraphPanel

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 tenua.gui.GraphPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.TableModelListener

public class GraphPanel
extends javax.swing.JPanel
implements javax.swing.event.TableModelListener, java.beans.PropertyChangeListener

plots a graph based on a DataModel

Author:
wachdh
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.BaselineResizeBehavior
 
Field Summary
static java.lang.String ADJUST_AXES
          key for the boolean to automatically adjust axes to fit the data
static java.lang.String TMAX
          key for the maximum of the time axis property
static java.lang.String TMIN
          key for the minimum of the time axis property
static java.lang.String XMAX
          key for the maximum of the value axis property
static java.lang.String XMIN
          key for the minimum of the value axis property
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, 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
GraphPanel(Tenua parent)
          Creates a new instance of GraphPanel, tied to a model.
 
Method Summary
 boolean getAdjustAxes()
           
 double getTMax()
           
 double getTMin()
           
 double getXMax()
           
 double getXMin()
           
 void optimizeAxes()
          Sets the axes to show all the data.
 void paint(java.awt.Graphics g)
          erases the background, draws the axes and all the curves
 void propertyChange(java.beans.PropertyChangeEvent evt)
           
 void setAdjustAxes(boolean adjustAxes, boolean setProperty)
          determines whether to automatically expand the scale of the axes if the data will not fit.
 void setTMax(double tmax, boolean setProperty)
          set the maximum time displayed
 void setTMin(double tmin, boolean setProperty)
          set the minimum time displayed
 void setXMax(double xmax, boolean setProperty)
          set the maximum x (vertical) scale
 void setXMin(double xmin, boolean setProperty)
          set the minimum x (vertical) scale
 void tableChanged(javax.swing.event.TableModelEvent e)
          repaints the entire graph when the data changes
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, 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, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, 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, 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, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, 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
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TMAX

public static final java.lang.String TMAX
key for the maximum of the time axis property


TMIN

public static final java.lang.String TMIN
key for the minimum of the time axis property


XMAX

public static final java.lang.String XMAX
key for the maximum of the value axis property


XMIN

public static final java.lang.String XMIN
key for the minimum of the value axis property


ADJUST_AXES

public static final java.lang.String ADJUST_AXES
key for the boolean to automatically adjust axes to fit the data

Constructor Detail

GraphPanel

public GraphPanel(Tenua parent)
Creates a new instance of GraphPanel, tied to a model.

Parameters:
model - the DataModel to plot. Plots x vs. time, so what would normally be called the x-axis is here called the t-axis (for time), and what would normally be called the y-axis is here called the x-axis
Method Detail

tableChanged

public void tableChanged(javax.swing.event.TableModelEvent e)
repaints the entire graph when the data changes

Specified by:
tableChanged in interface javax.swing.event.TableModelListener

setTMin

public void setTMin(double tmin,
                    boolean setProperty)
set the minimum time displayed

Parameters:
tmin - the new value
setProperty - true if this function should call firePropertyChanged; false if this is being called from a property change event, so calling firePropertyChanged would be redundant.

setTMax

public void setTMax(double tmax,
                    boolean setProperty)
set the maximum time displayed

Parameters:
tmax - the new value
setProperty - true if this function should call firePropertyChanged; false if this is being called from a property change event, so calling firePropertyChanged would be redundant.

setXMin

public void setXMin(double xmin,
                    boolean setProperty)
set the minimum x (vertical) scale

Parameters:
xmin - the new value
setProperty - true if this function should call firePropertyChanged; false if this is being called from a property change event, so calling firePropertyChanged would be redundant.

setXMax

public void setXMax(double xmax,
                    boolean setProperty)
set the maximum x (vertical) scale

Parameters:
xmax - the new value
setProperty - true if this function should call firePropertyChanged; false if this is being called from a property change event, so calling firePropertyChanged would be redundant.

setAdjustAxes

public void setAdjustAxes(boolean adjustAxes,
                          boolean setProperty)
determines whether to automatically expand the scale of the axes if the data will not fit.

Parameters:
adjustAxes - true to turn on automatic axis adjustment
setProperty - true if this function should call firePropertyChanged; false if this is being called from a property change event, so calling firePropertyChanged would be redundant.

getTMin

public double getTMin()
Returns:
the minimum time displayed

getTMax

public double getTMax()
Returns:
the maximum time displayed

getXMin

public double getXMin()
Returns:
the minimum x (vertical) scale

getXMax

public double getXMax()
Returns:
the maximum x (vertical) scale

getAdjustAxes

public boolean getAdjustAxes()
Returns:
whether the axes are automatically adjusted

paint

public void paint(java.awt.Graphics g)
erases the background, draws the axes and all the curves

Overrides:
paint in class javax.swing.JComponent

optimizeAxes

public void optimizeAxes()
                  throws java.lang.InterruptedException
Sets the axes to show all the data. Adjusts tmin, tmax, xmin and xmax such that all the data are visible, the (0,0) point is visible, and the largest data value is just 10% smaller than the extent of the graph

Throws:
java.lang.InterruptedException

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)
Specified by:
propertyChange in interface java.beans.PropertyChangeListener