org.jhotdraw.app
Class AbstractApplication

java.lang.Object
  extended by org.jhotdraw.beans.AbstractBean
      extended by org.jhotdraw.app.AbstractApplication
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Application
Direct Known Subclasses:
DefaultAppletApplication, MDIApplication, OSXApplication, SDIApplication

public abstract class AbstractApplication
extends AbstractBean
implements Application

This abstract class can be extended to implement an Application.

Version:
$Id: AbstractApplication.java 612 2010-01-11 21:50:07Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Nested Class Summary
private  class AbstractApplication.OpenRecentMenuHandler
          Updates the menu items in the "Open Recent" file menu.
 
Field Summary
private  javax.swing.ActionMap actionMap
           
private  View activeView
           
private  URIChooser exportChooser
           
private  URIChooser importChooser
           
private  boolean isEnabled
           
protected  ResourceBundleUtil labels
           
private static int maxRecentFilesCount
           
protected  ApplicationModel model
           
private  URIChooser openChooser
           
private  java.util.prefs.Preferences prefs
           
private  java.util.LinkedList<java.net.URI> recentFiles
           
private  URIChooser saveChooser
           
private  java.util.Collection<View> unmodifiableViews
           
static java.lang.String VIEW_COUNT_PROPERTY
           
private  java.util.LinkedList<View> views
           
 
Fields inherited from class org.jhotdraw.beans.AbstractBean
propertySupport
 
Fields inherited from interface org.jhotdraw.app.Application
ACTIVE_VIEW_PROPERTY, RECENT_URIS_PROPERTY
 
Constructor Summary
AbstractApplication()
          Creates a new instance.
 
Method Summary
 void add(View v)
          Adds a view to this application.
protected  void addAction(javax.swing.JMenu m, javax.swing.Action a)
          Adds the specified action as a menu item to the supplied menu.
protected  void addAction(javax.swing.JMenu m, View view, java.lang.String actionID)
          Adds the specified action as a menu item to the supplied menu.
protected  void addMenuItem(javax.swing.JMenu m, javax.swing.JMenuItem mi)
          Adds the specified action as a menu item to the supplied menu.
 void addPalette(java.awt.Window palette)
          Adds a palette window to the application.
 void addRecentURI(java.net.URI uri)
          Appends a URI to the list of recent URIs.
 void addWindow(java.awt.Window window, View p)
          Adds a (non-palette) window to the application.
protected  View basicCreateView()
           
 void clearRecentURIs()
          Clears the list of recent URIs.
 void configure(java.lang.String[] args)
          Configures the application using the provided arguments array.
 java.awt.Container createContainer()
           
protected  javax.swing.JMenu createOpenRecentFileMenu(View view)
           
 View createView()
          Creates a new view for this application and initializes it, by calling View.init().
protected abstract  javax.swing.ActionMap createViewActionMap(View p)
           
 void destroy()
          Destroys the application and calls System.exit(0).
 void dispose(View view)
          This is a convenience method for removing a view and disposing it.
protected  javax.swing.Action getAction(View view, java.lang.String actionID)
           
 javax.swing.ActionMap getActionMap(View v)
          Gets the action map.
 View getActiveView()
          Gets the active view.
 java.lang.String getCopyright()
          Returns the copyright of the application.
 URIChooser getExportChooser(View v)
          Gets the export chooser.
 URIChooser getImportChooser(View v)
          Gets the import chooser.
 ApplicationModel getModel()
          Returns the application model.
 java.lang.String getName()
          Returns the name of the application.
 URIChooser getOpenChooser(View v)
          Gets the open chooser.
 java.util.List<java.net.URI> getRecentURIs()
          Returns the recently opened URIs.
 URIChooser getSaveChooser(View v)
          Gets the save chooser.
 java.lang.String getVersion()
          Returns the version of the application.
 void init()
          Initializes the application.
protected  void initLabels()
           
 boolean isEnabled()
          Returns the enabled state of the application.
 void launch(java.lang.String[] args)
          Launches the application from the main method.
