sim.util.media.chart
Class ChartGenerator

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 sim.util.media.chart.ChartGenerator
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
Direct Known Subclasses:
HistogramGenerator, TimeSeriesChartGenerator

public abstract class ChartGenerator
extends javax.swing.JPanel

ChartGenerator is a JPanel which displays a chart using the JFreeChart library. The class is abstract: you'll need to use a concrete subclass to build a specific kind of chart. The facility allows multiple time series to be displayed at one time, to be exported to PDF, and to be dynamically added and removed.

Subclasses need to override at least four methods: getSeriesDataset(), update(), removeSeries(index), and buildChart(). Note that ChartGenerator has no standard API for adding a series to the chart, nor any standard way to modify this series once it has been added. This is because JFreeChart has non-standard, non-consistent APIs for different kinds of charts. You will need to implement these on a per-chart basis as you see fit.

ChartGenerator displays three regions:

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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
protected  JFreeChart chart
          The chart
protected  javax.swing.JScrollPane chartHolder
          The JScrollPane which holdw the ChartPanel
protected  ChartPanel chartPanel
          The panel which holds and draws the chart
protected  javax.swing.JFrame frame
          The JFrame which stores the whole chart.
protected  javax.swing.Box globalAttributes
          A holder for global attributes components
protected  javax.swing.Box seriesAttributes
          A holder for series attributes components
protected  javax.swing.JTextField titleField
          The global attributes chart title field.
protected  javax.swing.JTextField xLabel
          The global attributes domain axis field.
protected  javax.swing.JTextField yLabel
          The global attributes range axis field.
 
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
ChartGenerator()
          Generates a new ChartGenerator with a blank chart.
 
Method Summary
 void addGlobalAttribute(java.awt.Component component)
          Adds a global attribute panel to the frame
protected abstract  void buildChart()
          Override this to construct the appropriate kind of chart.
 javax.swing.JFrame createFrame(GUIState state)
          Returns a JFrame suitable or housing the ChartGenerator.
 ChartPanel getChartPanel()
          Returns the ChartPanel holding the chart.
 java.lang.String getDomainAxisLabel()
          Returns the name of the Domain Axis label -- usually this is the X axis.
 java.awt.Component getGlobalAttribute(int index)
          Returns the global attribute panel of the given index.
 int getGlobalAttributeCount()
          Returns the number of global attribute panels.
 java.lang.String getRangeAxisLabel()
          Returns the name of the Range Axis Label -- usually this is the Y axis.
abstract  AbstractSeriesDataset getSeriesDataset()
          Override this to return the JFreeChart data set used by your Chart.
 java.lang.String getTitle()
          Returns the title of the chart
 void quit()
          Prepares the chart to be garbage collected.
 void removeAllSeries()
          Deletes all series from the chart.
 java.awt.Component removeGlobalAttribute(int index)
          Remooves the global attribute at the given index and returns it.
abstract  void removeSeries(int index)
          Override this to remove a series from the chart.
 void setDomainAxisLabel(java.lang.String val)
          Sets the name of the Domain Axis label -- usually this is the X axis.
 void setRangeAxisLabel(java.lang.String val)
          Sets the name of the Range Axis label -- usually this is the Y axis.
 void setTitle(java.lang.String title)
          Sets the title of the chart (and the window frame).
abstract  void update()
          Override this to update the chart to reflect new data.
 
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, 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, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, 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, 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, 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, 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

globalAttributes

protected javax.swing.Box globalAttributes
A holder for global attributes components


seriesAttributes

protected javax.swing.Box seriesAttributes
A holder for series attributes components


chart

protected JFreeChart chart
The chart


chartPanel

protected ChartPanel chartPanel
The panel which holds and draws the chart


chartHolder

protected javax.swing.JScrollPane chartHolder
The JScrollPane which holdw the ChartPanel


frame

protected javax.swing.JFrame frame
The JFrame which stores the whole chart. Set in createFrame(), else null.


titleField

protected javax.swing.JTextField titleField
The global attributes chart title field.


xLabel

protected javax.swing.JTextField xLabel
The global attributes domain axis field.


yLabel

protected javax.swing.JTextField yLabel
The global attributes range axis field.

Constructor Detail

ChartGenerator

public ChartGenerator()
Generates a new ChartGenerator with a blank chart. Before anything else, buildChart() is called.

Method Detail

getSeriesDataset

public abstract AbstractSeriesDataset getSeriesDataset()
Override this to return the JFreeChart data set used by your Chart. For example, time series charts might return the XYSeriesCollection.


update

public abstract void update()
Override this to update the chart to reflect new data.


removeSeries

public abstract void removeSeries(int index)
Override this to remove a series from the chart.


buildChart

protected abstract void buildChart()
Override this to construct the appropriate kind of chart. This is the first thing called from the constructor; so certain of your instance variables may not have been set yet and you may need to set them yourself.


removeAllSeries

public void removeAllSeries()
Deletes all series from the chart.


quit

public void quit()
Prepares the chart to be garbage collected. If you override this, be sure to call super.quit()


getChartPanel

public ChartPanel getChartPanel()
Returns the ChartPanel holding the chart.


addGlobalAttribute

public void addGlobalAttribute(java.awt.Component component)
Adds a global attribute panel to the frame


getGlobalAttribute

public java.awt.Component getGlobalAttribute(int index)
Returns the global attribute panel of the given index.


getGlobalAttributeCount

public int getGlobalAttributeCount()
Returns the number of global attribute panels.


removeGlobalAttribute

public java.awt.Component removeGlobalAttribute(int index)
Remooves the global attribute at the given index and returns it.


setTitle

public void setTitle(java.lang.String title)
Sets the title of the chart (and the window frame).


getTitle

public java.lang.String getTitle()
Returns the title of the chart


setRangeAxisLabel

public void setRangeAxisLabel(java.lang.String val)
Sets the name of the Range Axis label -- usually this is the Y axis.


getRangeAxisLabel

public java.lang.String getRangeAxisLabel()
Returns the name of the Range Axis Label -- usually this is the Y axis.


setDomainAxisLabel

public void setDomainAxisLabel(java.lang.String val)
Sets the name of the Domain Axis label -- usually this is the X axis.


getDomainAxisLabel

public java.lang.String getDomainAxisLabel()
Returns the name of the Domain Axis label -- usually this is the X axis.


createFrame

public javax.swing.JFrame createFrame(GUIState state)
Returns a JFrame suitable or housing the ChartGenerator. This frame largely calls chart.quit() when the JFrame is being closed.