public class OSXApplication extends AbstractApplication
OSXApplication
handles the lifecycle of multiple View
s using
a Mac OS X application interface.
This user interface created by this application follows the guidelines given in the Apple Human Interface Guidelines.
An application of this type can open multiple View
s. Each view is
shown in a separate JFrame
.
Conceptually all views share a global 'screen menu bar'. In Swing this is implemented as multiple JMenuBar instances. There is one JMenuBar for each opened JFrame, and a special JMenuBar which is shown when all views of the application are closed.
The application also provides floating toolbars and palette windows for the views.
In order for the screen menu bar and the floating palettes to function properly, it is essential that all code which opens JFrame's, JDialog's or JWindow's calls addWindow/Palette and removeWindow/Palette on the application object.
The life cycle of the application is tied to the screen menu bar. Choosing the quit action in the screen menu bar quits the application.
The screen menu bar has the following standard menus:
"Application-Name" File Edit WindowThe first menu, is the application menu. It has the following standard menu items:
About "Application-Name" (The file menu has the following standard menu items:AboutAction.ID
) - Preferences... (AbstractPreferencesAction.ID
) - Services - Hide "Application-Name" Hide Others Show All - Quit "Application-Name" (ExitAction.ID
)
Clear (The edit menu has the following standard menu items:ClearFileAction.ID
}) New (NewFileAction.ID
}) New Window (NewWindowAction.ID
}) Load... (LoadFileAction.ID
}) Open... (OpenFileAction.ID
}) Load Directory... (LoadDirectoryAction.ID
}) Open Directory... (OpenDirectoryAction.ID
}) Load Recent > "Filename" (LoadRecentFileAction.ID
) Open Recent > "Filename" (OpenRecentFileAction.ID
) - Close (CloseFileAction.ID
) Save (SaveFileAction.ID
) Save As... (SaveFileAsAction.ID
) Export... (ExportFileAction.ID
) Print... (PrintFileAction.ID
)
Undo (The window menu has the following standard menu items:UndoAction.ID
}) Redo (RedoAction.ID
}) - Cut (CutAction.ID
}) Copy (CopyAction.ID
}) Paste (PasteAction.ID
}) Duplicate (DuplicateAction.ID
}) Delete... (DeleteAction.ID
}) - Select All (SelectAllAction.ID
}) Clear Selection (ClearSelectionAction.ID
}) - Find (AbstractFindAction.ID
})
Minimize (The menus provided by theMinimizeWindowAction.ID
) Zoom (MaximizeWindowAction.ID
) - "Filename" (FocusWindowAction
) - "Palette" (TogglePaletteAction
)
ApplicationModel
are inserted between
the file menu and the window menu. In case the application model supplies
a menu with the title "Help", it is inserted after the window menu.labels, model, VIEW_COUNT_PROPERTY
propertySupport
ACTIVE_VIEW_PROPERTY, RECENT_URIS_PROPERTY
Constructor and Description |
---|
OSXApplication()
Creates a new instance.
|
Modifier and Type | Method and Description |
---|---|
void |
addPalette(java.awt.Window palette)
Adds a palette window to the application.
|
void |
addWindow(java.awt.Window window,
View view)
Adds a (non-palette) window to the application.
|
void |
configure(java.lang.String[] args)
Configures the application using the provided arguments array.
|
javax.swing.JMenu |
createEditMenu(View view)
Creates an edit menu for the specified view or for the entire application.
|
javax.swing.JMenu |
createFileMenu(View view)
Creates a file menu for the specified view or for the entire application.
|
javax.swing.JMenu |
createHelpMenu(View view)
Creates a help menu for the specified view of for the entire application.
|
protected javax.swing.JMenuBar |
createMenuBar(View v)
Creates a menu bar.
|
protected javax.swing.ActionMap |
createModelActionMap(ApplicationModel mo) |
protected javax.swing.ActionMap |
createViewActionMap(View v) |
javax.swing.JMenu |
createViewMenu(View view)
Creates a view menu for the specified view or for the entire application.
|
javax.swing.JMenu |
createWindowMenu(View view)
Creates a window menu for the specified view or for the entire application.
|
void |
dispose(View p)
This is a convenience method for removing a view and disposing it.
|
java.awt.Component |
getComponent()
Returns the Frame which holds the frameless JMenuBar.
|
void |
hide(View p)
Hides a view.
|
void |
init()
Initializes the application.
|
protected void |
initLookAndFeel() |
protected void |
initPalettes(java.util.LinkedList<javax.swing.Action> paletteActions) |
protected void |
initScreenMenuBar() |
boolean |
isSharingToolsAmongViews()
Returns true, if this application shares tools among multiple views.
|
void |
launch(java.lang.String[] args)
Launches the application.
|
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.
|
protected void |
setScreenMenuBar(javax.swing.JMenuBar mb) |
void |
show(View view)
Shows a view.
|
protected void |
updateViewTitle(View v,
javax.swing.JFrame f)
Updates the title of a view and displays it in the given frame.
|
add, addAction, addAction, addMenuItem, addRecentURI, basicCreateView, clearRecentURIs, createContainer, createOpenRecentFileMenu, createView, destroy, getAction, getActionMap, getActiveView, getCopyright, getExportChooser, getImportChooser, getModel, getName, getOpenChooser, getOpenURIsFromMainArgs, getRecentURIs, getSaveChooser, getVersion, initLabels, isEnabled, maybeAddSeparator, remove, setActionMap, setActiveView, setEnabled, setModel, start, stop, views
addPropertyChangeListener, addPropertyChangeListener, clone, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addPropertyChangeListener, removePropertyChangeListener
public void init()
Application
configure()
should have been invoked before the application
is inited. Alternatively an application can be configured using setter
methods.init
in interface Application
init
in class AbstractApplication
public void launch(java.lang.String[] args)
AbstractApplication
launch
in interface Application
launch
in class AbstractApplication
args
- This implementation supports the command-line parameter "-open"
which can be followed by one or more filenames or URI's.public void configure(java.lang.String[] args)
Application
configure
in interface Application
configure
in class AbstractApplication
protected void initLookAndFeel()
public void dispose(View p)
Application
dispose
in interface Application
dispose
in class AbstractApplication
public void addPalette(java.awt.Window palette)
Application
addPalette
in interface Application
addPalette
in class AbstractApplication
public void removePalette(java.awt.Window palette)
Application
removePalette
in interface Application
removePalette
in class AbstractApplication
public void addWindow(java.awt.Window window, View view)
Application
addWindow
in interface Application
addWindow
in class AbstractApplication
window
- The window.view
- The View to which this window is associated, or null
if the window is associated to the application.public void removeWindow(java.awt.Window window)
Application
removeWindow
in interface Application
removeWindow
in class AbstractApplication
public void show(View view)
Application
protected void updateViewTitle(View v, javax.swing.JFrame f)
v
- The view.f
- The frame.public void hide(View p)
Application
protected javax.swing.JMenuBar createMenuBar(View v)
public javax.swing.JMenu createViewMenu(View view)
Application
view
- A view or null.public javax.swing.JMenu createWindowMenu(View view)
Application
view
- A view or null.public javax.swing.JMenu createFileMenu(View view)
Application
view
- A view or null.public javax.swing.JMenu createEditMenu(View view)
Application
view
- A view or null.public javax.swing.JMenu createHelpMenu(View view)
Application
view
- A view or null.protected void initScreenMenuBar()
protected void initPalettes(java.util.LinkedList<javax.swing.Action> paletteActions)
public boolean isSharingToolsAmongViews()
Application
public java.awt.Component getComponent()
protected void setScreenMenuBar(javax.swing.JMenuBar mb)
protected javax.swing.ActionMap createModelActionMap(ApplicationModel mo)
protected javax.swing.ActionMap createViewActionMap(View v)
createViewActionMap
in class AbstractApplication