/* @(#)package-info.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
/**
* Defines a framework for document oriented applications and provides default
* implementations.
* <p>
* Supports single document interface (SDI), multiple document interface (MDI),
* the Mac OS X application document interface (OSX), and applets.
* </p>
* <p>
* Key interfaces in this framework: {@link org.jhotdraw.app.Application},
* {@link org.jhotdraw.app.ApplicationModel}, {@link org.jhotdraw.app.View}.
* </p>
* <hr>
* <b>Features</b>
*
* <p><em>Launch application</em><br>
* Reads command line parameters, creates initial windows and menu bars and
* then opens the first view(s).<br>
* For this feature, you are supposed to implement your own {@code Main} class,
* which creates an {@code Application} of the desired type, creates and configures
* an {@code ApplicationModel}, sets the class name of the desired {@code View}s
* on the {@code ApplicationModel} and then invokes the {@code Application.launch(args)}
* method. See the class comments of {@link org.jhotdraw.app.Application} for example code.<br>
* The core behavior of this feature is implemented in {@link org.jhotdraw.app.Application#launch}.<br>
* Data is supplied by your {@code Main} class.<br>
* This feature triggers the following features: <em>Open last URI on launch</em>,
* <em>Open URIs from command line on launch</em>.<br>
* </p>
*
* <p><em>Open last URI on launch</em><br>
* When the application is started, the last opened URI is opened in a view.<br>
* The core behavior of this feature is implemented in {@link org.jhotdraw.app.Application#launch}.<br>
* This feature is enabled if {@link org.jhotdraw.app.ApplicationModel#isOpenLastURIOnLaunch()} returns true.<br>
* The last opened URI is retrieved from {@link org.jhotdraw.app.Application#getRecentURIs()}.<br>
* The last opened URI's are supplied by actions that open files.
* Known data suppliers are {@link org.jhotdraw.app.action.file.OpenFileAction},
* {@link org.jhotdraw.app.action.app.OpenApplicationFileAction},
* {@link org.jhotdraw.app.action.file.SaveFileAction},
* {@link org.jhotdraw.app.action.file.LoadFileAction}.<br>
* The data suppliers use method {@link org.jhotdraw.app.Application#addRecentURI}.<br>
* This feature triggers the following feature: <em>Open URIs on launch</em>.<br>
* </p>
*
* <p><em>Open URIs from command line on launch</em><br>
* When the application is started, each URI given on the command line is opened in a new view.<br>
* The core behavior of this feature is implemented in {@link org.jhotdraw.app.Application#configure}.<br>
* Data is supplied by the feature <em>Launch application</em>.<br>
* This feature triggers the following feature: <em>Open URIs on launch</em>.<br>
* </p>
*
* <p><em>Open URIs on launch</em><br>
* When the application is started, a view is opened for each URI.
* If no URI is supplied, an empty view is opened.<br>
* The core behavior of this feature is implemented in {@link org.jhotdraw.app.Application#start}.<br>
* The {@code start()} method parses the command line parameters.
* If the command line specifies URI's, a view is created for each URI and then {@link org.jhotdraw.app.View#read} is invoked.<br>
* Otherwise a single view is created and then {@link org.jhotdraw.app.View#clear} is invoked.<br>
* Data is supplied by the features <em>Open last URI on launch</em>, <em>Open URIs from command line on launch</em>.<br>
* </p>
*
* <p><em>Allow multiple views per URI</em><br>
* Allows opening the same URI in multiple views.
* When the feature is disabled, opening multiple views is prevented, and saving
* to a file for which another view is open is prevented.<br>
* The core behavior of this feature is implemented by actions that open and save files.<br>
* Known actions are {@link org.jhotdraw.app.action.file.OpenFileAction},
* {@link org.jhotdraw.app.action.file.OpenRecentFileAction},
* {@link org.jhotdraw.app.action.file.SaveFileAction},
* {@link org.jhotdraw.app.action.file.LoadFileAction},
* {@link org.jhotdraw.app.action.file.LoadRecentFileAction},
* {@link org.jhotdraw.app.action.file.ExportFileAction},
* {@link org.jhotdraw.app.action.app.OpenApplicationFileAction}.<br>
* This feature is enabled if {@link org.jhotdraw.app.ApplicationModel#isAllowMultipleViewsPerURI()} returns true.<br>
* The list of open URI's can be retrieved via {@link org.jhotdraw.app.Application#getViews}
* and then calling {@link org.jhotdraw.app.View#getURI}.
* </p>
*
* @author Werner Randelshofer
* @version $Id$
*/
@DefaultAnnotation(NonNull.class)
package org.jhotdraw.app;
import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
import edu.umd.cs.findbugs.annotations.NonNull;