Framework/New Docking Windows
New style docking windows
This project wants to exchange the current docking window implementation with a new one which is UNO based and focuses on extensibility. We are currently working close together with the RedOffice Team in Bejing to make the new style docking windows feature ready for OpenOffice.org 3.1. The new implementation will be part of the Layout Manager introduced in OpenOffice.org 2. There are several improvements planned for the new implementation:
- The new docking windows can be controlled by the Layout Manager UNO API
- The new docking windows uses the same configuration data as the other user interface elements
- The new docking windows will be available for extensions
- It's possible to define groups that consists of several docking windows. If a user moves one window of a group, all windows of that group will be moved.
- There is a better separation of responsibility for document and container window.
- The container window of the frame contains the user interface.
- The document window is only responsible to show document content.
- Descriptive and xml based user interface in the docking windows.
- Use the layout manager for dialogs.
The work is done on the CWS dockingwindows. Currently we are still in refector phase where all changes are located in a local repository. As soon as the local repository provides the same stability and functionality we want to commit all changes. Unfortunately the refactoring needs more time and moves more code than expected we cannot give any time line.
- Refactor the current layout manager implementation to make it more maintainable.
- Extract the toolbar part and move it to a separate class (work in progress)
- Change layout manager code to forward requests to the special ui element class (e.g. ToolbarLayoutManager, PanelLayoutManager, ...) (work in progress)
- Add code for the new docking windows
- class PanelLayoutManager
- Factory class for panels
- Configuration entries for panel factory services
Framework Technical Specification
The following is a 'work in progress' spezification about the technical backgrounds to rework the user interface framework and to make it more flexible and extensible using extensions. This is a pure technical look at the framework and not a design document how the user default user interface will look like for OOo applications.
On the framework level, the user interface is made up from the following building blocks.
The frame is the topmost document window which contains (system depended) the window title, border and resize handles.
The menu is a hierarchically organized list of user actions represented by a combination of text and symbols. If is either docked at the top of the frame or (system depended) docked at an edge of the desktop. If a system supports floating application menus, it may also float.
A status bar is an information area that is docket at the bottom of a frame.
A dialog is a special window, used to display information to the user, or to get a response if needed. In the context of this specification a dialog is always modal, meaning the parent frame and all other child elements are blocked until the dialog is closed by the user. A dialog is always floating and never docked.
A toolbar is a linear list of user actions represented by a combination of text and symbols. It is either docked or floating. If it is docked at top or bottom edges, the actions are represented in one continues horizontal line. If it is docket at left or right edges, the actions are represented in one continues vertical line. If floating, a toolbar can be resized to form multiple lines.
A Toolpanel is a window with any combination of controls, like buttons, edit fields, lists, etc. A toolpanel is similiar to a dialog, but in the context of this specification, a toolpanel is always modeless. All changes to the document must be reflected in the toolpanel controls immediately. All changes made using the controls of a toolpanel must be applied to the model immediately. A toolpanel can either float or dock inside a toolpaneldeck.
A toolpaneldeck is a container for toolpanels. All toolpanels that are part of a toolpaneldeck are placed at the same position and have the same size. Only one toolpanel is visible in a toolpaneldeck at any time, which is the active toolpanel. A toolpaneldeck will have additional user interface elements to visualize the title of the active toolpanel, a list of contained toolpanels and actions to switch the active toolpanel. A toolpaneldeck can either float or dock.
The east and west toolpanel switch placed at the edges of the status bar as a shortcut to quickly switch the visibility of the toolpanels docked east and west.