Skip to content

Dock Manager Specification

Stefan Ivanov edited this page Oct 10, 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 split my full-screen window in left and right view in order to compare document versions.
  • I want to dock a real-time log view at the bottom of my window.
  • I want to be able to dock a view left, right, top, or bottom to any level of nesting including the global/root one.
  • I want to dock a view 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 views.
  • I expect to be able to have multiple tabbed views for a certain area.
  • I want to stash all the views that I don't need at the moment in a tray. Unpinning a view would send it to the tray, and upon opening the tray one may pin 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 a window and open it again, it would show the last layout I have created.
  • I want to move the splitting border between two views to change their relative sizes.

As a developer:

  • I want to define a tree structure that defines the hierarchy of my views.
  • I want to define relative proportions for the area that siblings occupy from a certain view.
  • I want to be able to dock views programmatically by making changes to the tree.
  • I want to be able to persist the organization of the views and load it next time that the dock manager is opened.
  • I want to be able to define one area that has a special content purpose that would be the main area and cannot be unpinned/sent to the tray.
  • I want to be able to unpin and pin views programatically.

Design Hands-Off:

  1. A

Inputs

Name Description Type

Methods

Name Description Return type Parameters
|

Outputs

Name Description Cancelable Arguments
   |

A

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

A

Automation

Initial view

  • S

Interaction

  • S

Keyboard Navigation/Interaction

  • S

API <-> UI updates

  • A

Localization

  • S

Manual

  • S
Clone this wiki locally