org.jhotdraw.application
Class DrawApplication

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by org.jhotdraw.application.DrawApplication
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, DrawingEditor, FigureSelectionListener, PaletteListener, VersionRequester
Direct Known Subclasses:
MDI_DrawApplication, SplitPaneDrawApplication

public class DrawApplication
extends javax.swing.JFrame
implements DrawingEditor, PaletteListener, VersionRequester

DrawApplication defines a standard presentation for standalone drawing editors. The presentation is customized in subclasses. The application is started as follows:

 public static void main(String[] args) {
     MayDrawApp window = new MyDrawApp();
     window.open();
 }
 

Version:
<$CURRENT_VERSION$>
See Also:
Serialized Form

Field Summary
static int ALIGNMENT_MENU
          The index of the alignment menu in the menu bar.
static int ATTRIBUTES_MENU
          The index of the attributes menu in the menu bar.
static int EDIT_MENU
          The index of the edit menu in the menu bar.
static int FILE_MENU
          The index of the file menu in the menu bar.
static java.lang.String IMAGES
           
 
Fields inherited from class javax.swing.JFrame
EXIT_ON_CLOSE
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DrawApplication()
          Constructs a drawing window with a default title.
DrawApplication(java.lang.String title)
          Constructs a drawing window with the given title.
 
Method Summary
 void addViewChangeListener(ViewChangeListener vsl)
          Register to hear when the active view is changed.
 javax.swing.JMenu createLookAndFeelMenu()
          Create a menu which allows the user to select a different look and feel at runtime.
 StorageFormatManager createStorageFormatManager()
          Factory method to create a StorageFormatManager for supported storage formats.
 void exit()
          Exits the application.
 void figureSelectionChanged(DrawingView view)
          Fired by a view when the figure selection changes.
 java.lang.String getApplicationName()
          Return the name of the application build from this skeleton application
 java.lang.String getDefaultDrawingTitle()
           
 Tool getDefaultTool()
           
 Desktop getDesktop()
          Get the component, in which the content is embedded.
 java.lang.String[] getRequiredVersions()
          Subclasses should override this method to specify to which versions of JHotDraw they are compatible.
 StorageFormatManager getStorageFormatManager()
          Return the StorageFormatManager for this application.The StorageFormatManager is used when storing and restoring Drawing from the file system.
 UndoManager getUndoManager()
           
 void newView()
          Open a new view for this application containing a view of the drawing of the currently activated window.
 void newWindow()
           
 void newWindow(Drawing initialDrawing)
          Open a new window for this application containing the passed in drawing, or a new drawing if the passed in drawing is null.
 void open()
          Opens a new window
 void paletteUserOver(PaletteButton paletteButton, boolean inside)
          Handles when the mouse enters or leaves a palette button.
 void paletteUserSelected(PaletteButton paletteButton)
          Handles a user selection in the palette.
 void print()
          Prints the drawing.
 void promptNew()
          Resets the drawing to a new empty drawing.
 void promptOpen()
          Shows a file dialog and opens a drawing.
 void promptSaveAs()
          Shows a file dialog and saves drawing.
 void removeViewChangeListener(ViewChangeListener vsl)
          Remove listener
 void setApplicationName(java.lang.String applicationName)
          Set the name of the application build from this skeleton application
 void setTool(Tool t, java.lang.String name)
          Note: it is inconsistent to directly assign a variable but when using it use it from a method.
 void showStatus(java.lang.String string)
          Shows a status message.
 Tool tool()
          Gets the current tool.
 void toolDone()
          Sets the default tool of the editor.
 DrawingView view()
          Retrieve the active view from the window Gets the current drawing view.
 DrawingView[] views()
           
 
Methods inherited from class javax.swing.JFrame
getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, setLocationRelativeTo, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, dispatchEvent, enable, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

IMAGES

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

FILE_MENU

public static final int FILE_MENU
The index of the file menu in the menu bar.

See Also:
Constant Field Values

EDIT_MENU

public static final int EDIT_MENU
The index of the edit menu in the menu bar.

See Also:
Constant Field Values

ALIGNMENT_MENU

public static final int ALIGNMENT_MENU
The index of the alignment menu in the menu bar.

See Also:
Constant Field Values

ATTRIBUTES_MENU

public static final int ATTRIBUTES_MENU
The index of the attributes menu in the menu bar.

See Also:
Constant Field Values
Constructor Detail

DrawApplication

public DrawApplication()
Constructs a drawing window with a default title.


DrawApplication

public DrawApplication(java.lang.String title)
Constructs a drawing window with the given title.

Method Detail

newView

