CH.ifa.draw.standard
Class StandardDrawingView

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 CH.ifa.draw.standard.StandardDrawingView
All Implemented Interfaces:
DrawingChangeListener, DrawingView, java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible

public class StandardDrawingView
extends javax.swing.JPanel
implements DrawingView, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.KeyListener

The standard implementation of DrawingView.

See Also:
DrawingView, Painter, Tool, 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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.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.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
StandardDrawingView(DrawingEditor editor, int width, int height)
          Constructs the view.
 
Method Summary
 Figure add(Figure figure)
          Adds a figure to the drawing.
 void addAll(java.util.Vector figures)
          Adds a vector of figures to the drawing.
 void addBackground(Painter painter)
          Adds a background.
 void addForeground(Painter painter)
          Adds a foreground.
 void addToSelection(Figure figure)
          Adds a figure to the current selection.
 void addToSelectionAll(java.util.Vector figures)
          Adds a vector of figures to the current selection.
 void checkDamage()
          Refreshes the drawing if there is some accumulated damage
 void clearSelection()
          Clears the current selection.
protected  java.awt.Point constrainPoint(java.awt.Point p)
          Constrains a point to the current grid.
 void drawAll(java.awt.Graphics g)
          Draws the contents of the drawing view.
 void drawBackground(java.awt.Graphics g)
          Draws the background.
 void drawDrawing(java.awt.Graphics g)
          Draws the drawing.
 void drawHandles(java.awt.Graphics g)
          Draws the currently active handles.
 Drawing drawing()
          Gets the drawing.
 void drawingInvalidated(DrawingChangeEvent e)
          Sent when an area is invalid
 void drawingRequestUpdate(DrawingChangeEvent e)
          Sent when the drawing wants to be refreshed
 DrawingEditor editor()
          Gets the editor.
 Handle findHandle(int x, int y)
          Finds a handle at the given coordinates.
 void freezeView()
          Freezes the view by acquiring the drawing lock.
 PointConstrainer getConstrainer()
          Gets the current constrainer.
 FigureSelection getFigureSelection()
          Gets the current selection as a FigureSelection.
 java.awt.Dimension getMinimumSize()
          Gets the minimum dimension of the drawing.
 java.awt.Dimension getPreferredSize()
          Gets the preferred dimension of the drawing..
protected  void handleCursorKey(int key)
          Handles cursor keys by moving all the selected figures one grid point in the cursor direction.
 boolean isFocusTraversable()
           
 void keyPressed(java.awt.event.KeyEvent e)
          Handles key down events.
 void keyReleased(java.awt.event.KeyEvent e)
           
 void keyTyped(java.awt.event.KeyEvent e)
           
 java.awt.Point lastClick()
          Gets the position of the last click inside the view.
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseDragged(java.awt.event.MouseEvent e)
          Handles mouse drag events.
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mouseMoved(java.awt.event.MouseEvent e)
          Handles mouse move events.
 void mousePressed(java.awt.event.MouseEvent e)
          Handles mouse down events.
 void mouseReleased(java.awt.event.MouseEvent e)
          Handles mouse up events.
 void paint(java.awt.Graphics g)
          Paints the drawing view.
 Figure remove(Figure figure)
          Removes a figure from the drawing.
 void removeBackground(Painter painter)
          Removes a background.
 void removeForeground(Painter painter)
          Removes a foreground.
 void removeFromSelection(Figure figure)
          Removes a figure from the selection.
 void repairDamage()
          Repair the damaged area
 java.util.Vector selection()
          Gets the currently selected figures.
