org.jhotdraw.draw
Class DefaultDrawingView

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by org.jhotdraw.draw.DefaultDrawingView
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, EditableComponent, DrawingView

public class DefaultDrawingView
extends javax.swing.JComponent
implements DrawingView, EditableComponent

A default implementation of DrawingView suited for viewing drawings with a small number of figures. FIXME - Implement clone Method. FIXME - Use double buffering for the drawing to improve performance.

Version:
$Id: DefaultDrawingView.java 576 2009-10-18 15:23:32Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Nested Class Summary
private  class DefaultDrawingView.EventHandler
           
 
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
private  Handle activeHandle
           
protected  java.awt.image.BufferedImage backgroundTile
           
private  java.awt.Rectangle bufferedArea
          Holds the drawing area (in view coordinates) which is in the drawing buffer.
private  java.awt.geom.Rectangle2D.Double cachedDrawingArea
           
private  java.awt.Dimension cachedPreferredSize
           
private static boolean DEBUG
          Set this to true to turn on debugging output on System.out.
private  int detailLevel
           
private  java.awt.Rectangle dirtyArea
          Holds the drawing area (in view coordinates) which has not been redrawn yet in the drawing buffer.
private  Drawing drawing
           
static java.lang.String DRAWING_DOUBLE_BUFFERED_PROPERTY
           
private  java.awt.image.BufferedImage drawingBufferNV
          The drawingBuffer holds a rendered image of the drawing (in view coordinates).
private  java.awt.image.VolatileImage drawingBufferV
          The drawingBuffer holds a rendered image of the drawing (in view coordinates).
private  DrawingEditor editor
           
private  javax.swing.JLabel emptyDrawingLabel
           
private  DefaultDrawingView.EventHandler eventHandler
           
private  FigureListener handleInvalidator
           
private  boolean handlesAreValid
           
private  Constrainer invisibleConstrainer
           
private  boolean isConstrainerVisible
           
private  boolean isDrawingDoubleBuffered
          Whether the drawing is double buffered
private static boolean isWindows
           
private  boolean paintEnabled
           
private  double scaleFactor
           
private  Handle secondaryHandleOwner
           
private  java.util.LinkedList<Handle> secondaryHandles
           
private  java.util.Set<Figure> selectedFigures
          Holds the selected figures in an ordered put.
private  java.util.LinkedList<Handle> selectionHandles
           
private  java.awt.Point translation
           
private  Constrainer visibleConstrainer
           
 
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 org.jhotdraw.draw.DrawingView
ACTIVE_HANDLE_PROPERTY, CONSTRAINER_PROPERTY, CONSTRAINER_VISIBLE_PROPERTY, CURSOR_PROPERTY, DRAWING_PROPERTY, ENABLED_PROPERTY, HANDLE_DETAIL_LEVEL_PROPERTY, INVISIBLE_CONSTRAINER_PROPERTY, SCALE_FACTOR_PROPERTY, VISIBLE_CONSTRAINER_PROPERTY
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DefaultDrawingView()
          Creates new instance.
 
Method Summary
 void addFigureSelectionListener(FigureSelectionListener fsl)
          Add a listener for selection changes in this DrawingView.
 void addNotify(DrawingEditor editor)
          Informs the view that it has been added to the specified editor.
 void addToSelection(java.util.Collection<Figure> figures)
          Adds a collection of figures to the current selection.
 void addToSelection(Figure figure)
          Adds a figure to the current selection.
 void clearSelection()
          Clears the current selection.
protected  DefaultDrawingView.EventHandler createEventHandler()
           
 void delete()
          Deletes the component at (or after) the caret position.
protected  void drawBackground(java.awt.Graphics2D g)
          Draws the background of the drawing view.
protected  void drawCanvas(java.awt.Graphics2D g)
          Draws the canvas.
protected  void drawConstrainer(java.awt.Graphics2D g)
           
