org.formaria.swing.app
Class DockingApp

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by org.formaria.swing.app.DockingApp
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, PersistentState, StartupObject

public class DockingApp
extends javax.swing.JFrame
implements StartupObject

A startup class for a desktop/MDI style of application.

For information on the initial docking layout please see the article MultiSplitPane: Splitting Without Nesting

Copyright: Copyright (c) Formaria Ltd., 2008
License: see license.txt

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  ApplicationContext applicationContext
           
protected  DockingSideBar bottomSidebar
           
protected  CardPanel cardPanel
           
protected  Project currentProject
           
protected  java.lang.String defaultLayoutDef
           
protected  javax.swing.JPanel dockingPanel
           
protected  DockingSideBar leftSidebar
           
protected  javax.swing.JMenuBar menuBar
           
protected  JXMultiSplitPane multiSplitPane
           
protected  PageSupport northDecoration
           
protected  DockingSideBar rightSidebar
           
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DockingApp(java.lang.String[] args)
          Creates a new instance of DesktopApp
 
Method Summary
 java.lang.Object addDecoration(PageSupport page, java.lang.String constraint)
          Display a window decoration, for example a toolbar.
 void applyStyles(DockingSideBar target)
          Carry out any post creation styling.
 java.lang.Object displayDecoration(PageSupport page, java.lang.String constraint)
          Deprecated. use addDecoration
 Dockable findDockable(java.lang.Object content)
          Find the dockable object that wraps a particular component
 java.lang.Object getApplicationMenuBar()
          Get the menubar, setting it up if it is not already added to the application frame
 java.lang.Object getContentPaneEx()
          Get the content pane used by Aria - the container in which pages are displayed
 java.net.URL getDocumentBase()
          Gets the URL of the document in which this applet is embedded.
 java.lang.String getParameter(java.lang.String param)
          Get a startup parameter
 java.lang.Object getParentObject()
          Get the parent container/object
 DockingSideBar getSidebar(java.lang.String key)
          Get the side bar for a particular object
 java.lang.String getWidgetClassPackage()
          Get the package name for the default widget set
 void loadLayout(java.io.InputStream is)
          Attempt to restore the docking layout
static void main(java.lang.String[] args)
          main method to be invoked as an application.
 void refresh()
          Validate and repaint the display
 void restoreState(XmlElement stateElement)
          Restore the application state
 void restoreViews()
          Restore the normal page views, as in the case of the docking layout where panels may be zoomed or minimized.
 void saveLayout(java.io.OutputStream os)
          Save the layout
 void saveState(XmlElement stateElement)
          Save the application state
 void setApplicationMenuBar(java.lang.Object mb)
          Set the menubar
 void setAppTitle(java.lang.String title)
          Set the application title.
 void setBackgroundPainter(Painter p)
          Set a background painter for the empty docking panel
 void setDecorationsVisible(boolean state)
          Set the visibility of the sidebars and toolbars
 void setDecorationVisibility(java.lang.String constraint, boolean visible)
          Set the visibility of a border layout's component or so called decoration
 void setIcon(java.awt.Image img)
          Set the application icon
 void setupFrameset(java.util.Hashtable params)
          Setup frameset.
 void setupWindow(ApplicationContext context, Project currentProject, int clientWidth, int clientHeight)
          Setup the windowing.
 void showExclusive(java.lang.Object comp, boolean state)
          Show one of the content panels as the exclusive content, hiding the sidebars, headers and other decorations
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.formaria.aria.StartupObject
setSize, validate
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

applicationContext

protected ApplicationContext applicationContext

cardPanel

protected CardPanel cardPanel

dockingPanel

protected javax.swing.JPanel dockingPanel

multiSplitPane

protected JXMultiSplitPane multiSplitPane

leftSidebar

protected DockingSideBar leftSidebar

rightSidebar

protected DockingSideBar rightSidebar

bottomSidebar

protected DockingSideBar bottomSidebar

northDecoration

protected PageSupport northDecoration

menuBar

protected javax.swing.JMenuBar menuBar

currentProject

protected Project currentProject

defaultLayoutDef

protected java.lang.String defaultLayoutDef
Constructor Detail

DockingApp

public DockingApp(java.lang.String[] args)
Creates a new instance of DesktopApp

Parameters:
args - the startup arguments
Method Detail

main

public static void main(java.lang.String[] args)
main method to be invoked as an application. This method is invoked as the entry point to the 'Application', it is not used if an Applet is being launched. This method establishes the frame within which the application runs. If overloading this method remeber to call the setup method.

Parameters:
args - the command line arguments

applyStyles

public void applyStyles(DockingSideBar target)
Carry out any post creation styling. This method is called one the application frameowrk has been setup. By default the method sets the colours of the component as the style manager is now available.


setBackgroundPainter

public void setBackgroundPainter(Painter p)
Set a background painter for the empty docking panel

Parameters:
painter - a background painter

getSidebar

public DockingSideBar getSidebar(java.lang.String key)
Get the side bar for a particular object

Parameters:
key - the key for looking up the sidebar
Returns:
the sidebar

setDecorationsVisible

public void setDecorationsVisible(boolean state)
Set the visibility of the sidebars and toolbars