protected  void selectionChanged()
          Informs that the current selection changed.
 int selectionCount()
          Gets the number of selected figures.
 FigureEnumeration selectionElements()
          Gets an enumeration over the currently selected figures.
 java.util.Vector selectionZOrdered()
          Gets the currently selected figures in Z order.
 void setConstrainer(PointConstrainer c)
          Sets the grid spacing that is used to constrain points.
 void setDisplayUpdate(Painter updateStrategy)
          Sets the current display update strategy.
 void setDrawing(Drawing d)
          Sets and installs another drawing in the view.
 void setEditor(DrawingEditor editor)
          Sets the view's editor.
 void toggleSelection(Figure figure)
          If a figure isn't selected it is added to the selection.
 Tool tool()
          Gets the current tool.
 void unfreezeView()
          Unfreezes the view by releasing the drawing lock.
 void update(java.awt.Graphics g)
          Updates the drawing view.
 
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, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction
 
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, 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, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface CH.ifa.draw.framework.DrawingView
createImage, getBackground, getGraphics, getSize, setBackground, setCursor
 
Methods inherited from interface java.awt.image.ImageObserver
imageUpdate
 

Constructor Detail

StandardDrawingView

public StandardDrawingView(DrawingEditor editor,
                           int width,
                           int height)
Constructs the view.

Method Detail

setEditor

public void setEditor(DrawingEditor editor)
Sets the view's editor.

Specified by:
setEditor in interface DrawingView

tool

public Tool tool()
Gets the current tool.

Specified by:
tool in interface DrawingView

drawing

public Drawing drawing()
Gets the drawing.

Specified by:
drawing in interface DrawingView

setDrawing

public void setDrawing(Drawing d)
Sets and installs another drawing in the view.

Specified by:
setDrawing in interface DrawingView

editor

public DrawingEditor editor()
Gets the editor.

Specified by:
editor in interface DrawingView

add

public Figure add(Figure figure)
Adds a figure to the drawing.

Specified by:
add in interface DrawingView
Returns:
the added figure.

remove

public Figure remove(Figure figure)
Removes a figure from the drawing.

Specified by:
remove in interface DrawingView
Returns:
the removed figure

addAll

public void addAll(java.util.Vector figures)
Adds a vector of figures to the drawing.

Specified by:
addAll in interface DrawingView

getMinimumSize

public java.awt.Dimension getMinimumSize()
Gets the minimum dimension of the drawing.

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

getPreferredSize

public java.awt.Dimension getPreferredSize()
Gets the preferred dimension of the drawing..

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

setDisplayUpdate

public void setDisplayUpdate(Painter updateStrategy)
Sets the current display update strategy.

Specified by:
setDisplayUpdate in interface DrawingView
See Also:
Painter

selection

public java.util.Vector selection()
Gets the currently selected figures.

Specified by:
selection in interface DrawingView
Returns:
a vector with the selected figures. The vector is a copy of the current selection.

selectionElements

public FigureEnumeration selectionElements()
Gets an enumeration over the currently selected figures.

Specified by:
selectionElements in interface DrawingView

selectionZOrdered

public java.util.Vector selectionZOrdered()
Gets the currently selected figures in Z order.

Specified by:
selectionZOrdered in interface DrawingView
Returns:
a vector with the selected figures. The vector is a copy of the current selection.
See Also:
selection()

selectionCount

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

Specified by:
selectionCount in interface DrawingView

addToSelection

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

Specified by:
addToSelection in interface DrawingView

addToSelectionAll

public void addToSelectionAll(java.util.Vector figures)
Adds a vector of figures to the current selection.

Specified by:
addToSelectionAll 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

clearSelection

public void clearSelection()
Clears the current selection.

Specified by:
clearSelection in interface DrawingView

getFigureSelection

public FigureSelection getFigureSelection()
Gets the current selection as a FigureSelection. A FigureSelection can be cut, copied, pasted.

Specified by:
getFigureSelection in interface DrawingView

findHandle

public Handle findHandle(int x,
                         int y)
Finds a handle at the given coordinates.

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

selectionChanged

protected void selectionChanged()
Informs that the current selection changed. By default this event is forwarded to the drawing editor.


lastClick

public java.awt.Point lastClick()
Gets the position of the last click inside the view.

Specified by:
lastClick in interface DrawingView

setConstrainer