protected  void drawDrawing(java.awt.Graphics2D gr)
           
protected  void drawDrawingNonvolatileBuffered(java.awt.Graphics2D g)
          Draws the drawing double buffered using a buffered image.
protected  void drawDrawingVolatileBuffered(java.awt.Graphics2D g)
          Draws the drawing double buffered using a volatile image.
protected  void drawHandles(java.awt.Graphics2D g)
           
 java.awt.Point drawingToView(java.awt.geom.Point2D.Double p)
          Converts drawing coordinates to view coordinates.
 java.awt.Rectangle drawingToView(java.awt.geom.Rectangle2D.Double r)
          Converts drawing coordinates to view coordinates.
protected  void drawTool(java.awt.Graphics2D g)
           
 void duplicate()
          Duplicates the selected region.
 Figure findFigure(java.awt.Point p)
          Finds a figure at a given coordinates.
 java.util.Collection<Figure> findFigures(java.awt.Rectangle r)
          Returns all figures that lie within or intersect the specified bounds.
 java.util.Collection<Figure> findFiguresWithin(java.awt.Rectangle r)
          Returns all figures that lie within the specified bounds.
 Handle findHandle(java.awt.Point p)
          Finds a handle at a given coordinates.
protected  void fireSelectionChanged(java.util.Set<Figure> oldValue, java.util.Set<Figure> newValue)
          Notify all listenerList that have registered interest for notification on this event type.
protected  void fireViewTransformChanged()
           
 Handle getActiveHandle()
          Gets the active handle.
protected  java.awt.Paint getBackgroundPaint(int x, int y)
          Returns a paint for drawing the background of the drawing area.
protected  java.awt.Rectangle getCanvasViewBounds()
          Returns the bounds of the canvas on the drawing view.
 java.util.Collection<Handle> getCompatibleHandles(Handle master)
          Gets compatible handles.
 javax.swing.JComponent getComponent()
          Returns the JComponent of the drawing view.
 Constrainer getConstrainer()
          Gets the current constrainer of this view.
 Drawing getDrawing()
          Gets the drawing.
protected  java.awt.geom.Rectangle2D.Double getDrawingArea()
           
 java.awt.geom.AffineTransform getDrawingToViewTransform()
          Gets an transform which can be used to convert drawing coordinates to view coordinates.
 DrawingEditor getEditor()
          Gets the drawing editor associated to the DrawingView.
 java.lang.String getEmptyDrawingMessage()
           
 int getHandleDetailLevel()
          Returns the detail level of the handles.
 Constrainer getInvisibleConstrainer()
          Gets the editor's constrainer for this view, for use, when the visible constrainer is turned off.
 java.awt.Dimension getPreferredSize()
           
 double getScaleFactor()
          Gets the scale factor of the drawing view.
private  java.util.List<Handle> getSecondaryHandles()
          Gets the currently active secondary handles.
 java.util.Set<Figure> getSelectedFigures()
          Gets the current selection as a FigureSelection.
 int getSelectionCount()
          Gets the number of selected figures.
private  java.util.List<Handle> getSelectionHandles()
          Gets the currently active selection handles.
 java.lang.String getToolTipText(java.awt.event.MouseEvent evt)
           
 Constrainer getVisibleConstrainer()
          Gets the editor's constrainer for this view, for use, when the visible constrainer is turned on.
private  void initComponents()
          This method is called from within the constructor to initialize the form.
 void invalidate()
           
protected  void invalidateDimension()
           
