49 lines
1.6 KiB
Markdown
49 lines
1.6 KiB
Markdown
# TilingFrames
|
|
## Tiling (Docking) window manager library for WPF
|
|
### Qrakhen.TilingFramess
|
|
|
|
Cool Library to have tiling panels.
|
|
Is that not cool?
|
|
I think it very much is cool.
|
|
Very nice, yes. Alpha & Beta. No Gamma or Delta. Just Alpha-Beta.
|
|
|
|
Data structure resembles a binary tree with uniform branch- and end-nodes (TilingPanels & TilingHosts).
|
|
|
|
### Node
|
|
|
|
### Panel
|
|
|
|
### Host
|
|
|
|
### Frame
|
|
|
|
### Window
|
|
|
|
### Node Structure
|
|
```cs
|
|
RootPanel
|
|
/ \
|
|
A B
|
|
/ \
|
|
Panel Host
|
|
/ \ |-Frame (Single Frame)
|
|
/ \
|
|
Panel Host
|
|
/ \ |-Frame (Tab)
|
|
/ . |-Frame (Tab)
|
|
Host
|
|
|-Frame (Tab)
|
|
|-Frame (Tab)
|
|
|-Frame (Tab)
|
|
```
|
|
Key Behaviours:
|
|
- All Panels have information about how and where their content is split in two.
|
|
- Every panel may have up to two children (Alpha/Beta), where Alpha is never null.
|
|
- Beta may not be set (In a case of a single frame with no splits, for example).
|
|
- If a child located at Alpha is detached, Beta will move to alpha, to ensure the 'Alpha is always set' paradigm.
|
|
- If a child is detached and both alpha and beta result in being null, the entire Panel is detached from its parent.
|
|
- Hosts are always at the end of the branches, everything above a Node is a Panel.
|
|
- The things you're dragging around to re-order, separate and split panels are Frames.
|
|
- Hosts contain Frames, which will be displayed as tabs if stacked atop each other, or as a single frame if only one is present.
|
|
- All mutations of the tree structure expect the root node as their first argument.
|
|
That is done so there's no two-way referencing and to keep stuff simple. |