SandDock User Guide
What is SandDock?
SandDock is a library that allows you to go beyond the standard windowing architecture that most applications provide. It exposes a simple interface to a powerful window management architecture that makes it easy to copy the windowing capabilities of applications such as Microsoft Visual Studio.
One central component, SandDockManager, takes responsibility for the creation and destruction of various elements in your interface to support the windows you have designed. It can keep track of them while you allow the user to reposition them wherever they like. It is this component that you will become quite familiar with as you start using the library.
SandDock defines a window class, DockControl, that all your dynamic windows will ultimately derive from. This class has methods, properties and events that are used to fully integrate the library.
Dockable Windows inherit from DockControl and provide a base for tool windows that will decorate the sides of your application container. Examples of tool windows in the Visual Studio IDE are the Properties, Solution Explorer and Toolbox windows. These windows typically allow the user to group them together, stack them over each other, beside each other, stick them to any side of the container or "undock" them in to a floating state above your form. Your windows will get all these abilities out of the box with SandDock.
Your tool windows will indicate to the user when they contain the focus. Intuitive docking hints help the user when they want to perform a docking operation - i.e. move a window (or group of windows) from one location to another.
The Tabbed Document paradigm replaces the traditional MDI architecture you will already be familiar with. Whereas previously documents would be represented inside non-toplevel forms inside your main window, now SandDock allows you to "tab" between open documents. These tabbed documents can still be dragged around by the user, and can be "split" in to complex hierarchies so that it is still easy to view more than one at once.
Visual Studio allows this behaviour to some degree; you can choose whether your documents are split horizontally or vertically. SandDock extends this functionality by allowing complex splits so that however involved your user is with your application, they can view multiple documents in the way they need. It is also possible to give your user the option of switching between MDI and TDI, but you will need to write the code to do this yourself.
Introduced with SandDock 2.0 was the TabControl. Although previous versions fully supported tabbed documents, many developers were using this functionality when they simply wanted the great looking tabs that SandDock provided - they did not need the powerful window management and splitting capabilities provided by the tabbed document system. Hence, the TabControl is designed to provide a simple interface that allows one row of documents. The TabPage class extends DockControl to hide all advanced functionality for this purpose.
Using the TabControl is simple, and will be familiar to anyone who has worked with the Microsoft TabControl. You simply add an instance of the control to your container and use the verb in the PropertyGrid to add pages. Of course, it is fully designable.