com.approximatrix.charting.swing
Class ExtendedChartPanel

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.ExtendedChartPanel
All Implemented Interfaces:
Chart, 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
Direct Known Subclasses:
InteractiveChartPanel

public class ExtendedChartPanel
extends AbstractChartPanel

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  int autoscale_button
          Mouse button for restoring autoscale
private  java.awt.Rectangle currentRect
          The selection rectangle for processing purposes
private  java.awt.Rectangle grRect
          The selection rectangle for actual drawing purposes
private  int zoom_button
          Mouse button used for zooming
private  boolean zoom_enabled
          Boolean allowing/disallowing zoom
 
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 ExtendedChartPanel()
          Creates new ChartPanel
  ExtendedChartPanel(ChartDataModel model, java.lang.String title)
          Creates a new ChartPanel with the given model and title string.
  ExtendedChartPanel(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
 void enableZoom(boolean value)
          Allows mouse selection for zooming
 boolean isEnableZoom()
          Returns whether or not dynamic zoom is enabled
 void mouseClicked(java.awt.event.MouseEvent e)
          Registers a clicked event, and, if zoom is enabled, will return the graph to autoscaling if the button causing the event is equivalent to autoscale_button.
 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.
 void paintComponent(java.awt.Graphics g)
          Calls the JPanel's paintComponent(g) method only
 void performAutoScale()
          Performs an autoscale, but does not perform any disabling of zooming of the plot panel.
 int print(java.awt.Graphics g, java.awt.print.PageFormat pf, int page)
          Implements the Printable print interface.
 void render(java.awt.Graphics2D g)
          Does the layout of the title, legend and coordinate system and calls the render method of all those including the ChartRenderers.
 void setAutoscaleMouseButton(int button)
          Sets the mouse button used to register a return to autoscaling by clicking.
 void setZoomMouseButton(int button)
          Sets the mouse button used fo dynamic scaling.
private  void updateSize(java.awt.event.MouseEvent e)
          Updates the zoom rectangles to draw based on a passed-in MouseEvent.
 
Methods inherited from class com.approximatrix.charting.swing.AbstractChartPanel
addChartRenderer, getBounds, getChartDataModel, getChartRenderer, getChartRenderer, getCoordSystem, getLegend, getPreferredSize, getRowColorModel, getTitle, mouseEntered, mouseExited, mouseMoved, setBounds, setChartDataModel, setChartRenderer, setCoordSystem, setLegend, setRowColorModel, 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, 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

zoom_enabled

private boolean zoom_enabled
Boolean allowing/disallowing zoom


zoom_button

private int zoom_button
Mouse button used for zooming


autoscale_button

private int autoscale_button
Mouse button for restoring autoscale


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

ExtendedChartPanel

private ExtendedChartPanel()
Creates new ChartPanel


ExtendedChartPanel

public ExtendedChartPanel(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

ExtendedChartPanel

public ExtendedChartPanel(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

render

public void render(java.awt.Graphics2D g)
Does the layout of the title, legend and coordinate system and calls the render method of all those including the ChartRenderers.

Specified by:
render in interface Chart
Overrides:
render in class AbstractChartPanel
Parameters:
g - the Graphics2D object to paint in. Just calls paint(Graphics).

paintComponent

public void paintComponent(java.awt.Graphics g)
Calls the JPanel's paintComponent(g) method only

Overrides:
paintComponent in class javax.swing.JComponent

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

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Registers a clicked event, and, if zoom is enabled, will return the graph to autoscaling if the button causing the event is equivalent to autoscale_button.

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

performAutoScale

public void performAutoScale()
Performs an autoscale, but does not perform any disabling of zooming of the plot panel.


enableZoom

public void enableZoom(boolean value)
Allows mouse selection for zooming

Parameters:
value - true to allow dynamic zoom, false otherwise

isEnableZoom

public boolean isEnableZoom()
Returns whether or not dynamic zoom is enabled

Returns:
true if zoom is enabled, false otherwise

setAutoscaleMouseButton

public void setAutoscaleMouseButton(int button)
Sets the mouse button used to register a return to autoscaling by clicking. Use NaN to disable this feature.

Parameters:
button - the button to use, usually taken from MouseEvent.{BUTTON1, BUTTON2, BUTTON3}

setZoomMouseButton

public void setZoomMouseButton(int button)
Sets the mouse button used fo dynamic scaling. Use NaN to disable this feature.

Parameters:
button - the button to use, usually taken from MouseEvent.{BUTTON1, BUTTON2, BUTTON3}

updateSize

private void updateSize(java.awt.event.MouseEvent e)
Updates the zoom rectangles to draw based on a passed-in MouseEvent. This routine exit immediately if there is currently no rectangle to zoom with or zooming is not enabled.

Parameters:
e - a MouseEvent from which to extract data

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