private  void invalidateHandles()
          Invalidates the handles.
 boolean isConstrainerVisible()
          Returns true, if the visible Constrainer is in use, returns false, if the invisible Constrainer is in use.
 boolean isDrawingDoubleBuffered()
          Returns true, if the the drawing is double buffered.
 boolean isFigureSelected(Figure checkFigure)
          Test whether a given figure is selected.
 void paint(java.awt.Graphics g)
           
 void paintComponent(java.awt.Graphics gr)
          Paints the drawing view.
 void printComponent(java.awt.Graphics gr)
          Prints the drawing view.
 void removeFigureSelectionListener(FigureSelectionListener fsl)
          Remove a listener for selection changes in this DrawingView.
 void removeFromSelection(Figure figure)
          Removes a figure from the selection.
 void removeNotify()
           
 void removeNotify(DrawingEditor editor)
          Informs the view that it has been removed from the specified editor.
protected  void repaintDrawingArea(java.awt.geom.Rectangle2D.Double r)
           
 void repaintHandles()
          Repaints the handles of the view.
 void selectAll()
          Selects all selectable figures.
 void setActiveHandle(Handle newValue)
          Sets the active handle.
 void setBackground(java.awt.Color c)
           
 void setBounds(int x, int y, int width, int height)
          Side effect: Changes view Translation.
 void setConstrainerVisible(boolean newValue)
          Changes between a visible Constrainer and an invisible Constrainer.
 void setDrawing(Drawing newValue)
          Sets and installs another drawing in the view.
 void setDrawingDoubleBuffered(boolean newValue)
          Sets whether the drawing is double buffered.
 void setEmptyDrawingMessage(java.lang.String newValue)
           
 void setEnabled(boolean b)
          Sets the enabled state of the drawing view.
 void setHandleDetailLevel(int newValue)
          The detail level of the handles.
 void setInvisibleConstrainer(Constrainer newValue)
          Sets the editor's constrainer for this view, for use, when the visible constrainer is turned off.
 void setScaleFactor(double newValue)
          Sets the scale factor of the drawing view.
protected  void setViewRenderingHints(java.awt.Graphics2D g)
           
 void setVisibleConstrainer(Constrainer newValue)
          Sets the editor's constrainer for this view, for use, when the visible constrainer is turned on.
 void toggleSelection(Figure figure)
          If a figure isn't selected it is added to the selection.
private  void validateHandles()
          Validates the handles.
private  void validateViewTranslation()
          Updates the view translation taking into account the current dimension of the view JComponent, the size of the drawing, and the scale factor.
 java.awt.geom.Point2D.Double viewToDrawing(java.awt.Point p)
          Converts view coordinates to drawing coordinates.
 java.awt.geom.Rectangle2D.Double viewToDrawing(java.awt.Rectangle r)
          Converts view coordinates to drawing coordinates.
 
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, 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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, 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, 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, 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
 
Methods inherited from interface org.jhotdraw.draw.DrawingView
addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, isEnabled, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, requestFocus, setCursor
 

Field Detail

DEBUG

private static final boolean DEBUG
Set this to true to turn on debugging output on System.out.

See Also:
Constant Field Values

drawing

private Drawing drawing

selectedFigures

private java.util.Set<Figure> selectedFigures
Holds the selected figures in an ordered put. The ordering reflects the sequence that was used to select the figures.


selectionHandles

private java.util.LinkedList<Handle> selectionHandles

isConstrainerVisible

private boolean isConstrainerVisible

visibleConstrainer

private Constrainer visibleConstrainer

invisibleConstrainer

private Constrainer invisibleConstrainer

secondaryHandleOwner

private Handle secondaryHandleOwner

activeHandle

private Handle activeHandle

secondaryHandles

private java.util.LinkedList<Handle> secondaryHandles

handlesAreValid

private boolean handlesAreValid

cachedPreferredSize

private transient java.awt.Dimension cachedPreferredSize

scaleFactor

private double scaleFactor

translation

private java.awt.Point translation

detailLevel

private int detailLevel

editor

private DrawingEditor editor

emptyDrawingLabel

private javax.swing.JLabel emptyDrawingLabel

backgroundTile

protected java.awt.image.BufferedImage backgroundTile

handleInvalidator

private FigureListener handleInvalidator

cachedDrawingArea

private transient java.awt.geom.Rectangle2D.Double cachedDrawingArea

