com.approximatrix.charting.swing
Class BufferedChartPanel

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 com.approximatrix.charting.swing.AbstractChartPanel
                      extended by com.approximatrix.charting.swing.BufferedChartPanel
All Implemented Interfaces:
Chart, RenderChangeListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.awt.print.Printable, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible

public class BufferedChartPanel
extends AbstractChartPanel
implements RenderChangeListener

This Panel provides the possibility to include a Chart into a Swing Application. I choose not to make every Chart extend JComponent because of the overhead this would have meant. Instead, this class is an adaptor. It implements the Chart interface and contains a DefaultChart instance to which all Chart calls are promoted.

Author:
mueller, armstrong
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
private  java.awt.Rectangle currentRect
          The selection rectangle for processing purposes
private  java.awt.Rectangle grRect
          The selection rectangle for actual drawing purposes
 
Fields inherited from class com.approximatrix.charting.swing.AbstractChartPanel
chart, NO_SUCH_PAGE, PAGE_EXISTS
 
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
private BufferedChartPanel()
          Creates new ChartPanel
  BufferedChartPanel(ChartDataModel model, java.lang.String title)
          Creates a new ChartPanel with the given model and title string.
  BufferedChartPanel(ChartDataModel model, java.lang.String title, int coord)
          Creates a new ChartPanel with the given model and title string and a coordinate system.
 
Method Summary
 boolean isBuffering()
          Pass-through to the chart object to determine if buffering is enabled.
 void mouseDragged(java.awt.event.MouseEvent e)
          Registers a mouse dragged event and updates the size of the selection rectangle being drawn on the panel if appropriate.
 void mousePressed(java.awt.event.MouseEvent e)
          Registers the first press of a mouse button for selection purposes
 void mouseReleased(java.awt.event.MouseEvent e)
          Registers the release of the mouse button and disables selection mode
 void paint(java.awt.Graphics graphics)
          Paints the ChartPanel.
 int print(java.awt.Graphics g, java.awt.print.PageFormat pf, int page)
          Implements the Printable print interface.
 void renderUpdateRequested(RenderChangeEvent evt)
          Listens for RenderChangeEvents from the chart.
 void setBuffering(boolean value)
          Pass-through to the chart to enable/disable buffered drawing
private  void updateSize(java.awt.event.MouseEvent e)
          Updates the current selection rectangle on the chart if appropriate.
 
Methods inherited from class com.approximatrix.charting.swing.AbstractChartPanel
addChartRenderer, getBounds, getChartDataModel, getChartRenderer, getChartRenderer, getCoordSystem, getLegend, getPreferredSize, getTitle, mouseClicked, mouseEntered, mouseExited, mouseMoved, render, setBounds, setChartDataModel, setChartRenderer, setCoordSystem, setLegend, setTitle
 
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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, 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, 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, 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

currentRect

private java.awt.Rectangle currentRect
The selection rectangle for processing purposes


grRect

private java.awt.Rectangle grRect
The selection rectangle for actual drawing purposes

Constructor Detail

BufferedChartPanel

private BufferedChartPanel()
Creates new ChartPanel


BufferedChartPanel

public BufferedChartPanel(ChartDataModel model,
                          java.lang.String title)
Creates a new ChartPanel with the given model and title string.

Parameters:
model - the ChartDataModel
title - the title String

BufferedChartPanel

public BufferedChartPanel(ChartDataModel model,
                          java.lang.String title,
                          int coord)
Creates a new ChartPanel with the given model and title string and a coordinate system.

Parameters:
model - the ChartDataModel
title - the title String
coord - the id of the coordinate system configuration
Method Detail

paint

public void paint(java.awt.Graphics graphics)
Paints the ChartPanel. Calls chart.render((Graphics2D)graphics)

Overrides:
paint in class AbstractChartPanel
Parameters:
graphics - the Graphics2D object to paint in

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Registers a mouse dragged event and updates the size of the selection rectangle being drawn on the panel if appropriate.

Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener
Overrides:
mouseDragged in class AbstractChartPanel

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Registers the first press of a mouse button for selection purposes

Specified by:
mousePressed in interface java.awt.event.MouseListener
Overrides:
mousePressed in class AbstractChartPanel

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Registers the release of the mouse button and disables selection mode

Specified by:
mouseReleased in interface java.awt.event.MouseListener
Overrides:
mouseReleased in class AbstractChartPanel

updateSize

private void updateSize(java.awt.event.MouseEvent e)
Updates the current selection rectangle on the chart if appropriate. This routine should only be called from the MouseListener functions.

Parameters:
e - the mouse event that caused the update function to be called

renderUpdateRequested

public void renderUpdateRequested(RenderChangeEvent evt)
Listens for RenderChangeEvents from the chart. When encountered, the panel will request a redraw to ensure th echart appears.

Specified by:
renderUpdateRequested in interface RenderChangeListener
Parameters:
evt - the event object

isBuffering

public boolean isBuffering()
Pass-through to the chart object to determine if buffering is enabled.

Returns:
true if buffering is enabled, false otherwise

setBuffering

public void setBuffering(boolean value)
Pass-through to the chart to enable/disable buffered drawing

Parameters:
value - true to enable buffering, false otherwise

print

public int print(java.awt.Graphics g,
                 java.awt.print.PageFormat pf,
                 int page)
          throws java.awt.print.PrinterException
Implements the Printable print interface. Causes the panel's chart to be printed at screen size based on the automatically passed print arguments.

Specified by:
print in interface java.awt.print.Printable
Overrides:
print in class AbstractChartPanel
Throws:
java.awt.print.PrinterException