Skip to content

Dock Manager Specification

Stefan Ivanov edited this page Oct 16, 2019 · 70 revisions

Dock Manager Specification

Contents

  1. Revision History
  2. Overview
  3. User Stories
    1. End User Experience
    2. Developer Experience
  4. Functionality
    1. User Interface
    2. Globalization/Localization
    3. Navigation
    4. API
  5. Acceptance criteria
  6. Accessibility
  7. Internationalization
  8. Assumptions and Limitations
  9. Test Scenarios
  10. 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.

Questions for PO:

  • Shall we provide context menus on right click? e.g. for pin, remove etc.

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 about the available positions to dock panes.

  • I want to be able to minimize/maximize 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 Tab/Shift+Tab key. Upon reaching the last tab of a pane pressing the Tab would take me to the next pane. Upon reaching the first tab of a pane pressing the Shift+Tab would take me to the previous pane.

  • I want to list all the tabs in a pane if their number is more than the available width.

  • I want to stash all the panes that I don't need at the moment in a tray.

  • I want to unpin a pane, which would send it to the tray

  • I want to open the tray and pin a certain pane it to bring it to its last 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 want to move the splitting border between two panes to change their relative sizes.

  • I want to take a pane and float it on top of all others even taking it outside the dock manager/browser window.

  • I want to dock a pane as a tab of another view without splitting the content area.

  • I expect that if I resize the dock manager window, all panes will resize accordingly until they reach a threshold beyond which they cannot shrink anymore. Decreasing the size of the dock manager further will cause scrollbars to be shown.

  • 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 define a special content pane, which would be the main one and cannot be unpinned/minimized/sent to the tray.
  • I want to be able to unpin and pin panes programatically.
  • I want to be able to set a certain pane as floatable which will make it appear above all others programatically.
  • I want to load a set of documents each in its own tab for a certain pane.
  • 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, which shows all possible docking action and it comes out of the box.
  • 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 want to be able to configure whether the last tab appears as a standalone tab or as a full-pane document view when the second to last is closed/unpinned/floated.

Design Hands-Off:

Inputs

Name Description Type

Methods

Name Description Return type Parameters
|

Outputs

Name Description Cancelable Arguments
   |

A

Key Result
Shift + Arrow up Pin above
Cmd/Ctrl + Shift + Arrow up Pin to global top
Shift + Arrow down Pin below
Cmd/Ctrl + Shift + Arrow down Pin to global bottom
Shift + Arrow right Pin right
Cmd/Ctrl + Shift + Arrow right Pin to global right
Shift + Arrow left Pin left
Cmd/Ctrl + Shift + Arrow left Pin to global left
Space Unpin

A

A

A

Automation

Initial view

  • S

Interaction

  • S

Keyboard Navigation/Interaction

  • S

API <-> UI updates

  • A

Localization

  • S

Manual

  • S
Clone this wiki locally