public void newView()
Open a new view for this application containing a view of the drawing of the currently activated window.


newWindow

public void newWindow(Drawing initialDrawing)
Open a new window for this application containing the passed in drawing, or a new drawing if the passed in drawing is null.


newWindow

public final void newWindow()

open

public void open()
Opens a new window


createLookAndFeelMenu

public javax.swing.JMenu createLookAndFeelMenu()
Create a menu which allows the user to select a different look and feel at runtime.


getDefaultTool

public Tool getDefaultTool()

getDesktop

public Desktop getDesktop()
Get the component, in which the content is embedded. This component acts as a desktop for the content.


createStorageFormatManager

public StorageFormatManager createStorageFormatManager()
Factory method to create a StorageFormatManager for supported storage formats. Different applications might want to use different storage formats and can return their own format manager by overriding this method.


getStorageFormatManager

public StorageFormatManager getStorageFormatManager()
Return the StorageFormatManager for this application.The StorageFormatManager is used when storing and restoring Drawing from the file system.


paletteUserSelected

public void paletteUserSelected(PaletteButton paletteButton)
Handles a user selection in the palette.

Specified by:
paletteUserSelected in interface PaletteListener
See Also:
PaletteListener

paletteUserOver

public void paletteUserOver(PaletteButton paletteButton,
                            boolean inside)
Handles when the mouse enters or leaves a palette button.

Specified by:
paletteUserOver in interface PaletteListener
See Also:
PaletteListener

tool

public Tool tool()
Gets the current tool.

Specified by:
tool in interface DrawingEditor
See Also:
DrawingEditor

view

public DrawingView view()
Retrieve the active view from the window Gets the current drawing view.

Specified by:
view in interface DrawingEditor
See Also:
DrawingEditor

views

public DrawingView[] views()
Specified by:
views in interface DrawingEditor

toolDone

public void toolDone()
Sets the default tool of the editor.

Specified by:
toolDone in interface DrawingEditor
See Also:
DrawingEditor

figureSelectionChanged

public void figureSelectionChanged(DrawingView view)
Fired by a view when the figure selection changes. Since Commands and Tools may depend on the figure selection they are registered to be notified about these events. Any selection sensitive GUI component should update its own state if the selection has changed, e.g. selection sensitive menuitems will update their own states.

Specified by:
figureSelectionChanged in interface DrawingEditor
Specified by:
figureSelectionChanged in interface FigureSelectionListener
Parameters:
view - DrawingView
See Also:
DrawingEditor

addViewChangeListener

public void addViewChangeListener(ViewChangeListener vsl)
Register to hear when the active view is changed. For Single document interface, this will happen when a new drawing is created.

Specified by:
addViewChangeListener in interface DrawingEditor

removeViewChangeListener

public void removeViewChangeListener(ViewChangeListener vsl)
Remove listener

Specified by:
removeViewChangeListener in interface DrawingEditor

showStatus

public void showStatus(java.lang.String string)
Shows a status message.

Specified by:
showStatus in interface DrawingEditor
See Also:
DrawingEditor

setTool

public void setTool(Tool t,
                    java.lang.String name)
Note: it is inconsistent to directly assign a variable but when using it use it from a method. (assignment: fTool = t, usage: tool()) dnoyeB-4/8/02 Note: should we check that the tool is inactive before we activate it? this would be consistent with how we do deactivate. I think we should do this now and not wait till a bug pops up. even if their is no bug, its consistent and adds understandability to the code. dnoyeB-4/8/02


exit

public void exit()
Exits the application. You should never override this method


promptNew

public void promptNew()
Resets the drawing to a new empty drawing.


promptOpen

public void promptOpen()
Shows a file dialog and opens a drawing.


promptSaveAs

public void promptSaveAs()
Shows a file dialog and saves drawing.


print

public void print()
Prints the drawing.


setApplicationName

public void setApplicationName(java.lang.String applicationName)
Set the name of the application build from this skeleton application


getApplicationName

public java.lang.String getApplicationName()
Return the name of the application build from this skeleton application


getUndoManager

public UndoManager getUndoManager()
Specified by:
getUndoManager in interface DrawingEditor

getRequiredVersions

public java.lang.String[] getRequiredVersions()
Subclasses should override this method to specify to which versions of JHotDraw they are compatible. A string array is returned so it is possible to specify several version numbers of JHotDraw to which the application is compatible with.

Specified by:
getRequiredVersions in interface VersionRequester
Returns:
all versions number of JHotDraw the application is compatible with.

getDefaultDrawingTitle

public java.lang.String getDefaultDrawingTitle()