Parameters:
state - true to make the decorations visible

displayDecoration

public java.lang.Object displayDecoration(PageSupport page,
                                          java.lang.String constraint)
Deprecated. use addDecoration

Display a window decoration, for example a toolbar.

This method only sets the decoration for the NORTH constraint. It is intended for setting a toolbar.

Specified by:
displayDecoration in interface StartupObject
Parameters:
page - the new page
constraint - a value controlling how and where the decoration is displayed, this value is application type specific
Returns:
the page being displayed or null if the constraint is not handled

addDecoration

public java.lang.Object addDecoration(PageSupport page,
                                      java.lang.String constraint)

Display a window decoration, for example a toolbar.

This method only sets the decoration for the NORTH constraint. It is intended for setting a toolbar.

Parameters:
page - the new page
constraint - a value controlling how and where the decoration is displayed, this value is application type specific
Returns:
the page being displayed or null if the constraint is not handled

setDecorationVisibility

public void setDecorationVisibility(java.lang.String constraint,
                                    boolean visible)
Set the visibility of a border layout's component or so called decoration

Parameters:
constraint - must be "NORTH" to have any effect
visible - the visibility state

showExclusive

public void showExclusive(java.lang.Object comp,
                          boolean state)
Show one of the content panels as the exclusive content, hiding the sidebars, headers and other decorations

Parameters:
comp - the component to display exclusively in the content area
state - true for an exclusive display, false to restore the normal display

getWidgetClassPackage

public java.lang.String getWidgetClassPackage()
Get the package name for the default widget set

Specified by:
getWidgetClassPackage in interface StartupObject
Returns:
the class name of the widget set

getParameter

public java.lang.String getParameter(java.lang.String param)
Get a startup parameter

Specified by:
getParameter in interface StartupObject
Parameters:
param - the name of the parameter

getContentPaneEx

public java.lang.Object getContentPaneEx()
Get the content pane used by Aria - the container in which pages are displayed

Specified by:
getContentPaneEx in interface StartupObject
Returns:
the page container

getParentObject

public java.lang.Object getParentObject()
Get the parent container/object

Specified by:
getParentObject in interface StartupObject
Returns:
the parent

getDocumentBase

public java.net.URL getDocumentBase()
Gets the URL of the document in which this applet is embedded. For example, suppose an applet is contained within the document:
    http://java.sun.com/products/jdk/1.2/index.html
 
The document base is:
    http://java.sun.com/products/jdk/1.2/index.html
 

Specified by:
getDocumentBase in interface StartupObject
Returns:
the URL of the document that contains this applet.
See Also:
Applet.getCodeBase()

setupFrameset

public void setupFrameset(java.util.Hashtable params)
Setup frameset. This method is called prior to the addition of any target areas in the framset and prior to the display of any pages. Since this applet does not support configurable framesets, this method ignores the parameter values passed.

Specified by:
setupFrameset in interface StartupObject
Parameters:
params - the framset parameters if any
  • config - the layout configuration, for example (COLUMN (ROW weight=1.0 left (COLUMN middleTop content middleBottom) right) bottom)

refresh

public void refresh()
Validate and repaint the display

Specified by:
refresh in interface StartupObject

setAppTitle

public void setAppTitle(java.lang.String title)
Description copied from interface: StartupObject
Set the application title. This method is called just before the first page is displayed, when all the other resources should have been loaded.

Specified by:
setAppTitle in interface StartupObject

setIcon

public void setIcon(java.awt.Image img)
Set the application icon

Specified by:
setIcon in interface StartupObject
Parameters:
img - the image name

setupWindow

public void setupWindow(ApplicationContext context,
                        Project currentProject,
                        int clientWidth,
                        int clientHeight)
Setup the windowing.

Specified by:
setupWindow in interface StartupObject
Parameters:
context - the owner application context
currentProject - the owner project
clientWidth - the desired width of the application
clientHeight - the desired height of the application

getApplicationMenuBar

public java.lang.Object getApplicationMenuBar()
Get the menubar, setting it up if it is not already added to the application frame

Specified by:
getApplicationMenuBar in interface StartupObject
Returns:
the menu bar

setApplicationMenuBar

public void setApplicationMenuBar(java.lang.Object mb)
Set the menubar

Specified by:
setApplicationMenuBar in interface StartupObject
Parameters:
mb - the menubar

saveLayout

public void saveLayout(java.io.OutputStream os)
Save the layout


loadLayout

public void loadLayout(java.io.InputStream is)
Attempt to restore the docking layout


restoreViews

public void restoreViews()
Restore the normal page views, as in the case of the docking layout where panels may be zoomed or minimized. This method is called prior to the display of a new page.

Specified by:
restoreViews in interface StartupObject

restoreState

public void restoreState(XmlElement stateElement)
Restore the application state

Specified by:
restoreState in interface PersistentState

saveState

public void saveState(XmlElement stateElement)
Save the application state

Specified by:
saveState in interface PersistentState
Parameters:
the - elements to hold the page state

findDockable

public Dockable findDockable(java.lang.Object content)
Find the dockable object that wraps a particular component

Parameters:
content - the content that is wrapped by the Dockable
Returns:
the Dockable instance or null if the component was not found