Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| http://www.jpicedt.org
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## jpicedt.graphic
Class PECanvas

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  javax.swing.JPanel
                      jpicedt.graphic.PECanvas

All Implemented Interfaces:
  Accessible, ImageObserver, MenuContainer, Scrollable, Serializable

public class PECanvas
extends JPanel
implements Scrollable

This is a JComponent on which graphic elements are drawn. It's has an underlying model (a Drawing) to represent the content, an EditorKit to manipulate the content, and a View responsible for rendering the content. EditorKit, Drawing, and View's are pluggable : the EditorKit is responsible for creating 1) a default Drawing and 2) a ViewFactory that will populate the View tree associated with the Drawing, by attaching a View to each element in the model.

Depending on the content type this Component is loaded with, it may plug a new EditorKit on-the-fly that's suited for the given content type (e.g. LaTeX, Postscript, SVG-XML, etc...).

# Model to View/View to Model

Graphic objects are stored (e.g. in a Drawing) in natural coordinates, ie LaTeX/Postscript/... coordinates, using e.g. a "1 mm" unitlength : that's what we call "model coordinate". Obviously, we've to translate these coordinates to screen coordinates (e.g. JViewport-coordinate or JPanel-coordinate) before rendering, and this is done very simply by using an AffineTransform and adding it to the current Graphic2D context in the body of the "paintComponent" method. The following picture sums up the translation process that takes place b/w model- and view-coordinate.

The benefits of such an approach is to make it easy for someone willing to develop a parser/formater to handle objects coordinates with the fewest possible overhead, since objects coordinates are "natively" available in natural (ie from left to right and from bottom to top) coordinates, and this is perfectly suited for formatting language like LaTeX, Postscript or SVG-XML. Besides, this makes sense with the grid ticks marks.

Margins are encapsulated in a PageFormat (an inner class) object. Contrary to previous jpicedt releases, it's no longer necessary, as of jpicedt 1.3.2, to provide formater methods with the ptOrg parameter.

In addition to the standard behaviour inherited from JPanel, PropertyChangeEvent's are triggered when :

- changing the page format ;
- changing the zoom factor ;
- changing the editor kit ;

Since:
  jpicedt 1.0
Version:
  $Id: PECanvas.java,v 1.24.2.2 2007/09/02 11:56:16 reynal Exp $

Author:
  Sylvain Reynal
See Also:
  Serialized Form

Nested Class Summary

Nested classes inherited from class javax.swing.JPanel
`JPanel.AccessibleJPanel`

Nested classes inherited from class javax.swing.JComponent
`JComponent.AccessibleJComponent`

Nested classes inherited from class java.awt.Container
`Container.AccessibleAWTContainer`

Nested classes inherited from class java.awt.Component
`Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy`

Field Summary
`static String` | `CONTENT_TYPE_CHANGE` property name for content-type's change events
`protected ContentType` | `contentType` the current content-type for this PECanvas (determines the EditorKit behaviour)
`protected Drawing` | `drawing` the model for this canvas
`static String` | `DRAWING_CHANGE` property name for drawing-change events
`static String` | `EDITOR_KIT_CHANGE` property name for editorkit-change events
`protected Grid` | `grid` the grid attached to this canvas
`static String` | `KEY_CONTENT_TYPE` key for Properties's content-type value
`static String` | `KEY_UNDOABLE_STEPS` key for Properties's nb of undoable steps value
`static String` | `KEY_ZOOM` key for Properties's zoom value
`protected EditorKit` | `kit` the current editor kit for this component
`static int` | `MAX_UNDOABLE_STEPS_DEFAULT` default undoable events to remember
`protected AffineTransform` | `model2ViewTransform` the AffineTransform used to translate from model-coordinates to view-coordinates ; gets updated each time either the zoom factor or the page format changes
`protected PageFormat` | `pageFormat` pageFormat encapsulates board size and margin data
`static String[]` | `PREDEFINED_ZOOM_STRINGS`
`static double[]` | `PREDEFINED_ZOOMS`
`protected RenderingHints` | `renderingHints` a Map storing RenderingHints to be applied to the graphic context when rendering the drawing
`protected StateEdit` | `stateEdit` the UndoableEdit in progress
`protected UndoableEditSupport` | `undoableEditSupport` the UndoableEditSupport delegate for UndoableEditEvent firing
`protected UndoManager` | `undoManager` the UndoManager delegate for undo/redo operation
`protected AffineTransform` | `view2ModelTransform` the AffineTransform used to translate from mouse-coordinates to model-coordinates ; gets updated each time model2ViewTransform changes
`static double` | `ZOOM_DEFAULT`

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
`PECanvas()` Construct a new PECanvas initialized with default values.
`PECanvas(double zoom, PageFormat pageFormat, Grid grid, ContentType contentType)` Construct a new PECanvas with the default editor-kit and drawing as content storage.

