org.jhotdraw.samples.svg
Class SVGView

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 org.jhotdraw.app.AbstractView
                      extended by org.jhotdraw.samples.svg.SVGView
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, ExportableView, View

public class SVGView
extends AbstractView
implements ExportableView

A view for SVG drawings.

Version:
2.0 2009-04-10 Moved all drawing related toolbars into SVGDrawingPanel.
1.3.1 2008-03-19 Method read() tries out now all supported files format.
1.3 2007-11-25 Method clear is now invoked on a worker thread.
1.2 2006-12-10 Used SVGStorage for reading SVG drawing (experimental).
1.1 2006-06-10 Extended to support DefaultDrawApplicationModel.
1.0 2006-02-07 Created.
Author:
Werner Randelshofer
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  javax.swing.JFileChooser exportChooser
           
private  java.util.HashMap<javax.swing.filechooser.FileFilter,InputFormat> fileFilterInputFormatMap
           
private  java.util.HashMap<javax.swing.filechooser.FileFilter,OutputFormat> fileFilterOutputFormatMap
           
static java.lang.String GRID_VISIBLE_PROPERTY
           
private  SVGDrawingPanel svgPanel
           
private  UndoRedoManager undo
          Each SVGView uses its own undo redo manager.
 
Fields inherited from class org.jhotdraw.app.AbstractView
executor, file, openChooser, preferences, saveChooser
 
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.app.View
APPLICATION_PROPERTY, ENABLED_PROPERTY, FILE_PROPERTY, HAS_UNSAVED_CHANGES_PROPERTY, MULTIPLE_OPEN_ID_PROPERTY, SHOWING_PROPERTY, TITLE_PROPERTY
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SVGView()
          Creates a new View.
 
Method Summary
 boolean canSaveTo(java.io.File file)
          Returns true, if this view can be saved to the specified file.
 void clear()
          Clears the view.
protected  Drawing createDrawing()
          Creates a new Drawing for this View.
protected  javax.swing.JFileChooser createExportChooser()
           
protected  javax.swing.JFileChooser createOpenChooser()
           
 java.awt.print.Pageable createPageable()
          Creates a Pageable object for printing the View.
protected  javax.swing.JFileChooser createSaveChooser()
           
 void export(java.io.File f, javax.swing.filechooser.FileFilter filter, java.awt.Component accessory)
          Exports the view.
 Drawing getDrawing()
           
 DrawingEditor getEditor()
           
 javax.swing.JFileChooser getExportChooser()
          Gets the file chooser for exporting the view.
 void init()
          Initializes the View.
private  void initActions()
          Initializes view specific actions.
private  void initComponents()
          This method is called from within the constructor to initialize the form.
 void read(java.io.File f)
          Reads the view from the specified file.
 void setEditor(DrawingEditor newValue)
           
 void setEnabled(boolean newValue)
          Sets the enabled state of the view.
protected  void setHasUnsavedChanges(boolean newValue)
           
 void write(java.io.File f)
          Writes the view to the specified file.
 
Methods inherited from class org.jhotdraw.app.AbstractView
activate, deactivate, dispose, execute, getAction, getApplication, getComponent, getFile, getMultipleOpenId, getOpenChooser, getSaveChooser, getTitle, hasUnsavedChanges, isShowing, markChangesAsSaved, putAction, setApplication, setFile, setMultipleOpenId, setShowing, setTitle, start, stop
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, 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, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, 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, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jhotdraw.app.View
activate, addPropertyChangeListener, deactivate, dispose, execute, getAction, getApplication, getComponent, getFile, getMultipleOpenId, getOpenChooser, getSaveChooser, getTitle, hasUnsavedChanges, isEnabled, isShowing, markChangesAsSaved, putAction, removePropertyChangeListener, setApplication, setFile, setMultipleOpenId, setShowing, setTitle, start, stop
 

Field Detail

GRID_VISIBLE_PROPERTY

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

exportChooser

protected javax.swing.JFileChooser exportChooser

undo

private UndoRedoManager undo
Each SVGView uses its own undo redo manager. This allows for undoing and redoing actions per view.


fileFilterInputFormatMap

private java.util.HashMap<javax.swing.filechooser.FileFilter,InputFormat> fileFilterInputFormatMap

fileFilterOutputFormatMap

private java.util.HashMap<javax.swing.filechooser.FileFilter,OutputFormat> fileFilterOutputFormatMap

svgPanel

private SVGDrawingPanel svgPanel
Constructor Detail

SVGView

public SVGView()
Creates a new View.

Method Detail

init

public void init()
Initializes the View.

Specified by:
init in interface View
Overrides:
init in class AbstractView

createDrawing

protected Drawing createDrawing()
Creates a new Drawing for this View.


createPageable

public java.awt.print.Pageable createPageable()
Creates a Pageable object for printing the View.


getEditor

public DrawingEditor getEditor()

setEditor

public void setEditor(DrawingEditor newValue)

initActions

private void initActions()
Initializes view specific actions.


setHasUnsavedChanges

protected void setHasUnsavedChanges(boolean newValue)
Overrides:
setHasUnsavedChanges in class AbstractView

write

public void write(java.io.File f)
           throws java.io.IOException
Writes the view to the specified file.

Specified by:
write in interface View
Throws:
java.io.IOException

read

public void read(java.io.File f)
          throws java.io.IOException
Reads the view from the specified file.

Specified by:
read in interface View
Throws:
java.io.IOException

getDrawing

public Drawing getDrawing()

setEnabled

public void setEnabled(boolean newValue)
Description copied from interface: View
Sets the enabled state of the view. The enabled state is used to prevent parallel invocation of actions on the view. If an action consists of a sequential part and a concurrent part, it must disable the view only for the sequential part. Actions that act on the view must check in their actionPerformed method whether the view is enabled. If the view is disabled, they must do nothing. If the view is enabled, they must disable the view, perform the action and then enable the view again. This is a bound property.

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

clear

public void clear()
Clears the view.

Specified by:
clear in interface View

createOpenChooser

protected javax.swing.JFileChooser createOpenChooser()
Overrides:
createOpenChooser in class AbstractView

createSaveChooser

protected javax.swing.JFileChooser createSaveChooser()
Overrides:
createSaveChooser in class AbstractView

createExportChooser

protected javax.swing.JFileChooser createExportChooser()

canSaveTo

public boolean canSaveTo(java.io.File file)
Description copied from interface: View
Returns true, if this view can be saved to the specified file. A reason why the view can't be saved to a file, is that the view is unable to write to a file with the given filename extension without losing data.

The SaveAction uses this method to decide, whether to display a file dialog before saving the file.

Specified by:
canSaveTo in interface View
Overrides:
canSaveTo in class AbstractView
Parameters:
file - A file. If this parameter is null, a NullPointerException is thrown.

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.


getExportChooser

public javax.swing.JFileChooser getExportChooser()
Description copied from interface: ExportableView
Gets the file chooser for exporting the view.

Specified by:
getExportChooser in interface ExportableView

export

public void export(java.io.File f,
                   javax.swing.filechooser.FileFilter filter,
                   java.awt.Component accessory)
            throws java.io.IOException
Description copied from interface: ExportableView
Exports the view. By convention this method is never invoked on the AWT Event Dispatcher Thread.

Specified by:
export in interface ExportableView
Parameters:
f - The file to which export the view.
filter - The FileFilter that was used to choose the file. This can be null.
accessory - The Accessory used by the JFileChooser. This can be null.
Throws:
java.io.IOException