org.jhotdraw.app
Interface Application

All Known Implementing Classes:
AbstractApplication, DefaultAppletApplication, DefaultMDIApplication, DefaultOSXApplication, DefaultSDIApplication

public interface Application

An application handles the lifecycle of Views and provides windows to present them on screen. Depending on the document interface style used by the application. An application can handle multiple views at the same time, or only one.

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

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 DefaultADIApplication();
         DefaultApplicationModel model = new DefaultApplicationModel();
         model.setName("MyAppliciation");
         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 527 2009-06-07 14:28:19Z rawcoder $
Author:
Werner Randelshofer

Field Summary
static java.lang.String ACTIVE_VIEW_PROPERTY
          The property name of the activeView 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 addRecentFile(java.io.File file)
          Appends a file to the list of recent files.
 void addWindow(java.awt.Window window, View view)
          Adds a (non-palette) window to the application.
 void clearRecentFiles()
          Clears the list of recent files.
 void configure(java.lang.String[] args)
          Configures the application using the provided arguments array.
 View createView()
          Creates a new view for this application.
 void dispose(View p)
          This is a convenience method for removing a view and disposing it.
 View getActiveView()
          Returns the active view.
 java.awt.Component getComponent()
          Returns the application component.
 java.lang.String getCopyright()
          Returns the copyright of the application.
 ApplicationModel getModel()
          Returns the application model.
 java.lang.String getName()
          Returns the name of the application.
 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.
 java.util.List<java.io.File> recentFiles()
          Returns the recently opened files.
 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
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.


createView

View createView()
Creates a new view for this application.


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.


recentFiles

java.util.List<java.io.File> recentFiles()
Returns the recently opened files. By convention, this is an immutable list.


addRecentFile

void addRecentFile(java.io.File file)
Appends a file to the list of recent files. This fires a property change event for the property "recentFiles".


clearRecentFiles

void clearRecentFiles()
Clears the list of recent files. This fires a property change event for the property "recentFiles".


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.