protected  void maybeAddSeparator(javax.swing.JMenu m)
          Adds a separator to the supplied menu.
 void remove(View v)
          Removes a view from this application and removes it from the users view.
 void removePalette(java.awt.Window palette)
          Removes a palette window from the application.
 void removeWindow(java.awt.Window window)
          Removes a (non-palette) window from the application.
 void setActionMap(javax.swing.ActionMap m)
          Sets the application-wide action map.
 void setActiveView(View newValue)
          Sets the active view.
 void setEnabled(boolean newValue)
          Sets the enabled state of the application.
 void setModel(ApplicationModel newValue)
          Sets the application model.
 void start()
          Starts the application.
 void stop()
          Stops the application without saving any unsaved views.
 java.util.Collection<View> views()
          Returns a read only collection view of the views of this application.
 
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 org.jhotdraw.app.Application
addPropertyChangeListener, createEditMenu, createFileMenu, createHelpMenu, createViewMenu, createWindowMenu, getComponent, hide, isSharingToolsAmongViews, removePropertyChangeListener, show
 

Field Detail

views

private java.util.LinkedList<View> views

unmodifiableViews

private java.util.Collection<View> unmodifiableViews

isEnabled

private boolean isEnabled

labels

protected ResourceBundleUtil labels

model

protected ApplicationModel model

prefs

private java.util.prefs.Preferences prefs

activeView

private View activeView

VIEW_COUNT_PROPERTY

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

recentFiles

private java.util.LinkedList<java.net.URI> recentFiles

maxRecentFilesCount

private static final int maxRecentFilesCount
See Also:
Constant Field Values

actionMap

private javax.swing.ActionMap actionMap

openChooser

private URIChooser openChooser

saveChooser

private URIChooser saveChooser

importChooser

private URIChooser importChooser

exportChooser

private URIChooser exportChooser
Constructor Detail

AbstractApplication

public AbstractApplication()
Creates a new instance.

Method Detail

init

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

start

public void start()
Description copied from interface: Application
Starts the application. This usually creates a new view, and adds it to the application. init() must have been invoked before the application is started.

Specified by:
start in interface Application

createView

public final View createView()
Description copied from interface: Application
Creates a new view for this application and initializes it, by calling View.init().

Specified by:
createView in interface Application

setModel

public void setModel(ApplicationModel newValue)
Description copied from interface: Application
Sets the application model.

Specified by:
setModel in interface Application

getModel

public ApplicationModel getModel()
Description copied from interface: Application
Returns the application model.

Specified by:
getModel in interface Application

basicCreateView

protected View basicCreateView()

setActiveView

public void setActiveView(View newValue)
Sets the active view. Calls deactivate on the previously active view, and then calls activate on the given view.

Parameters:
newValue - Active view, can be null.

getActiveView

public View getActiveView()
Gets the active view.

Specified by:
getActiveView in interface Application
Returns:
The active view can be null.

getName

public java.lang.String getName()
Description copied from interface: Application
Returns the name of the application.

Specified by:
getName in interface Application

getVersion

public java.lang.String getVersion()
Description copied from interface: Application
Returns the version of the application.

Specified by:
getVersion in interface Application

getCopyright

public java.lang.String getCopyright()
Description copied from interface: Application
Returns the copyright of the application.

Specified by:
getCopyright in interface Application

stop

public void stop()
Description copied from interface: Application
Stops the application without saving any unsaved views. init() must have been invoked before the application is stopped.

Specified by:
stop in interface Application

destroy

public void destroy()
Description copied from interface: Application
Destroys the application and calls System.exit(0).

Specified by:
destroy in interface Application

remove

public void remove(View v)
Description copied from interface: Application
Removes a view from this application and removes it from the users view. Fires a "documentCount" property change event. Invokes method setApplication(null) on the view object.

Specified by:
remove in interface Application

add

public void add(View v)
Description copied from interface: Application
Adds a view to this application. Fires a "documentCount" property change event. Invokes method setApplication(this) on the view object.

Specified by:
add in interface Application

createViewActionMap

protected abstract javax.swing.ActionMap createViewActionMap(View p)

