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, DefaultMDIApplication, DefaultOSXApplication, DefaultSDIApplication

public abstract class AbstractApplication
extends AbstractBean
implements Application

This abstract class can be extended to implement an Application.

Version:
$Id: AbstractApplication.java 551 2009-09-03 05:50:46Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Field Summary
private  View activeView
           
private  boolean isEnabled
           
protected  ResourceBundleUtil labels
           
private static int maxRecentFilesCount
           
private  ApplicationModel model
           
private  java.util.prefs.Preferences prefs
           
private  java.util.LinkedList<java.io.File> recentFiles
           
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
 
Constructor Summary
AbstractApplication()
          Creates a new instance.
 
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 addRecentFile(java.io.File file)
          Appends a file to the list of recent files.
 void addWindow(java.awt.Window window, View p)
          Adds a (non-palette) window to the application.
protected  View basicCreateView()
           
 void clearRecentFiles()
          Clears the list of recent files.
 void configure(java.lang.String[] args)
          Configures the application using the provided arguments array.
 java.awt.Container createContainer()
           
 View createView()
          Creates a new view for this application.
 void dispose(View view)
          This is a convenience method for removing a view and disposing it.
 View getActiveView()
          Gets the active view.
 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 init()
          Initializes the application.
protected  void initLabels()
           
protected abstract  void initViewActions(View p)
           
 boolean isEnabled()
          Returns the enabled state of the application.
 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 removeWindow(java.awt.Window window)
          Removes a (non-palette) window from the application.
 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, 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

private ApplicationModel model

recentFiles

private java.util.LinkedList<java.io.File> recentFiles

maxRecentFilesCount

private static final int maxRecentFilesCount
See Also:
Constant Field Values

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

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

initViewActions

protected abstract void initViewActions(View p)

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

remove

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

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

recentFiles

public java.util.List<java.io.File> recentFiles()
Description copied from interface: Application
Returns the recently opened files. By convention, this is an immutable list.

Specified by:
recentFiles in interface Application

clearRecentFiles

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

Specified by:
clearRecentFiles in interface Application

addRecentFile

public void addRecentFile(java.io.File file)
Description copied from interface: Application
Appends a file to the list of recent files. This fires a property change event for the property "recentFiles".

Specified by:
addRecentFile 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.