qamp/Qrakhen.TilingFrames/README.md

1.6 KiB

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.