|
|
||
|---|---|---|
| .. | ||
| AssemblyInfo.cs | ||
| Qrakhen.TilingFrames.csproj | ||
| README.md | ||
README.md
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
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.