DRAWING_DOUBLE_BUFFERED_PROPERTY

public static final java.lang.String DRAWING_DOUBLE_BUFFERED_PROPERTY
See Also:
Constant Field Values

isDrawingDoubleBuffered

private boolean isDrawingDoubleBuffered
Whether the drawing is double buffered


drawingBufferV

private java.awt.image.VolatileImage drawingBufferV
The drawingBuffer holds a rendered image of the drawing (in view coordinates).


drawingBufferNV

private java.awt.image.BufferedImage drawingBufferNV
The drawingBuffer holds a rendered image of the drawing (in view coordinates).


bufferedArea

private java.awt.Rectangle bufferedArea
Holds the drawing area (in view coordinates) which is in the drawing buffer.


dirtyArea

private java.awt.Rectangle dirtyArea
Holds the drawing area (in view coordinates) which has not been redrawn yet in the drawing buffer.


paintEnabled

private boolean paintEnabled

isWindows

private static final boolean isWindows

eventHandler

private DefaultDrawingView.EventHandler eventHandler
Constructor Detail

DefaultDrawingView

public DefaultDrawingView()
Creates new instance.

Method Detail

repaintHandles

public void repaintHandles()
Description copied from interface: DrawingView
Repaints the handles of the view.

Specified by:
repaintHandles in interface DrawingView

drawBackground

protected void drawBackground(java.awt.Graphics2D g)
Draws the background of the drawing view.


setBackground

public void setBackground(java.awt.Color c)
Overrides:
setBackground in class javax.swing.JComponent

createEventHandler

protected DefaultDrawingView.EventHandler createEventHandler()

initComponents

private void initComponents()
This method is called from within the constructor to initialize the form.

WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.

NOTE: To prevent undesired layout effects when using floating text fields, the DefaultDrawingView must not use a layout manager.


getDrawing

public Drawing getDrawing()
Description copied from interface: DrawingView
Gets the drawing. This is a bound property.

Specified by:
getDrawing in interface DrawingView

getToolTipText

public java.lang.String getToolTipText(java.awt.event.MouseEvent evt)
Overrides:
getToolTipText in class javax.swing.JComponent

setEmptyDrawingMessage

public void setEmptyDrawingMessage(java.lang.String newValue)

getEmptyDrawingMessage

public java.lang.String getEmptyDrawingMessage()

paintComponent

public void paintComponent(java.awt.Graphics gr)
Paints the drawing view. Uses rendering hints for fast painting. Paints the canvasColor, the grid, the drawing, the handles and the current tool.

Overrides:
paintComponent in class javax.swing.JComponent

drawDrawingVolatileBuffered

protected void drawDrawingVolatileBuffered(java.awt.Graphics2D g)
Draws the drawing double buffered using a volatile image.


drawDrawingNonvolatileBuffered

protected void drawDrawingNonvolatileBuffered(java.awt.Graphics2D g)
Draws the drawing double buffered using a buffered image.


printComponent

public void printComponent(java.awt.Graphics gr)
Prints the drawing view. Uses high quality rendering hints for printing. Only prints the drawing. Doesn't print the canvasColor, the grid, the handles and the tool.

Overrides:
printComponent in class javax.swing.JComponent

setViewRenderingHints

protected void setViewRenderingHints(java.awt.Graphics2D g)

getCanvasViewBounds

protected java.awt.Rectangle getCanvasViewBounds()
Returns the bounds of the canvas on the drawing view.

Returns:
The current bounds of the canvas on the drawing view.

drawCanvas

protected void drawCanvas(java.awt.Graphics2D g)
Draws the canvas. If the AttributeKeys.CANVAS_FILL_OPACITY is not fully opaque, the canvas area is filled with the background paint before the AttributeKeys.CANVAS_FILL_COLOR is drawn.


drawConstrainer

protected void drawConstrainer(java.awt.Graphics2D g)