public void setConstrainer(PointConstrainer c)
Sets the grid spacing that is used to constrain points.

Specified by:
setConstrainer in interface DrawingView

getConstrainer

public PointConstrainer getConstrainer()
Gets the current constrainer.

Specified by:
getConstrainer in interface DrawingView

constrainPoint

protected java.awt.Point constrainPoint(java.awt.Point p)
Constrains a point to the current grid.


mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Handles mouse down events. The event is delegated to the currently active tool.

Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Handles mouse drag events. The event is delegated to the currently active tool.

Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Handles mouse move events. The event is delegated to the currently active tool.

Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Handles mouse up events. The event is delegated to the currently active tool.

Specified by:
mouseReleased in interface java.awt.event.MouseListener

keyPressed

public void keyPressed(java.awt.event.KeyEvent e)
Handles key down events. Cursor keys are handled by the view the other key events are delegated to the currently active tool.

Specified by:
keyPressed in interface java.awt.event.KeyListener

handleCursorKey

protected void handleCursorKey(int key)
Handles cursor keys by moving all the selected figures one grid point in the cursor direction.


checkDamage

public void checkDamage()
Refreshes the drawing if there is some accumulated damage

Specified by:
checkDamage in interface DrawingView

repairDamage

public void repairDamage()
Description copied from interface: DrawingView
Repair the damaged area

Specified by:
repairDamage in interface DrawingView

drawingInvalidated

public void drawingInvalidated(DrawingChangeEvent e)
Description copied from interface: DrawingChangeListener
Sent when an area is invalid

Specified by:
drawingInvalidated in interface DrawingChangeListener

drawingRequestUpdate

public void drawingRequestUpdate(DrawingChangeEvent e)
Description copied from interface: DrawingChangeListener
Sent when the drawing wants to be refreshed

Specified by:
drawingRequestUpdate in interface DrawingChangeListener

update

public void update(java.awt.Graphics g)
Updates the drawing view.

Overrides:
update in class javax.swing.JComponent

paint

public void paint(java.awt.Graphics g)
Paints the drawing view. The actual drawing is delegated to the current update strategy.

Specified by:
paint in interface DrawingView
Overrides:
paint in class javax.swing.JComponent
See Also:
Painter

drawAll

public void drawAll(java.awt.Graphics g)
Draws the contents of the drawing view. The view has three layers: background, drawing, handles. The layers are drawn in back to front order.

Specified by:
drawAll in interface DrawingView

drawHandles

public void drawHandles(java.awt.Graphics g)
Draws the currently active handles.

Specified by:
drawHandles in interface DrawingView

drawDrawing

public void drawDrawing(java.awt.Graphics g)
Draws the drawing.

Specified by:
drawDrawing in interface DrawingView

drawBackground

public void drawBackground(java.awt.Graphics g)
Draws the background. If a background pattern is set it is used to fill the background. Otherwise the background is filled in the background color.

Specified by:
drawBackground in interface DrawingView

addBackground

public void addBackground(Painter painter)
Adds a background.


removeBackground

public void removeBackground(Painter painter)
Removes a background.


removeForeground

public void removeForeground(Painter painter)
Removes a foreground.


addForeground

public void addForeground(Painter painter)
Adds a foreground.


freezeView

public void freezeView()
Freezes the view by acquiring the drawing lock.

Specified by:
freezeView in interface DrawingView
See Also:
Drawing.lock()

unfreezeView

public void unfreezeView()
Unfreezes the view by releasing the drawing lock.

Specified by:
unfreezeView in interface DrawingView
See Also:
Drawing.unlock()

isFocusTraversable

public boolean isFocusTraversable()
Overrides:
isFocusTraversable in class java.awt.Component

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

keyTyped

public void keyTyped(java.awt.event.KeyEvent e)
Specified by:
keyTyped in interface java.awt.event.KeyListener

keyReleased

public void keyReleased(java.awt.event.KeyEvent e)
Specified by:
keyReleased in interface java.awt.event.KeyListener