diva.canvas
Class JCanvas

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by diva.canvas.JCanvas
All Implemented Interfaces:
ImageObserver, MenuContainer, Printable, Serializable
Direct Known Subclasses:
DivaGraphicsImageDisplay, JCanvasPalette, JGraph, JSketch, TestDrawActions

public class JCanvas
extends JComponent
implements Printable

The JCanvas class is the center-piece of this package. The canvas is composed of a canvas pane, which in turn is composed of one or more layers. Each layer may contain arbitrary graphics, although commonly at least one layer is an instance of a "figure layer" class that contains figure objects. The main role of the JCanvas class is to provide the physical screen space on which layers draw themselves, and to interface to the Swing component hierarchy.

This architecture allows a graphics developer to write code for a pane and a set of layers, without being concerned about whether the pane and its layers will be directly contained by a JCanvas or within some other layer. For example, it will be possible for a visualization component to be "embedded" in a larger component.

Version:
$Revision: 1.49 $
Author:
John Reekie
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
 
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.print.Printable
NO_SUCH_PAGE, PAGE_EXISTS
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JCanvas()
          Create a new canvas that contains a single GraphicsPane.
JCanvas(CanvasPane pane)
          Create a new canvas that contains the given CanvasPane.
 
Method Summary
 CanvasPane getCanvasPane()
          Get the canvas pane contained by this component.
 String getToolTipText(MouseEvent e)
          Get the toolTipText for the point in the given MouseEvent.
 boolean isFocusTraversable()
          Return whether or not focus should be traversable across this object.
 void paintComponent(Graphics g)
          Paint the canvas.
 int print(Graphics graphics, PageFormat format, int index)
          Print the canvas to a printer, represented by the specified graphics object.
 int print(Graphics graphics, PageFormat format, int index, Rectangle2D printRegion)
          Print the canvas to a printer, represented by the specified graphics object.
protected  void processMouseEvent(MouseEvent e)
          Process a mouse event.
protected  void processMouseMotionEvent(MouseEvent e)
          Process a mouse motion event.
 void repaint(DamageRegion d)
          Accept notification that a repaint has occurred on in this canvas.
 void setCanvasPane(CanvasPane pane)
          Set the canvas pane contained by this JCanvas.
 void setDoubleBuffered(boolean flag)
          Turn double-buffering on this canvas on or off.
 void setPreferredSize(Dimension d)
          Set the preferred size of this JCanvas.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, 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, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, 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, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
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, 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
 

Constructor Detail

JCanvas

public JCanvas()
Create a new canvas that contains a single GraphicsPane. This is the simplest way of using the JCanvas. Mouse events on the canvas are enabled by default.


JCanvas

public JCanvas(CanvasPane pane)
Create a new canvas that contains the given CanvasPane. Mouse events on the canvas are enabled by default.

Method Detail

getCanvasPane

public final CanvasPane getCanvasPane()
Get the canvas pane contained by this component.


getToolTipText

public String getToolTipText(MouseEvent e)
Get the toolTipText for the point in the given MouseEvent. Ask the canvasPane for a toolTip for the location of the mouse event. Note that you should not in general call setToolTipText on this canvas, since the value is ignored and the value returned by this method used instead. Even worse, if you call setToolTipText(null), then tooltips will probably get disabled entirely!

Overrides:
getToolTipText in class JComponent

isFocusTraversable

public boolean isFocusTraversable()
Return whether or not focus should be traversable across this object. This must return true to allow keyboard events to be grabbed. Return true in this class.

Overrides:
isFocusTraversable in class Component

paintComponent

public void paintComponent(Graphics g)
Paint the canvas. Every layer in this canvas will be requested to paint itself.

This method allocates an offscreen buffer if necessary, and then paints the canvas into the right buffer and blits it to the on-screen buffer.

Acknowledgement: some of this code was adapted from code posted by Jonathon Knudsen to the Java2D mailing list, May 1998.

Overrides:
paintComponent in class JComponent

print

public int print(Graphics graphics,
                 PageFormat format,
                 int index)
          throws PrinterException
Print the canvas to a printer, represented by the specified graphics object. Scale the size of the canvas to fit onto the printed page, while preserving the shape of the objects on the page.

Specified by:
print in interface Printable
Parameters:
graphics - The context into which the page is drawn.
format - The size and orientation of the page being drawn.
index - The zero based index of the page to be drawn.
Returns:
PAGE_EXISTS if the page is rendered successfully, or NO_SUCH_PAGE if pageIndex specifies a non-existent page.
Throws:
PrinterException - If the print job is terminated.

print

public int print(Graphics graphics,
                 PageFormat format,
                 int index,
                 Rectangle2D printRegion)
          throws PrinterException
Print the canvas to a printer, represented by the specified graphics object. Scale the given printRegion to fit onto the printed page, while preserving the shape of the objects on the page.

Parameters:
graphics - The context into which the page is drawn.
format - The size and orientation of the page being drawn.
index - The zero based index of the page to be drawn.
printRegion - The rectangular region of the canvaws, in screen coordinates, that will be printed to the screen.
Returns:
PAGE_EXISTS if the page is rendered successfully, or NO_SUCH_PAGE if pageIndex specifies a non-existent page.
Throws:
PrinterException - If the print job is terminated.

repaint

public void repaint(DamageRegion d)
Accept notification that a repaint has occurred on in this canvas. Call the given damage region to generate the appopriate calls to the Swing repaint manager.


setCanvasPane

public final void setCanvasPane(CanvasPane pane)
Set the canvas pane contained by this JCanvas. If there is already a pane in this JCanvas, replace it. If the pane already is in a canvas, remove it from that other canvas.


setDoubleBuffered

public void setDoubleBuffered(boolean flag)
Turn double-buffering on this canvas on or off. This method overrides the inherited method to delete the off-screen buffer.

Overrides:
setDoubleBuffered in class JComponent

setPreferredSize

public void setPreferredSize(Dimension d)
Set the preferred size of this JCanvas. In addition to calling the superclass method, this calls setSize() on the contained pane.

Overrides:
setPreferredSize in class JComponent

processMouseEvent

protected void processMouseEvent(MouseEvent e)
Process a mouse event. This method overrides the inherited method to create a LayerEvent or LayerMotionEvent and pass the event on to its pane (if it is not null). The mouse event is passed to the superclass' method for handling.

Overrides:
processMouseEvent in class JComponent

processMouseMotionEvent

protected void processMouseMotionEvent(MouseEvent e)
Process a mouse motion event. This method overrides the inherited method to create a LayerEvent or LayerMotionEvent and pass the event on to its pane (if it is not null). The mouse event is passed to the superclass' method for handling.

Overrides:
processMouseMotionEvent in class JComponent


Copyright © 2015 Central Laboratory of the Research Councils. All Rights Reserved.