Class DefaultMDIApplication

  extended by org.jhotdraw.beans.AbstractBean
      extended by
          extended by
All Implemented Interfaces:, java.lang.Cloneable, Application

public class DefaultMDIApplication
extends AbstractApplication

DefaultMDIApplication handles the lifecycle of Views using a multiple document interface (MDI).

An application consists of a parent JFrame which holds a JDesktopPane. The views reside in JInternalFrames inside of the JDesktopPane. The parent frame also contains a menu bar, toolbars and palette windows for the views.

The life cycle of the application is tied to the parent JFrame. Closing the parent JFrame quits the application. The parent frame has the following standard menus:

 File Edit Window Help
The file menu has the following standard menu items:
  New (NewAction.ID})
  Open... (OpenAction.ID})
  Open Recent > "Filename" (OpenRecentAction.ID})
  Close (CloseAction.ID)
  Save (SaveAction.ID)
  Save As... (SaveAsAction.ID)
  Print... (PrintAction.ID)
  Exit (ExitAction.ID)
The edit menu has the following standard menu items:
  Settings (AbstractPreferencesAction.ID)
The window menu has the following standard menu items:
  Minimize (MinimizeAction.ID)
  Maximize (MaximizeAction.ID)
  "Filename" (FocusAction.ID)
The help menu has the following standard menu items:
  About (AboutAction.ID)
The menus provided by the ApplicationModel are inserted between the file menu and the window menu. In case the application model supplies a menu with the title "Edit" or "Help", the standard menu items are added with a seperator to the end of the menu.

$Id: 573 2009-10-13 05:59:20Z rawcoder $
Werner Randelshofer.
See Also:
Serialized Form

Nested Class Summary
private  class DefaultMDIApplication.OpenRecentMenuHandler
          Updates the menu items in the "Open Recent" file menu.
private  class DefaultMDIApplication.WindowMenuHandler
          Updates the menu items in the "Open Recent" file menu.
Field Summary
private  MDIDesktopPane desktopPane
private  javax.swing.JFrame parentFrame
private  java.util.prefs.Preferences prefs
private  javax.swing.JScrollPane scrollPane
private  java.util.LinkedList<javax.swing.Action> toolBarActions
Fields inherited from class
Fields inherited from class org.jhotdraw.beans.AbstractBean
Fields inherited from interface
Constructor Summary
          Creates a new instance.
Method Summary
 void configure(java.lang.String[] args)
          Configures the application using the provided arguments array.
protected  javax.swing.JMenu createEditMenu()
protected  javax.swing.JMenu createFileMenu()
protected  javax.swing.JMenu createHelpMenu()
protected  javax.swing.JMenuBar createMenuBar()
          Creates a menu bar.
protected  javax.swing.JMenu createWindowMenu()
 java.awt.Component getComponent()
          Returns the application component.
 void hide(View p)
          Hides a view.
 void init()
          Initializes the application.
protected  void initApplicationActions()
protected  void initLookAndFeel()
protected  void initViewActions(View p)
 boolean isSharingToolsAmongViews()
          Returns true, if this application shares tools among multiple views.
 void launch(java.lang.String[] args)
          Launches the application from the main method.
 void show(View p)
          Shows a view.
protected  void updateViewTitle(View v, javax.swing.JInternalFrame f)
          Updates the title of a view and displays it in the given frame.
protected  java.awt.Component wrapDesktopPane(java.awt.Component c, java.util.LinkedList<javax.swing.Action> toolBarActions)
          Returns the wrapped desktop pane.
Methods inherited from class
add, addPalette, addRecentFile, addWindow, basicCreateView, clearRecentFiles, createContainer, createView, dispose, getActiveView, getCopyright, getModel, getName, getVersion, initLabels, isEnabled, recentFiles, remove, removePalette, removeWindow, setActiveView, setEnabled, setModel, start, stop, views
Methods inherited from class org.jhotdraw.beans.AbstractBean
addPropertyChangeListener, addPropertyChangeListener, clone, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface
addPropertyChangeListener, removePropertyChangeListener

Field Detail


private javax.swing.JFrame parentFrame


private javax.swing.JScrollPane scrollPane


private MDIDesktopPane desktopPane


private java.util.prefs.Preferences prefs


private java.util.LinkedList<javax.swing.Action> toolBarActions
Constructor Detail


public DefaultMDIApplication()
Creates a new instance.

Method Detail


protected void initApplicationActions()


protected void initViewActions(View p)
Specified by:
initViewActions in class AbstractApplication


public void launch(java.lang.String[] args)
Description copied from interface: Application
Launches the application from the main method. This method is typically invoked on the main Thread. This will invoke configure() on the current thread and then init() and start() on the AWT Event Dispatcher Thread.

Specified by:
launch in interface Application
launch in class AbstractApplication


public void init()
Description copied from interface: Application
Initializes the application. configure() should have been invoked before the application is inited. Alternatively an application can be configured using setter methods.

Specified by:
init in interface Application
init in class AbstractApplication


public void configure(java.lang.String[] args)
Description copied from interface: Application
Configures the application using the provided arguments array.

Specified by:
configure in interface Application
configure in class AbstractApplication


protected void initLookAndFeel()


public void show(View p)
Description copied from interface: Application
Shows a view.


public void hide(View p)
Description copied from interface: Application
Hides a view.


public boolean isSharingToolsAmongViews()
Description copied from interface: Application
Returns true, if this application shares tools among multiple views.


public java.awt.Component getComponent()
Description copied from interface: Application
Returns the application component. This may return null, if the application is not represented by a component of its own on the user interface.


protected java.awt.Component wrapDesktopPane(java.awt.Component c,
                                             java.util.LinkedList<javax.swing.Action> toolBarActions)
Returns the wrapped desktop pane.


protected javax.swing.JMenuBar createMenuBar()
Creates a menu bar.


protected javax.swing.JMenu createFileMenu()


protected void updateViewTitle(View v,
                               javax.swing.JInternalFrame f)
Updates the title of a view and displays it in the given frame.

v - The view.
f - The frame.


protected javax.swing.JMenu createWindowMenu()


protected javax.swing.JMenu createEditMenu()


protected javax.swing.JMenu createHelpMenu()