drawDrawing

protected void drawDrawing(java.awt.Graphics2D gr)

drawHandles

protected void drawHandles(java.awt.Graphics2D g)

drawTool

protected void drawTool(java.awt.Graphics2D g)

setDrawing

public void setDrawing(Drawing newValue)
Description copied from interface: DrawingView
Sets and installs another drawing in the view. This is a bound property.

Specified by:
setDrawing in interface DrawingView

paint

public void paint(java.awt.Graphics g)
Overrides:
paint in class javax.swing.JComponent

repaintDrawingArea

protected void repaintDrawingArea(java.awt.geom.Rectangle2D.Double r)

invalidate

public void invalidate()
Overrides:
invalidate in class java.awt.Container

removeNotify

public void removeNotify()
Overrides:
removeNotify in class javax.swing.JComponent

addToSelection

public void addToSelection(Figure figure)
Adds a figure to the current selection.

Specified by:
addToSelection in interface DrawingView

addToSelection

public void addToSelection(java.util.Collection<Figure> figures)
Adds a collection of figures to the current selection.

Specified by:
addToSelection in interface DrawingView

removeFromSelection

public void removeFromSelection(Figure figure)
Removes a figure from the selection.

Specified by:
removeFromSelection in interface DrawingView

toggleSelection

public void toggleSelection(Figure figure)
If a figure isn't selected it is added to the selection. Otherwise it is removed from the selection.

Specified by:
toggleSelection in interface DrawingView

setEnabled

public void setEnabled(boolean b)
Description copied from interface: DrawingView
Sets the enabled state of the drawing view. This is a bound property.

Specified by:
setEnabled in interface DrawingView
Overrides:
setEnabled in class javax.swing.JComponent

selectAll

public void selectAll()
Selects all selectable figures.

Specified by:
selectAll in interface EditableComponent
Specified by:
selectAll in interface DrawingView

clearSelection

public void clearSelection()
Clears the current selection.

Specified by:
clearSelection in interface EditableComponent
Specified by:
clearSelection in interface DrawingView

isFigureSelected

public boolean isFigureSelected(Figure checkFigure)
Test whether a given figure is selected.

Specified by:
isFigureSelected in interface DrawingView

getSelectedFigures

public java.util.Set<Figure> getSelectedFigures()
Gets the current selection as a FigureSelection. A FigureSelection can be cut, copied, pasted.

Specified by:
getSelectedFigures in interface DrawingView

getSelectionCount

public int getSelectionCount()
Gets the number of selected figures.

Specified by:
getSelectionCount in interface DrawingView

getSelectionHandles

private java.util.List<Handle> getSelectionHandles()
Gets the currently active selection handles.


getSecondaryHandles

private java.util.List<Handle> getSecondaryHandles()
Gets the currently active secondary handles.


invalidateHandles

private void invalidateHandles()
Invalidates the handles.


validateHandles

private void validateHandles()
Validates the handles.


findHandle

public Handle findHandle(java.awt.Point p)
Finds a handle at a given coordinates.

Specified by:
findHandle in interface DrawingView
Returns:
A handle, null if no handle is found.

getCompatibleHandles

public java.util.Collection<Handle> getCompatibleHandles(Handle master)
Gets compatible handles.

Specified by:
getCompatibleHandles in interface DrawingView
Returns:
A collection containing the handle and all compatible handles.

findFigure

public Figure findFigure(java.awt.Point p)
Finds a figure at a given coordinates.

Specified by:
findFigure in interface DrawingView
Returns:
A figure, null if no figure is found.

findFigures

public java.util.Collection<Figure> findFigures(java.awt.Rectangle r)
Description copied from interface: DrawingView
Returns all figures that lie within or intersect the specified bounds. The figures are returned in Z-order from back to front.

Specified by:
findFigures in interface DrawingView

findFiguresWithin

