-
Notifications
You must be signed in to change notification settings - Fork 161
Dock Manager Specification
- Revision History
- Overview
- User Stories
- Functionality
- Acceptance criteria
- Accessibility
- Internationalization
- Assumptions and Limitations
- Test Scenarios
- References
- Konstantin Dinev | Date:
- Radoslav Mirchev | Date:
- Stefan Ivanov | Date:
Version | User | Date | Notes |
---|---|---|---|
0.1 | Stefan Ivanov | Oct 11, 2019 | Initial draft |
The Dock Manager provides a framework for complex layouts splitting the view into multiple smaller ones. This can be done recursively in order to create arbitrary layouts that can be manipulated and adjusted at runtime.
As an end user:
-
I want to be able to dock a pane to the left, right, top, or bottom to any level of nesting including the global/root one.
-
I want to split my full-screen window in left and right pane in order to compare document versions.
-
I want to dock a real-time log pane at the bottom of my window.
-
I want to dock a pane with commands and operations to the top of my window similar to the MS Office Ribbon.
-
I expect a visual indication (joystick) about the available positions to dock panes that is contextual to the pane over which my cursor currently is positioned.
-
I want to be able to maximize/minimize a pane.
-
I expect to be able to have multiple tabbed views for a certain pane.
-
I expect to be able to iterate through the tabs of a pane by pressing the Ctrl+F6/Shift+Ctrl+F6 key (Cmd to replace Ctrl on a Mac). Upon reaching the last tab of a pane pressing Ctrl+F6 would take me to the next pane. Upon reaching the first tab of a pane pressing the Shift+Ctrl+F6 would take me to the previous pane.
-
I expect to be able to iterate through the dock manager windows by pressing the Alt+F6/Alt+Ctrl+F6 key.
-
I want to be able to reorder the tabs in a pane via drag and drop.
-
I want to list all the tabs of a pane in a dropdown if their number exceeds width available
-
I want to stash all the panes that I don't need at the moment in a tray.
-
I want to pin a docked pane, which would send it (including all the tabs it may have) to the tray for that pane.
-
I want to open the tray and unpin a certain pane (with all the tabs it may have) to bring it to its last docked position or float it.
-
I want to close a pane (docked or floating), which would remove it from the dock manager layout, including all the tabs it may have.
-
I want to open the tray and drag an item to a destination pane and dock it to a certain position.
-
I want to open/close the tray area similar to how a navigation drawer may slide in and out.
-
I want to be able to resize the tray by dragging its border towards the panes adjacent to it.
-
I expect that if I close my application and open it again, it would show the last layout I have created.
-
I want to be able to save my layout so that I can apply it later and use it again.
-
I expect that if I have a layout and load another one the panes in my current layout will be taken and docked accordingly to the newly loaded one respecting the tree structure depicting the organization of panes.
-
I want to move the splitting border between two panes to change their relative sizes.
-
I want to move the splitting border between a pane and a split-pane which will cause the window to force the resizing of its children accordingly.
-
I want to take a pane and float it on top of all others.
-
I want to take a floating pane and drag it outside the dock manager/browser window.
-
I want to list all applicable actions for a pane in a dropdown that is shown from an action icon
-
I want to dock a pane as a tab of another view without splitting the content area.
-
I expect a dialog that would list all the panes in the dock manager and let me navigate between them choosing which on to move my focus to in the end.
As a developer:
-
I want to define a tree structure that defines the hierarchy of my panes.
-
I want to define relative proportions for the area that siblings occupy from a certain pane.
-
I want to be able to dock panes programmatically by making changes to the tree.
-
I want to be able to persist the organization of panes and load it next time that the dock manager is opened.
-
I want to be able to exclude certain panes from the organization upon persisting it.
-
I want to be able to define a special content pane (document content), which would be the main one and cannot be unpinned/minimized/sent to the tray. Its tabs are positioned at the top of the window unlike panes that have tabs at the bottom
-
I want to be able to freeze/unfreeze tabs in the document pane via pin/unpin action icon which would keep them in view under any circumstances - if necessary multiple rows of frozen tabs will be shown with the ones not frozen filling up the available space.
-
I expect that it is easy to distinguish the document area from the docked panes i.e. document area has tabs at the top, while for a pane they are always rendered at the bottom.
-
I want to be able to unpin and pin panes programatically.
-
I want to be able to determine whether an action (unpin, close etc.)on a given pane affects all its child panes recursively (default) or affects just the parent and makes its former children into present siblings.
-
I want to be able to set a certain pane as floatable which will make it appear above all others programmatically.
-
I want to be able to close a certain pane programmatically persisting its state upon closing e.g. pinned/unpinned.
-
I want to load a set of documents each in its own tab for a certain pane.
-
I expect that each tab sizes according to the document name it has to display.
-
I expect to have a tray, which can be opened or closed and it comes out of the box.
-
I expect to have a suggestive layout visualization (joystick), which shows all possible docking action and it comes out of the box.
-
I want to be able to define allowable docking positions for a give pane, by default it can be docked in all directions.
-
I want to be able to freeze the arrangement of panes so that the user cannot resize or rearrange them but may only flip through the tabs in a certain pane and browse the document that it displays.
-
I want to be able to set a minimum width and height values for every pane of the dock manager.
-
I expect to be provided with a template for the tab name that by default displays only text allowing icons or images to be added to it.
-
I expect to be provided with a template for the pane name that by default displays only text allowing icons or images to be added to it.
Design Hands-Off:
Name | Description | Type |
---|---|---|
Name | Description | Return type | Parameters |
---|---|---|---|
|
Name | Description | Cancelable | Arguments |
---|---|---|---|
|
A
Key | Result |
---|---|
Shift + Arrow up | Dock above |
Cmd/Ctrl + Shift + Arrow up | Dock to global top |
Shift + Arrow down | Dock below |
Cmd/Ctrl + Shift + Arrow down | Dock to global bottom |
Shift + Arrow right | Dock right |
Cmd/Ctrl + Shift + Arrow right | Dock to global right |
Shift + Arrow left | Dock left |
Cmd/Ctrl + Shift + Arrow left | Dock to global left |
Space | Unpin |
Cmd/Ctrl + F6 | Focus tab on the right |
Cmd/Ctrl + Shift + F6 | Focus tab on the left |
Alt + F6 | Focus right window |
Alt + Shift + F6 | Focus left window |
Alt + F7 | Show the window nav dialog |
A
A
A
- S
- S
- S
- A
- S
- S