dispose

public void dispose(View view)
Description copied from interface: Application
This is a convenience method for removing a view and disposing it.

Specified by:
dispose in interface Application

views

public java.util.Collection<View> views()
Description copied from interface: Application
Returns a read only collection view of the views of this application.

Specified by:
views in interface Application

isEnabled

public boolean isEnabled()
Description copied from interface: Application
Returns the enabled state of the application.

Specified by:
isEnabled in interface Application

setEnabled

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

Specified by:
setEnabled in interface Application

createContainer

public java.awt.Container createContainer()

launch

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

initLabels

protected void initLabels()

configure

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

removePalette

public void removePalette(java.awt.Window palette)
Description copied from interface: Application
Removes a palette window from the application.

Specified by:
removePalette in interface Application

addPalette

public void addPalette(java.awt.Window palette)
Description copied from interface: Application
Adds a palette window to the application.

Specified by:
addPalette in interface Application

removeWindow

public void removeWindow(java.awt.Window window)
Description copied from interface: Application
Removes a (non-palette) window from the application.

Specified by:
removeWindow in interface Application

addWindow

public void addWindow(java.awt.Window window,
                      View p)
Description copied from interface: Application
Adds a (non-palette) window to the application.

Specified by:
addWindow in interface Application
Parameters:
window - The window.
p - The View to which this window is associated, or null if the window is associated to the application.

getAction

protected javax.swing.Action getAction(View view,
                                       java.lang.String actionID)

addAction

protected void addAction(javax.swing.JMenu m,
                         View view,
                         java.lang.String actionID)
Adds the specified action as a menu item to the supplied menu.


addAction

protected void addAction(javax.swing.JMenu m,
                         javax.swing.Action a)
Adds the specified action as a menu item to the supplied menu.


addMenuItem

protected void addMenuItem(javax.swing.JMenu m,
                           javax.swing.JMenuItem mi)
Adds the specified action as a menu item to the supplied menu.


maybeAddSeparator

protected void maybeAddSeparator(javax.swing.JMenu m)
Adds a separator to the supplied menu. The separator will only be added, if additional items are added using addAction.


getRecentURIs

public java.util.List<java.net.URI> getRecentURIs()
Description copied from interface: Application
Returns the recently opened URIs. By convention, this is an immutable list.

Specified by:
getRecentURIs in interface Application

clearRecentURIs

public void clearRecentURIs()
Description copied from interface: Application
Clears the list of recent URIs. This fires a property change event for the property "recentURIs".

Specified by:
clearRecentURIs in interface Application

addRecentURI

public void addRecentURI(java.net.URI uri)
Description copied from interface: Application
Appends a URI to the list of recent URIs. This fires a property change event for the property "recentURIs".

Specified by:
addRecentURI in interface Application

createOpenRecentFileMenu

protected javax.swing.JMenu createOpenRecentFileMenu(View view)

getOpenChooser

public URIChooser getOpenChooser(View v)
Description copied from interface: Application
Gets the open chooser.

Specified by:
getOpenChooser in interface Application
Parameters:
v - View or null for application-wide chooser.

getSaveChooser

public URIChooser getSaveChooser(View v)
Description copied from interface: Application
Gets the save chooser.

Specified by:
getSaveChooser in interface Application
Parameters:
v - View or null for application-wide chooser.

getImportChooser

public URIChooser getImportChooser(View v)
Description copied from interface: Application
Gets the import chooser.

Specified by:
getImportChooser in interface Application
Parameters:
v - View or null for application-wide chooser.

getExportChooser

public URIChooser getExportChooser(View v)
Description copied from interface: Application
Gets the export chooser.

Specified by:
getExportChooser in interface Application
Parameters:
v - View or null for application-wide chooser.

setActionMap

public void setActionMap(javax.swing.ActionMap m)
Sets the application-wide action map.


getActionMap

public javax.swing.ActionMap getActionMap(View v)
Gets the action map.

Specified by:
getActionMap in interface Application
Parameters:
v - View or null for application-wide action map.