public java.util.Collection<Figure> findFiguresWithin(java.awt.Rectangle r)
Description copied from interface: DrawingView
Returns all figures that lie within the specified bounds. The figures are returned in Z-order from back to front.

Specified by:
findFiguresWithin in interface DrawingView

addFigureSelectionListener

public void addFigureSelectionListener(FigureSelectionListener fsl)
Description copied from interface: DrawingView
Add a listener for selection changes in this DrawingView.

Specified by:
addFigureSelectionListener in interface DrawingView
Parameters:
fsl - jhotdraw.framework.FigureSelectionListener

removeFigureSelectionListener

public void removeFigureSelectionListener(FigureSelectionListener fsl)
Description copied from interface: DrawingView
Remove a listener for selection changes in this DrawingView.

Specified by:
removeFigureSelectionListener in interface DrawingView
Parameters:
fsl - jhotdraw.framework.FigureSelectionListener

fireSelectionChanged

protected void fireSelectionChanged(java.util.Set<Figure> oldValue,
                                    java.util.Set<Figure> newValue)
Notify all listenerList that have registered interest for notification on this event type.


invalidateDimension

protected void invalidateDimension()

getConstrainer

public Constrainer getConstrainer()
Description copied from interface: DrawingView
Gets the current constrainer of this view. If isConstrainerVisible is true, this method returns getVisibleConstrainer, otherwise it returns getInvisibleConstrainer. This is a bound property.

Specified by:
getConstrainer in interface DrawingView

getPreferredSize

public java.awt.Dimension getPreferredSize()
Overrides:
getPreferredSize in class javax.swing.JComponent

getDrawingArea

protected java.awt.geom.Rectangle2D.Double getDrawingArea()

setBounds

public void setBounds(int x,
                      int y,
                      int width,
                      int height)
Side effect: Changes view Translation.

Overrides:
setBounds in class java.awt.Component

validateViewTranslation

private void validateViewTranslation()
Updates the view translation taking into account the current dimension of the view JComponent, the size of the drawing, and the scale factor.


drawingToView

public java.awt.Point drawingToView(java.awt.geom.Point2D.Double p)
Converts drawing coordinates to view coordinates.

Specified by:
drawingToView in interface DrawingView

drawingToView

public java.awt.Rectangle drawingToView(java.awt.geom.Rectangle2D.Double r)
Description copied from interface: DrawingView
Converts drawing coordinates to view coordinates.

Specified by:
drawingToView in interface DrawingView

viewToDrawing

public java.awt.geom.Point2D.Double viewToDrawing(java.awt.Point p)
Converts view coordinates to drawing coordinates.

Specified by:
viewToDrawing in interface DrawingView

viewToDrawing

public java.awt.geom.Rectangle2D.Double viewToDrawing(java.awt.Rectangle r)
Description copied from interface: DrawingView
Converts view coordinates to drawing coordinates.

Specified by:
viewToDrawing in interface DrawingView

getComponent

public javax.swing.JComponent getComponent()
Description copied from interface: DrawingView
Returns the JComponent of the drawing view.

Specified by:
getComponent in interface DrawingView

getScaleFactor

public double getScaleFactor()
Description copied from interface: DrawingView
Gets the scale factor of the drawing view. This is a bound property.

Specified by:
getScaleFactor in interface DrawingView

setScaleFactor

public void setScaleFactor(double newValue)
Description copied from interface: DrawingView
Sets the scale factor of the drawing view. This is a bound property.

Specified by:
setScaleFactor in interface DrawingView

fireViewTransformChanged

protected void fireViewTransformChanged()

setHandleDetailLevel

public void setHandleDetailLevel(int newValue)
Description copied from interface: DrawingView
The detail level of the handles. This is a bound property.

Specified by:
setHandleDetailLevel in interface DrawingView

getHandleDetailLevel

public int getHandleDetailLevel()
Description copied from interface: DrawingView
Returns the detail level of the handles. This is a bound property.