Method Summary
`void` | `addPEMouseInputListener(PEMouseInputListener l)` Adds the specified mouse listener to receive mouse events from this component.
`void` | `addSelectionListener(SelectionListener l)` adds a SelectionListener to the Canvas
`void` | `addUndoableEditListener(UndoableEditListener l)` Register an UndoableEditListener for the Drawing hosted by this canvas.
`void` | `addZoomListener(ZoomListener l)` adds a ZoomListener to the Canvas
`void` | `beginUndoableUpdate(String presentationName)` Create a new UndoableEdit that holds the current state of the Drawing.
`boolean` | `canRedo()`
`boolean` | `canUndo()`
`void` | `copy()` Copy the content of the current selection to the System's clipboard (after a formatting to text)
`void` | `copy(Clipboard clipbrd)` Copy the content of the current selection (through a GraphicTransferable) to the System's clipboard (after a formatting to text), AND to the given clipboard if non-null (the latter can be a local clipboard supporting more data-flavors than the system clipboard)
`protected EditorKit` | `createDefaultEditorKit(ContentType contentType)` Creates a default editor kit (`EditorKit`) whose factory delegates are initialized from the given content-type.
`void` | `cut()` Cut the content of the current selection to the System clipboard, after formatting to text.
`void` | `cut(Clipboard clipbrd)` Cut the content of the current selection (through a GraphicTransferable) to the System clipboard, AND to the given ClipBoard if non-null.
`void` | `deleteSelection()` remove all selected objects from the drawing
`void` | `endUndoableUpdate()` Ends the current UndoableEdit and fire an event to registered listeners.
`protected void` | `fireSelectionUpdate(Element[] elements, SelectionEvent.EventType type)` Notify all listeners that have registered interest for notification on this event type.
`protected void` | `fireSelectionUpdate(Element element, SelectionEvent.EventType type)` Notify all listeners that have registered interest for notification on this event type.
`protected void` | `fireZoomUpdate(double oldZoom, double newZoom, PicPoint ptClick)` Notify all listeners that have registered interest for notification on this event type.
`ContentType` | `getContentType()`
`Drawing` | `getDrawing()`
`EditorKit` | `getEditorKit()` Fetches the currently installed kit for handling content.
`Grid` | `getGrid()`
`AffineTransform` | `getModelToViewTransform()`
`PageFormat` | `getPageFormat()`
`Dimension` | `getPreferredScrollableViewportSize()`
`String` | `getRedoPresentationName()`
`RenderingHints` | `getRenderingHints()` Return the RenderingHints applied to the graphic context when rendering this component
`double` | `getScaleFactor()`
`int` | `getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)`
`boolean` | `getScrollableTracksViewportHeight()`
`boolean` | `getScrollableTracksViewportWidth()`
`int` | `getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)`
`int` | `getSelectionSize()`
`PicPoint` | `getSheetOrigin()`
`String` | `getUndoPresentationName()`
`AffineTransform` | `getViewToModelTransform()`
`double` | `getZoomFactor()`
`static int` | `getZoomIndex(double zoom)` utilities to retrieve the index of the given zoom in PREDEFINED_ZOOMS ; this may be used by GUI widgets, e.g.
`void` | `groupSelection()` group all selected objects into a new PicGroup and add it to the drawing.
`void` | `insert(Reader reader, Parser parser)` insert content from a reader into the current drawing
`boolean` | `isRequestFocusEnabled()` Overriden from JComponent Signals that this component can receive focus (useful for handling keyevents)
`boolean` | `isSelected(Element e)`
`void` | `joinSelection()` join all selected objects of type PicMultiCurveConvertable into a new PicMulticurve and add it to the drawing.
`PicPoint` | `modelToView(PicPoint src, PicPoint dst)` Converts a point from the model-coordinate system to the pixel-coordinate system.
`Shape` | `modelToView(Shape src)` Converts a Shape from the model-coordinate system to the pixel-coordinate system.
`void` | `paintComponent(Graphics g)` paintComponent(Graphics g) is called by AWTEventDispatchThread via "paint(g)" it's absolutely necessary to call super.paintComponent(g) so that the background gets properly painted (PECanvas is opaque)
`void` | `paste(boolean translate)` Add the content of the System's ClipBoard to the current drawing, then select it.
`void` | `paste(Clipboard clipbrd, boolean translate)` Add the content of the given ClipBoard to the current drawing, then select it.
`protected void` | `processMouseEvent(MouseEvent e)` Processes mouse events occurring on this component by dispatching them to any registered `PEMouseListener` objects.
`protected void` | `processMouseMotionEvent(MouseEvent e)` Processes mouse motion events occurring on this component by dispatching them to any registered `PEMouseInputListener` objects.
`void` | `read(Reader reader, Parser parser)` read drawing content from a reader and erase old one.
`void` | `redo()` Redo last change
`void` | `removePEMouseInputListener(PEMouseInputListener l)` Removes the specified mouse listener so that it no longer receives mouse events from this component.
`void` | `removeSelectionListener(SelectionListener l)` removes a SelectionListener from the Canvas
`void` | `removeUndoableEditListener(UndoableEditListener l)` Unregister an UndoableEditListener for the Drawing hosted by this canvas.
`void` | `removeZoomListener(ZoomListener l)` removes a ZoomListener from the Canvas
`void` | `repaintFromModelRect(Rectangle2D rect)` add the given rectangle, given in model-coordinates, to the list of dirty regions.
`void` | `select(Collection c, boolean incremental)` select the elements in the given collection (if they belong to the drawing)
`void` | `select(Element obj, boolean incremental)` select the given element
`void` | `selectAll(boolean state)` select or unselect every object in this drawing
`Iterator` | `selection()`
`void` | `setContentType(ContentType newContentType)` change the current content-type: this implies plugging a new ViewFactory and a new FormatterFactory to the currently installed EditorKit, as obtained from the given newContentType argument.
`void` | `setDrawing(Drawing dr)` set the Drawing model for this component.
`void` | `setEditorKit(EditorKit kit)` Sets the currently installed kit for handling content.
`void` | `setPageFormat(PageFormat pageFormat)` Set the size of the drawing board.
`void` | `setUndoLimit(int limit)` set the number of undoable events to remember
`void` | `setZoomFactor(double zoom)` Convenience call to setZoomFactor(zoom,null)
`void` | `setZoomFactor(double zoom, PicPoint ptClick)` sets the current zoom factor to the given double, then updates various properties (model <-> view transforms, dimension, preferredSize...), finally, sources a ZoomEvent to give a chance to receiver to update their state accordingly (this may be used e.g.
`void` | `undo()` Undo last change
`void` | `unGroup(PicGroup g)` fetch all Element's belonging to the given PicGroup and add them to its parent, removing the given PicGroup from its parent afterward.
`void` | `unSelect(Element obj)` unselect the given object
`PicPoint` | `view2Model(PicPoint src, PicPoint dst)` Converts a point from the pixel-coordinate system to the model-coordinate system.
`Shape` | `viewToModel(Shape src)` Converts a Shape from the pixel-coordinate system to the model-coordinate system.
`void` | `write(Writer writer, boolean writeSelectionOnly)` Write drawing content to the given stream

Methods inherited from class javax.swing.JPanel
`getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

Methods inherited from class javax.swing.JComponent
`addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, 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

### PREDEFINED_ZOOM_STRINGS

    public static final String[] PREDEFINED_ZOOM_STRINGS

### PREDEFINED_ZOOMS

    public static final double[] PREDEFINED_ZOOMS

### ZOOM_DEFAULT

    public static final double ZOOM_DEFAULT

See Also:
  Constant Field Values

### KEY_ZOOM

    public static final String KEY_ZOOM

  key for Properties's zoom value

  See Also:
    Constant Field Values

### KEY_CONTENT_TYPE

    public static final String KEY_CONTENT_TYPE

  key for Properties's content-type value

  See Also:
    Constant Field Values

### KEY_UNDOABLE_STEPS

    public static final String KEY_UNDOABLE_STEPS

  key for Properties's nb of undoable steps value

  See Also:
    Constant Field Values

### MAX_UNDOABLE_STEPS_DEFAULT

    public static final int MAX_UNDOABLE_STEPS_DEFAULT

  default undoable events to remember

  See Also:
    Constant Field Values

### DRAWING_CHANGE

    public static final String DRAWING_CHANGE

  property name for drawing-change events

  See Also:
    Constant Field Values

### EDITOR_KIT_CHANGE

    public static final String EDITOR_KIT_CHANGE

  property name for editorkit-change events

  See Also:
    Constant Field Values

### CONTENT_TYPE_CHANGE

    public static final String CONTENT_TYPE_CHANGE

  property name for content-type's change events

  See Also:
    Constant Field Values

### drawing

    protected Drawing drawing

  the model for this canvas

### pageFormat

    protected PageFormat pageFormat

  pageFormat encapsulates board size and margin data

### contentType

    protected ContentType contentType

  the current content-type for this PECanvas (determines the EditorKit behaviour)

### model2ViewTransform

    protected AffineTransform model2ViewTransform

  the AffineTransform used to translate from model-coordinates to view-coordinates ; gets updated each time either the zoom factor or the page format changes

### view2ModelTransform

    protected AffineTransform view2ModelTransform

  the AffineTransform used to translate from mouse-coordinates to model-coordinates ; gets updated each time model2ViewTransform changes

### grid

    protected Grid grid

  the grid attached to this canvas

### kit

    protected EditorKit kit

  the current editor kit for this component

### undoableEditSupport

    protected UndoableEditSupport undoableEditSupport

  the UndoableEditSupport delegate for UndoableEditEvent firing

### undoManager

    protected UndoManager undoManager

  the UndoManager delegate for undo/redo operation

### stateEdit

    protected StateEdit stateEdit

  the UndoableEdit in progress

### renderingHints

    protected RenderingHints renderingHints

  a Map storing RenderingHints to be applied to the graphic context when rendering the drawing

Constructor Detail

### PECanvas

    public PECanvas()

  Construct a new PECanvas initialized with default values.

### PECanvas

    public PECanvas(double zoom,
                    PageFormat pageFormat,
                    Grid grid,
                    ContentType contentType)

  Construct a new PECanvas with the default editor-kit and drawing as content storage.

Parameters:
  `zoom` - initial zoom factor
Since:
  PicEdt 1.0

Method Detail

### paintComponent

    public void paintComponent(Graphics g)

  paintComponent(Graphics g) is called by AWTEventDispatchThread via "paint(g)" it's absolutely necessary to call super.paintComponent(g) so that the background gets properly painted (PECanvas is opaque)

  This implementation first applies an AffineTransform to the graphic context : this transform maps in effect model-coordinates to screen-coordinates. Then invokes the paint() method in that order :

  - on the Grid object attached to this PECanvas;
  - on the root-view associated with Drawing.RootElement.
  - on the EditorKit in which this PECanvas is installed.

### repaintFromModelRect

    public void repaintFromModelRect(Rectangle2D rect)

  add the given rectangle, given in model-coordinates, to the list of dirty regions.

### getRenderingHints

    public RenderingHints getRenderingHints()

  Return the RenderingHints applied to the graphic context when rendering this component

### getDrawing

    public Drawing getDrawing()

  Returns:
    the model, ie a Drawing containing only non-selected objects

### setDrawing

    public void setDrawing(Drawing dr)

  set the Drawing model for this component. The currently registered EditorKit is used to build a viewtree for the drawing. A PropertyChange event (DRAWING_CHANGE) is sent to each listener.

### getEditorKit

    public EditorKit getEditorKit()

  Fetches the currently installed kit for handling content.

### createDefaultEditorKit

    protected EditorKit createDefaultEditorKit(ContentType contentType)

  Creates a default editor kit (`EditorKit`) whose factory delegates are initialized from the given content-type. If an EditorKit was already installed in this PECanvas, we try to reuse its properties in the new EditorKit, if applicable.

  Parameters:
    `contentType` - null if a default content-type should be used
  Returns:
    the editor kit

### setEditorKit

    public void setEditorKit(EditorKit kit)

  Sets the currently installed kit for handling content. This is the bound property that establishes the content type of the editor. Any old kit is first deinstalled, then if kit is non-`null`, the new kit is installed.

  A default drawing is created from it if there was no drawing set in this canvas before, otherwise the old drawing is reused : in both cases, `setDrawing` is called, but this allows the caller to change the ContentType w/o changing the Drawing if it deems it unnecessary (otherwise, it may call setDrawing() afterwards). A `PropertyChange` event (EDITOR_KIT_CHANGE) is always fired when `setEditorKit` is called.

  Parameters:
    `kit` - the desired editor behavior
  See Also:
    `getEditorKit()`

### getContentType

    public ContentType getContentType()

  Returns:
    the current content-type

### setContentType

    public void setContentType(ContentType newContentType)

  change the current content-type: this implies plugging a new ViewFactory and a new FormatterFactory to the currently installed EditorKit, as obtained from the given newContentType argument.

  Parameters:
    `newContentType` - if null, the DefaultContentType is installed.

### setPageFormat

    public void setPageFormat(PageFormat pageFormat)

  Set the size of the drawing board. Length are given in mm (this should approximately represent true mm on the screen, however this might slightly depend on the underlying platform).
  This in turn sets the preferred size of the component. .

  Since:
    jPicEdt

### getPageFormat

    public PageFormat getPageFormat()

  Returns:
    the page format for this drawing board
  Since:
    jPicEdt

### getSheetOrigin

    public PicPoint getSheetOrigin()

  Returns:
    the pixel-coordinates of the (0,0) model origin when zoom = 1.0

### getGrid

    public Grid getGrid()

  Returns:
    the grid attached to this canvas

### getModelToViewTransform

    public AffineTransform getModelToViewTransform()

  Returns:
    an AffineTransform that represents the maping b/w the model-coordinate system and the pixel coordinate system. Guaranteed not to change over time.
  Since:
    jPicEdt

### getViewToModelTransform

    public AffineTransform getViewToModelTransform()

  Returns:
    an AffineTransform that represents the maping b/w the pixel-coordinate system and the model-coordinate system. Guaranteed not to change over time.
  Since:
    jPicEdt

### modelToView

    public PicPoint modelToView(PicPoint src,
                                PicPoint dst)

  Converts a point from the model-coordinate system to the pixel-coordinate system.

  Parameters:
    `src` - the source point in model-coordinate
    `dst` - the destination point ; if null, a new point is allocated, and returned for convenience.
  Returns:
    the result (same as dst if non-null)
  Since:
    jPicEdt

### view2Model

    public PicPoint view2Model(PicPoint src,
                               PicPoint dst)

  Converts a point from the pixel-coordinate system to the model-coordinate system.

  Parameters:
    `src` - the source point in pixel-coordinate
    `dst` - the destination point ; if null, a new point is allocated, and returned for convenience.
  Returns:
    the result (same as dst if non-null)
  Since:
    jPicEdt

### modelToView

    public Shape modelToView(Shape src)

  Converts a Shape from the model-coordinate system to the pixel-coordinate system.

  Parameters:
    `src` - a Shape in the model-coordinate system
  Returns:
    a new Shape corresponding to the given Shape once transformed to the pixel-coordinate system.
  Since:
    jPicEdt

### viewToModel

    public Shape viewToModel(Shape src)

  Converts a Shape from the pixel-coordinate system to the model-coordinate system.

  Parameters:
    `src` - a Shape in the pixel-coordinate system
  Returns:
    a new Shape corresponding to the given Shape once transformed to the model-coordinate system.
  Since:
    jPicEdt

### read

    public void read(Reader reader,
                     Parser parser)
              throws ParserException

  read drawing content from a reader and erase old one. Listener's interested in DrawingEvent's should register their listener anew (this can be done systematically by registering a PropertyCHangeListener to this canvas, and waiting for DRAWING_CHANGE events).

  Parameters:
    `reader` - the reader to read content from
  Throws:
    `ParserException`

### insert

    public void insert(Reader reader,
                       Parser parser)
                throws ParserException

  insert content from a reader into the current drawing

  Parameters:
    `reader` - the reader to insert content from
  Throws:
    `ParserException`

### write

    public void write(Writer writer,
                      boolean writeSelectionOnly)
               throws IOException

  Write drawing content to the given stream

  Parameters:
    `writer` - The writer to write to
    `writeSelectionOnly` - if true, only write selection content
  Throws:
    `IOException` - on any I/O error
  Since:
    jPicEdt

### setZoomFactor

    public void setZoomFactor(double zoom)

  Convenience call to setZoomFactor(zoom,null)

### setZoomFactor

    public void setZoomFactor(double zoom,
                              PicPoint ptClick)

  sets the current zoom factor to the given double, then updates various properties (model <-> view transforms, dimension, preferredSize...), finally, sources a ZoomEvent to give a chance to receiver to update their state accordingly (this may be used e.g. by a parent scrollpane to update its view port location, or by a GUI widget to reflect the new zoom value).

  Parameters:
    `zoom` - the new zoom factor
    `ptClick` - this only makes sense if the parent of this component is aka ScrollPane ;
    Coordinates for this point are in the model-coordinate system.

### getZoomFactor

    public double getZoomFactor()

  Returns:
    the current zoom factor

### getScaleFactor

    public double getScaleFactor()

  Returns:
    the current scale factor between model- and view-coordinates, as given by the current model2ViewTransform. This is usually the product of the current zoom factor, and the DotPerMilliMeter screen factor.

### fireZoomUpdate

    protected void fireZoomUpdate(double oldZoom,
                                  double newZoom,
                                  PicPoint ptClick)

  Notify all listeners that have registered interest for notification on this event type.

  Parameters:
    `oldZoom` - previous zoom value
    `newZoom` - new zoom value
    `ptClick` - the point (in model-coordinates) that is expected to be at the center of the view-port ; can be null

### addZoomListener

    public void addZoomListener(ZoomListener l)

  adds a ZoomListener to the Canvas

### removeZoomListener

    public void removeZoomListener(ZoomListener l)

  removes a ZoomListener from the Canvas

### getZoomIndex

    public static int getZoomIndex(double zoom)

  utilities to retrieve the index of the given zoom in PREDEFINED_ZOOMS ; this may be used by GUI widgets, e.g. JComboBox,...

  Returns:
    index of the given zoom in array "PREDEFINED_ZOOMS" ; returns -1 if not found.

### setUndoLimit

    public void setUndoLimit(int limit)

  set the number of undoable events to remember

### undo

    public void undo()
              throws CannotUndoException

  Undo last change

  Throws:
    `CannotUndoException`
  Since:
    PicEdt 1.1.3

### redo

    public void redo()
              throws CannotRedoException

  Redo last change

  Throws:
    `CannotRedoException`
  Since:
    PicEdt 1.1.3

### addUndoableEditListener

    public void addUndoableEditListener(UndoableEditListener l)

  Register an UndoableEditListener for the Drawing hosted by this canvas.

### removeUndoableEditListener

    public void removeUndoableEditListener(UndoableEditListener l)

  Unregister an UndoableEditListener for the Drawing hosted by this canvas.

### beginUndoableUpdate

    public void beginUndoableUpdate(String presentationName)

  Create a new UndoableEdit that holds the current state of the Drawing.

### endUndoableUpdate

    public void endUndoableUpdate()

  Ends the current UndoableEdit and fire an event to registered listeners.

### canRedo

    public boolean canRedo()

  Returns:
    true if a "redo" operation would be successfull

### canUndo

    public boolean canUndo()

  Returns:
    true if a "undo" operation would be successfull

### getRedoPresentationName

    public String getRedoPresentationName()

  Returns:
    the presentation name of the next edit that can be redone

### getUndoPresentationName

    public String getUndoPresentationName()

  Returns:
    the presentation name of the last edit that can be undone

### selection

    public Iterator selection()

  Returns:
    an Iterator over selected graphic elements

### getSelectionSize

    public int getSelectionSize()

  Returns:
    the number of selected elements in the current selection

### isSelected

    public boolean isSelected(Element e)

  Returns:
    whether the given element is selected or not

### selectAll

    public void selectAll(boolean state)

  select or unselect every object in this drawing

  Parameters:
    `state` - if true, selectAll, otherwise unselect all.

### select

    public void select(Collection c,
                       boolean incremental)

  select the elements in the given collection (if they belong to the drawing)

  Parameters:
    `incremental` - if true, add to the existing selection ; replace otherwise.

### select

    public void select(Element obj,
                       boolean incremental)

  select the given element

  Parameters:
    `incremental` - if true, add to the existing selection ; replace otherwise.

### unSelect

    public void unSelect(Element obj)

  unselect the given object

### deleteSelection

    public void deleteSelection()

  remove all selected objects from the drawing

### paste

    public void paste(Clipboard clipbrd,
                      boolean translate)
               throws ParserException,
                      IOException,
                      UnsupportedFlavorException

  Add the content of the given ClipBoard to the current drawing, then select it. If only DataFlavor.stringFlavor is provided by the Transferable, we try to parse the string and insert the parsed content. Otherwise, it's taken for granted that the ClipBoard content support the jpicedt.graphic.toolkit.TransferableGraphic.JPICEDT_DATA_FLAVOR data flavor.

  Parameters:
    `translate` - if true, translate the pasted content by a grid step so that it doesn't hide old one
  Throws:
    `ParserException`
    `IOException`
    `UnsupportedFlavorException`

### paste

    public void paste(boolean translate)
               throws ParserException,
                      IOException,
                      UnsupportedFlavorException

  Add the content of the System's ClipBoard to the current drawing, then select it. More specifically, we try to parse the string and insert the parsed content.

  Parameters:
    `translate` - if true, translate the pasted content by a grid step so that it doesn't hide old one
  Throws:
    `ParserException`
    `IOException`
    `UnsupportedFlavorException`

### copy

    public void copy(Clipboard clipbrd)

  Copy the content of the current selection (through a GraphicTransferable) to the System's clipboard (after a formatting to text), AND to the given clipboard if non-null (the latter can be a local clipboard supporting more data-flavors than the system clipboard)

  Parameters:
    `clipbrd` - the target clipboard ; can be null, in which case only the System clipboard is modified.

### copy

    public void copy()

  Copy the content of the current selection to the System's clipboard (after a formatting to text)

### cut

    public void cut(Clipboard clipbrd)

  Cut the content of the current selection (through a GraphicTransferable) to the System clipboard, AND to the given ClipBoard if non-null.

  Parameters:
    `clipbrd` - the target clipboard ; can be null, in which case only the System clipboard is modified.

### cut

    public void cut()

  Cut the content of the current selection to the System clipboard, after formatting to text.

### groupSelection

    public void groupSelection()

  group all selected objects into a new PicGroup and add it to the drawing.

  Since:
    jPicEdt 1.2.a

### unGroup

    public void unGroup(PicGroup g)

  fetch all Element's belonging to the given PicGroup and add them to its parent, removing the given PicGroup from its parent afterward.

### joinSelection

    public void joinSelection()

  join all selected objects of type PicMultiCurveConvertable into a new PicMulticurve and add it to the drawing.

  Since:
    jPicEdt 1.4.pre5

### fireSelectionUpdate

    protected void fireSelectionUpdate(Element element,
                                       SelectionEvent.EventType type)

  Notify all listeners that have registered interest for notification on this event type.

  Parameters:
    `element` - the Element that was (un)selected
    `type` - the event type

### fireSelectionUpdate

    protected void fireSelectionUpdate(Element[] elements,
                                       SelectionEvent.EventType type)

  Notify all listeners that have registered interest for notification on this event type.

  Parameters:
    `elements` - the Element's that were (un)selected
    `type` - the event type

### addSelectionListener

    public void addSelectionListener(SelectionListener l)

  adds a SelectionListener to the Canvas

### removeSelectionListener

    public void removeSelectionListener(SelectionListener l)

  removes a SelectionListener from the Canvas

### getPreferredScrollableViewportSize

    public Dimension getPreferredScrollableViewportSize()

  Specified by:
    `getPreferredScrollableViewportSize` in interface `Scrollable`
  Returns:
    the drawing board size (aka ScrollPane's View size, as opposed to ViewPort's size)

### getScrollableUnitIncrement

    public int getScrollableUnitIncrement(Rectangle visibleRect,
                                          int orientation,
                                          int direction)

  Specified by:
    `getScrollableUnitIncrement` in interface `Scrollable`
  Returns:
    a grid step

### getScrollableBlockIncrement

    public int getScrollableBlockIncrement(Rectangle visibleRect,
                                           int orientation,
                                           int direction)

  Specified by:
    `getScrollableBlockIncrement` in interface `Scrollable`
  Returns:
    the viewport size minus a grid step

### getScrollableTracksViewportWidth

    public boolean getScrollableTracksViewportWidth()

  Specified by:
    `getScrollableTracksViewportWidth` in interface `Scrollable`
  Returns:
    false for this implementation

### getScrollableTracksViewportHeight

    public boolean getScrollableTracksViewportHeight()

  Specified by:
    `getScrollableTracksViewportHeight` in interface `Scrollable`
  Returns:
    false for this implementation

### isRequestFocusEnabled

    public boolean isRequestFocusEnabled()

  Overriden from JComponent Signals that this component can receive focus (useful for handling keyevents)

### addPEMouseInputListener

    public void addPEMouseInputListener(PEMouseInputListener l)

  Adds the specified mouse listener to receive mouse events from this component. If l is null, no exception is thrown and no action is performed.

  Parameters:
    `l` - the mouse listener.

### removePEMouseInputListener

    public void removePEMouseInputListener(PEMouseInputListener l)

  Removes the specified mouse listener so that it no longer receives mouse events from this component. This method performs no function, nor does it throw an exception, if the listener specified by the argument was not previously added to this component. If l is null, no exception is thrown and no action is performed.

  Parameters:
    `l` - the mouse listener.

### processMouseEvent

    protected void processMouseEvent(MouseEvent e)

  Processes mouse events occurring on this component by dispatching them to any registered `PEMouseListener` objects.

  Parameters:
    `e` - the mouse event.

### processMouseMotionEvent

    protected void processMouseMotionEvent(MouseEvent e)

  Processes mouse motion events occurring on this component by dispatching them to any registered `PEMouseInputListener` objects.

  Parameters:
    `e` - the mouse motion event.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| http://www.jpicedt.org
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug : syd@jpicedt.org