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:
AppletApplication, MDIApplication, OSXApplication, SDIApplication

public abstract class AbstractApplication
extends AbstractBean
implements Application

This abstract class can be extended to implement an Application.

AbstractApplication supports the command line parameter -open filename to open views for specific URI's upon launch of the application.

Version:
$Id: AbstractApplication.java 722 2010-11-26 08:49:25Z 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
          
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()
          
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


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(java.util.List<java.net.URI> uris)
Description copied from interface: Application
Starts the application. This usually creates at least one view, and adds it to the application. init() must have been invoked before the application is started.

Specified by:
start in interface Application
Parameters:
uris - Upon launch, the application may be requested to open views for a given list of URI's.

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(
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

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)
Launches the application.

Specified by:
launch in interface Application
Parameters:
args - This implementation supports the command-line parameter "-open" which can be followed by one or more filenames or URI's.

getOpenURIsFromMainArgs

protected java.util.List<java.net.URI> getOpenURIsFromMainArgs(java.lang.String[] args)
Parses the arguments to the main method and returns a list of URI's for which views need to be opened upon launch of the application.

This implementation supports the command-line parameter "-open" which can be followed by one or more filenames or URI's.

This method is invoked from the Application.launch method.

Parameters:
args - Arguments to the main method.
Returns:
A list of URI's parsed from the arguments. Returns an empty list if no URI's shall be opened.

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,
                      
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(

addAction

protected void addAction(javax.swing.JMenu m,
                         
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 the previous item is not a separator.


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(

getOpenChooser

public URIChooser getOpenChooser(View v)
Description copied from interface: Application
Gets an open chooser for the specified view or for the entire application.

Specified by:
getOpenChooser in interface Application
Parameters:
v - A view or null.
Returns:
A chooser.

getSaveChooser

public URIChooser getSaveChooser(View v)
Description copied from interface: Application
Gets a save chooser for the specified view or for the entire application.

Specified by:
getSaveChooser in interface Application
Parameters:
v - A view or null.
Returns:
A chooser.

getImportChooser

public URIChooser getImportChooser(View v)
Description copied from interface: Application
Gets an import chooser for the specified view or for the entire application.

Specified by:
getImportChooser in interface Application
Parameters:
v - A view or null.
Returns:
A chooser.

getExportChooser

public URIChooser getExportChooser(View v)
Description copied from interface: Application
Gets an export chooser for the specified view or for the entire application.

Specified by:
getExportChooser in interface Application
Parameters:
v - A view or null.
Returns:
A chooser.

setActionMap

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


getActionMap

public javax.swing.ActionMap getActionMap(
Gets the action map.

Specified by:
getActionMap in interface Application
Parameters:
v - A view or null