Specified by:
getHandleDetailLevel in interface DrawingView

getDrawingToViewTransform

public java.awt.geom.AffineTransform getDrawingToViewTransform()
Description copied from interface: DrawingView
Gets an transform which can be used to convert drawing coordinates to view coordinates.

Specified by:
getDrawingToViewTransform in interface DrawingView

delete

public void delete()
Description copied from interface: EditableComponent
Deletes the component at (or after) the caret position.

Specified by:
delete in interface EditableComponent

duplicate

public void duplicate()
Description copied from interface: EditableComponent
Duplicates the selected region.

Specified by:
duplicate in interface EditableComponent

removeNotify

public void removeNotify(DrawingEditor editor)
Description copied from interface: DrawingView
Informs the view that it has been removed from the specified editor. The view must not draw the tool from the editor anymore.

Specified by:
removeNotify in interface DrawingView

addNotify

public void addNotify(DrawingEditor editor)
Description copied from interface: DrawingView
Informs the view that it has been added to the specified editor. The view must draw the tool of the editor, if getActiveView() of the editor returns the view.

Specified by:
addNotify in interface DrawingView

setVisibleConstrainer

public void setVisibleConstrainer(Constrainer newValue)
Description copied from interface: DrawingView
Sets the editor's constrainer for this view, for use, when the visible constrainer is turned on. This is a bound property.

Specified by:
setVisibleConstrainer in interface DrawingView

getVisibleConstrainer

public Constrainer getVisibleConstrainer()
Description copied from interface: DrawingView
Gets the editor's constrainer for this view, for use, when the visible constrainer is turned on. This is a bound property.

Specified by:
getVisibleConstrainer in interface DrawingView

setInvisibleConstrainer

public void setInvisibleConstrainer(Constrainer newValue)
Description copied from interface: DrawingView
Sets the editor's constrainer for this view, for use, when the visible constrainer is turned off. This is a bound property.

Specified by:
setInvisibleConstrainer in interface DrawingView

getInvisibleConstrainer

public Constrainer getInvisibleConstrainer()
Description copied from interface: DrawingView
Gets the editor's constrainer for this view, for use, when the visible constrainer is turned off. This is a bound property.

Specified by:
getInvisibleConstrainer in interface DrawingView

setConstrainerVisible

public void setConstrainerVisible(boolean newValue)
Description copied from interface: DrawingView
Changes between a visible Constrainer and an invisible Constrainer. This is a bound property.

Specified by:
setConstrainerVisible in interface DrawingView

isConstrainerVisible

public boolean isConstrainerVisible()
Description copied from interface: DrawingView
Returns true, if the visible Constrainer is in use, returns false, if the invisible Constrainer is in use. This is a bound property.

Specified by:
isConstrainerVisible in interface DrawingView

setDrawingDoubleBuffered

public void setDrawingDoubleBuffered(boolean newValue)
Sets whether the drawing is double buffered.

The default value is true.

This is a bound property.

If the drawing view is used for editing, you should leave this to true. If the drawing view is used for viewing only, you should set this to false.


isDrawingDoubleBuffered

public boolean isDrawingDoubleBuffered()
Returns true, if the the drawing is double buffered.


getBackgroundPaint

protected java.awt.Paint getBackgroundPaint(int x,
                                            int y)
Returns a paint for drawing the background of the drawing area.

Returns:
Paint.

getEditor

public DrawingEditor getEditor()
Description copied from interface: DrawingView
Gets the drawing editor associated to the DrawingView. This is a bound property.

Specified by:
getEditor in interface DrawingView

setActiveHandle

public void setActiveHandle(Handle newValue)
Description copied from interface: DrawingView
Sets the active handle.

Specified by:
setActiveHandle in interface DrawingView

getActiveHandle

public Handle getActiveHandle()
Description copied from interface: DrawingView
Gets the active handle.

Specified by:
getActiveHandle in interface DrawingView