org.jhotdraw.app
Interface Application

All Known Implementing Classes:
AbstractApplication, DefaultAppletApplication, MDIApplication, OSXApplication, SDIApplication

public interface Application

An application handles the lifecycle of View objects and provides windows to present them on screen.

An application owns a ApplicationModel which provides meta-data about the application, actions and factory methods for creating the views.

Depending on the document interface style used by the application, an application can handle multiple views at the same time, or only one.

Typical document interface styles are the Single Document Interface (SDI), the Multiple Document Interface (MDI) and the Mac OS X Application Document Interface (OSX). Typically, for each of these styles an implementation of Application exists.

Typical usage of this class:

 public class MyMainClass {
     public static void main(String[] args) {
         Application app = new SDIApplication(); // or OSXApplication(), MDIApplication().
         DefaultApplicationModel model = new DefaultApplicationModel();
         model.setName("MyApplication");
         model.setVersion("1.0");
         model.setCopyright("Copyright 2006 (c) Werner Randelshofer. All Rights Reserved.");
         model.setViewClassName("org.jhotdraw.myapplication.MyView");
         app.setModel(model);
         app.launch(args);
     } 
 

Design Patterns

Framework
The interfaces and classes listed below together with the Action classes in the org.jhotddraw.app.action package define the contracts of a framework for document oriented applications:
Contract: Application, ApplicationModel, View.


Version:
$Id: Application.java 607 2010-01-11 18:41:59Z rawcoder $
Author:
Werner Randelshofer

Field Summary
static java.lang.String ACTIVE_VIEW_PROPERTY
          The property name of the activeView property.
static java.lang.String RECENT_URIS_PROPERTY
          The property name of the recentURIs property.
 
Method Summary
 void add(View p)
          Adds a view to this application.
 void addPalette(java.awt.Window palette)
          Adds a palette window to the application.
 void addPropertyChangeListener(java.beans.PropertyChangeListener l)
          Adds a property change listener.
 void addRecentURI(java.net.URI uri)
          Appends a URI to the list of recent URIs.
 void addWindow(java.awt.Window window, View view)
          Adds a (non-palette) window to the application.
 void clearRecentURIs()
          Clears the list of recent URIs.
 void configure(java.lang.String[] args)
          Configures the application using the provided arguments array.
 javax.swing.JMenu createEditMenu(View v)
          Creates an edit menu for the specified view.
 javax.swing.JMenu createFileMenu(View v)
          Creates a file menu for the specified view.
 javax.swing.JMenu createHelpMenu(View v)
          Creates a help menu for the specified view.
 View createView()
          Creates a new view for this application and initializes it, by calling View.init().
 javax.swing.JMenu createViewMenu(View v)
          Creates a view menu for the specified view.
 javax.swing.JMenu createWindowMenu(View v)
          Creates a window menu for the specified view.
 void destroy()
          Destroys the application and calls System.exit(0).
 void dispose(View p)
          This is a convenience method for removing a view and disposing it.
 javax.swing.ActionMap getActionMap(View v)
          Gets the action map.
 View getActiveView()
          Returns the active view.
 java.awt.Component getComponent()
          Returns the application component.
 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 hide(View p)
          Hides a view.
 void init()
          Initializes the application.
 boolean isEnabled()
          Returns the enabled state of the application.
 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 remove(View p)
          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 removePropertyChangeListener(java.beans.PropertyChangeListener l)
          Removes a property change listener.
 void removeWindow(java.awt.Window window)
          Removes a (non-palette) window from the application.
 void setEnabled(boolean newValue)
          Sets the enabled state of the application.
 void setModel(ApplicationModel newValue)
          Sets the application model.
 void show(View p)
          Shows a view.
 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.
 

Field Detail

ACTIVE_VIEW_PROPERTY

static final java.lang.String ACTIVE_VIEW_PROPERTY
The property name of the activeView property.

See Also:
Constant Field Values

RECENT_URIS_PROPERTY

static final java.lang.String RECENT_URIS_PROPERTY
The property name of the recentURIs property.

See Also:
Constant Field Values
Method Detail

launch

void launch(java.lang.String[] args)
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.


configure

void configure(java.lang.String[] args)
Configures the application using the provided arguments array.


init

void init()
Initializes the application. configure() should have been invoked before the application is inited. Alternatively an application can be configured using setter methods.


start

void start()
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.


stop

void stop()
Stops the application without saving any unsaved views. init() must have been invoked before the application is stopped.


destroy

void destroy()
Destroys the application and calls System.exit(0).


createView

View createView()
Creates a new view for this application and initializes it, by calling View.init().


add

void add(View p)
Adds a view to this application. Fires a "documentCount" property change event. Invokes method setApplication(this) on the view object.


remove

void remove(View p)
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.


show

void show(View p)
Shows a view.


hide

void hide(View p)
Hides a view.


dispose

void dispose(View p)
This is a convenience method for removing a view and disposing it.


views

java.util.Collection<View> views()
Returns a read only collection view of the views of this application.


getActiveView

View getActiveView()
Returns the active view. This is used for OSXApplication and MDIApplication which share actions among multiple View instances. Active view may be become null, if the application has no view.

This is a bound property.


isEnabled

boolean isEnabled()
Returns the enabled state of the application.


setEnabled

void setEnabled(boolean newValue)
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.


addPropertyChangeListener

void addPropertyChangeListener(java.beans.PropertyChangeListener l)
Adds a property change listener.


removePropertyChangeListener

void removePropertyChangeListener(java.beans.PropertyChangeListener l)
Removes a property change listener.


getName

java.lang.String getName()
Returns the name of the application.


getVersion

java.lang.String getVersion()
Returns the version of the application.


getCopyright

java.lang.String getCopyright()
Returns the copyright of the application.


setModel

void setModel(ApplicationModel newValue)
Sets the application model.


getModel

ApplicationModel getModel()
Returns the application model.


isSharingToolsAmongViews

boolean isSharingToolsAmongViews()
Returns true, if this application shares tools among multiple views.


getComponent

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


addPalette

void addPalette(java.awt.Window palette)
Adds a palette window to the application.


removePalette

void removePalette(java.awt.Window palette)
Removes a palette window from the application.


addWindow

void addWindow(java.awt.Window window,
               View view)
Adds a (non-palette) window to the application.

Parameters:
window - The window.
view - The View to which this window is associated, or null if the window is associated to the application.

removeWindow

void removeWindow(java.awt.Window window)
Removes a (non-palette) window from the application.


getRecentURIs

java.util.List<java.net.URI> getRecentURIs()
Returns the recently opened URIs. By convention, this is an immutable list.


addRecentURI

void addRecentURI(java.net.URI uri)
Appends a URI to the list of recent URIs. This fires a property change event for the property "recentURIs".


clearRecentURIs

void clearRecentURIs()
Clears the list of recent URIs. This fires a property change event for the property "recentURIs".


createFileMenu

javax.swing.JMenu createFileMenu(View v)
Creates a file menu for the specified view. Returns null, if the menu is empty.


createEditMenu

javax.swing.JMenu createEditMenu(View v)
Creates an edit menu for the specified view. Returns null, if the menu is empty.


createViewMenu

javax.swing.JMenu createViewMenu(View v)
Creates a view menu for the specified view. Returns null, if the menu is empty.


createWindowMenu

javax.swing.JMenu createWindowMenu(View v)
Creates a window menu for the specified view. Returns null, if the menu is empty.


createHelpMenu

javax.swing.JMenu createHelpMenu(View v)
Creates a help menu for the specified view. Returns null, if the menu is empty.


getOpenChooser

URIChooser getOpenChooser(View v)
Gets the open chooser.

Parameters:
v - View or null for application-wide chooser.

getSaveChooser

URIChooser getSaveChooser(View v)
Gets the save chooser.

Parameters:
v - View or null for application-wide chooser.

getExportChooser

URIChooser getExportChooser(View v)
Gets the export chooser.

Parameters:
v - View or null for application-wide chooser.

getImportChooser

URIChooser getImportChooser(View v)
Gets the import chooser.

Parameters:
v - View or null for application-wide chooser.

getActionMap

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

Parameters:
v - View or null for application-wide action map.