Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## sim.util.media.chart
Class ChartGenerator

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  javax.swing.JPanel
                      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, ScatterPlotGenerator, 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 only really need to override one method: buildChart(), which creates the chart and the chartPanel and loads them into the chartHolder, then finally sets the series dataset. Subclasses will also find it convenient to override update() to update the chart specially each time it's repainted, removeSeries(index) to remove a series, or moveSeries(index, boolean) to change the order of series. In a subclass's constructor it may also modify the global attributes to make ones special to its kind of chart as well. Finally, 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:

- The `chart` proper, stored in a `chartPanel`. This panel is in turn stored in a JScrollPane.
- The `globalAttributes`, a collection of Components on the top-left which control global features of the chart (its title, axis labels, etc.)
- The `seriesAttributes`, a scrollable collection of Components on the bottom-left which control features of each separate series in the chart.

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.BaselineResizeBehavior, 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
`static long` | `FORCE_KEY`
`protected javax.swing.Box` | `globalAttributes` A holder for global attributes components
`protected javax.swing.Box` | `seriesAttributes` A holder for series attributes components

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
`void` | `addLegend()` Add a legend to the chart unless the chart already has one.
`protected abstract void` | `buildChart()` Override this to construct the appropriate kind of chart.
`javax.swing.JFrame` | `createFrame()` Returns a JFrame suitable or housing the ChartGenerator.
`javax.swing.JFrame` | `createFrame(java.lang.Object simulation)`
`JFreeChart` | `getChart()` Returns the underlying chart.
`ChartPanel` | `getChartPanel()` Returns the ChartPanel holding the chart.
`java.lang.String` | `getDomainAxisLabel()` Deprecated. Returns the name of the Domain Axis label -- usually this is the X axis.
`javax.swing.JFrame` | `getFrame()` Returns the JFrame which stores the whole chart.
`java.awt.Component` | `getGlobalAttribute(int index)` Returns the global attribute panel of the given index.
`int` | `getGlobalAttributeCount()` Deprecated. Use getNumGlobalAttributes
`int` | `getNumGlobalAttributes()` Returns the number of global attribute panels.
`int` | `getNumSeriesAttributes()`
`java.lang.String` | `getRangeAxisLabel()` Deprecated. Returns the name of the Range Axis Label -- usually this is the Y axis.
`protected SeriesAttributes` | `getSeriesAttribute(int i)`
`protected SeriesAttributes[]` | `getSeriesAttributes()`
`XYDataset` | `getSeriesDataset()`
`java.lang.String` | `getTitle()` Returns the title of the chart
`java.lang.String` | `getXAxisLabel()` Returns the name of the X Axis label.
`java.lang.String` | `getYAxisLabel()` Returns the name of the Y Axis label.
`boolean` | `isXAxisLogScaled()`
`boolean` | `isYAxisLogScaled()`
`void` | `moveSeries(int index, boolean up)` Override this to move a series relative to other series.
`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.
`void` | `removeSeries(int index)` Override this to remove a series from the chart.
`void` | `setDomainAxisLabel(java.lang.String val)` Deprecated. Sets the name of the Domain Axis label -- usually this is the X axis.
`void` | `setDomainAxisRange(double lower, double upper)` Deprecated.
`void` | `setRangeAxisLabel(java.lang.String val)` Deprecated. Sets the name of the Range Axis label -- usually this is the Y axis.
`void` | `setRangeAxisRange(double lower, double upper)` Deprecated.
`protected void` | `setSeriesAttributes(SeriesAttributes[] c)`
`void` | `setSeriesDataset(XYDataset obj)`
`void` | `setTitle(java.lang.String title)` Sets the title of the chart (and the window frame).
`void` | `setXAxisLabel(java.lang.String val)` Sets the name of the X Axis label.
`void` | `setXAxisLogScaled(boolean isLogScaled)`
`void` | `setXAxisRange(double lower, double upper)`
`void` | `setYAxisLabel(java.lang.String val)` Sets the name of the Y Axis label.
`void` | `setYAxisLogScaled(boolean isLogScaled)`
`void` | `setYAxisRange(double lower, double upper)`
`void` | `startMovie()` Starts a Quicktime movie on the given ChartGenerator.
`void` | `stopMovie()` Stops a Quicktime movie and cleans up, flushing the remaining frames out to disk.
`protected void` | `update()` Override this to update the chart to reflect new data.
`void` | `update(long key, boolean newData)` Key must be 0 or higher.
`void` | `updateChartLater(long key)` Posts a request to update the chart on the Swing event queue to happen next time repaints etc.
`void` | `updateChartWithin(long key, long milliseconds)` Updates the inspector asynchronously sometime before the given milliseconds have transpired.

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, 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

### FORCE_KEY

    public static final long FORCE_KEY

See Also:
  Constant Field Values

Constructor Detail

### ChartGenerator

    public ChartGenerator()

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

Method Detail

### getFrame

    public javax.swing.JFrame getFrame()

  Returns the JFrame which stores the whole chart. Set in createFrame(), else null.

### setXAxisLogScaled

    public void setXAxisLogScaled(boolean isLogScaled)

### isXAxisLogScaled

    public boolean isXAxisLogScaled()

### setYAxisLogScaled

    public void setYAxisLogScaled(boolean isLogScaled)

### isYAxisLogScaled

    public boolean isYAxisLogScaled()

### getSeriesDataset

    public XYDataset getSeriesDataset()

### setSeriesDataset

    public void setSeriesDataset(XYDataset obj)

### update

    public void update(long key,
                       boolean newData)

  Key must be 0 or higher. Will update only if the key passed in is different from the previously passed in key or if the key is FORCE_KEY. If newData is true, then the chart will also be written out to a movie if appropriate.

### update

    protected void update()

  Override this to update the chart to reflect new data.

### getSeriesAttribute

    protected SeriesAttributes getSeriesAttribute(int i)

### getNumSeriesAttributes

    public int getNumSeriesAttributes()

### getSeriesAttributes

    protected SeriesAttributes[] getSeriesAttributes()

### setSeriesAttributes

    protected void setSeriesAttributes(SeriesAttributes[] c)

### removeSeries

    public void removeSeries(int index)

  Override this to remove a series from the chart. Be sure to call super(...) first.

### moveSeries

    public void moveSeries(int index,
                           boolean up)

  Override this to move a series relative to other series. Be sure to call super(...) first.

### 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. You'll need to set the dataset.

### startMovie

    public void startMovie()

  Starts a Quicktime movie on the given ChartGenerator. The size of the movie frame will be the size of the chart at the time this method is called. This method ought to be called from the main event loop. Most of the default movie formats provided will result in a gigantic movie, which you can re-encode using something smarter (like the Animation or Sorenson codecs) to put to a reasonable size. On the Mac, Quicktime Pro will do this quite elegantly.

### stopMovie

    public void stopMovie()

  Stops a Quicktime movie and cleans up, flushing the remaining frames out to disk. This method ought to be called from the main event loop.

### 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()

  Deprecated. Use getNumGlobalAttributes

### getNumGlobalAttributes

    public int getNumGlobalAttributes()

  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)

  Deprecated. Sets the name of the Range Axis label -- usually this is the Y axis.

### setYAxisLabel

    public void setYAxisLabel(java.lang.String val)

  Sets the name of the Y Axis label.

### getRangeAxisLabel

    public java.lang.String getRangeAxisLabel()

  Deprecated. Returns the name of the Range Axis Label -- usually this is the Y axis.

### getYAxisLabel

    public java.lang.String getYAxisLabel()

  Returns the name of the Y Axis label.

### setDomainAxisLabel

    public void setDomainAxisLabel(java.lang.String val)

  Deprecated. Sets the name of the Domain Axis label -- usually this is the X axis.

### setXAxisLabel

    public void setXAxisLabel(java.lang.String val)

  Sets the name of the X Axis label.

### getDomainAxisLabel

    public java.lang.String getDomainAxisLabel()

  Deprecated. Returns the name of the Domain Axis label -- usually this is the X axis.

### getXAxisLabel

    public java.lang.String getXAxisLabel()

  Returns the name of the X Axis label.

### getChart

    public JFreeChart getChart()

  Returns the underlying chart.

### createFrame

    public javax.swing.JFrame createFrame()

  Returns a JFrame suitable or housing the ChartGenerator. This frame largely calls chart.quit() when the JFrame is being closed.

### createFrame

    public javax.swing.JFrame createFrame(java.lang.Object simulation)

### addLegend

    public void addLegend()

  Add a legend to the chart unless the chart already has one.

### setRangeAxisRange

    public void setRangeAxisRange(double lower,
                                  double upper)

  Deprecated.

### setYAxisRange

    public void setYAxisRange(double lower,
                              double upper)

### setDomainAxisRange

    public void setDomainAxisRange(double lower,
                                   double upper)

  Deprecated.

### setXAxisRange

    public void setXAxisRange(double lower,
                              double upper)

### updateChartWithin

    public void updateChartWithin(long key,
                                  long milliseconds)

  Updates the inspector asynchronously sometime before the given milliseconds have transpired. Once requested, further calls to request an update via this method will be ignored until the update occurs.

### updateChartLater

    public void updateChartLater(long key)

  Posts a request to update the chart on the Swing event queue to happen next time repaints etc. happen.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD