Skip to content

Dock Manager Specification

Stefan Ivanov edited this page Oct 11, 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.

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 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 expect that if I close my application and open it again, it would show the last layout I have created.
  • 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.
  • I want to dock a pane as a tab of another view without splitting the content area.

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.

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 to the top
Cmd/Ctrl + Shift + Arrow up Pin to global top
Shift + Arrow down Pin to the bottom
Cmd/Ctrl + Shift + Arrow down Pin to global bottom
Shift + Arrow right Pin to the right
Cmd/Ctrl + Shift + Arrow right Pin to global right
Shift + Arrow left Pin to the 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