SandDock is a powerful window layout and management engine designed to quickly and easily add advanced document paging and dockable windows functionality to your applications. Its components provide a modern replacement for the standard Windows MDI paradigm and an advanced dockable windows system that supports complex layout systems, collapsible control groups and intuitive redocking tools.
The unparalleled design-time support of SandDock means it only takes a few clicks of the mouse to get dockable windows set up and working in your form. All the hard work is taken care of, leaving you to configure your GUI the best way possible - visually. You can perform window docking at design time just like you can at runtime, making SandDock the easiest tool of its kind to configure and integrate.
Like our other products, SandDock has a fully pluggable rendering engine. Every part of the drawing process can be completely taken over for maximum flexibility. SandDock ships with four renderers, that mimic the appearance of Visual Studio 2003, Office 2003, Visual Studio 2005 and Office 2007. Each renderer has a range of color schemes that can be applied.
Using the newer tabbed MDI interface is a great lightweight alternative to traditional MDI applications. Documents can still be rearranged and split in almost any way thinkable to ensure that the greatest flexibility of presentation is achieved. This new paradigm is used by applications such as Microsoft Visual Studio 2005 to manage its windows, and is quickly gaining momentum as the standard to replace traditional MDI.
The SandDock library is small, lightweight and fast. It has a powerful and robust object model that exposes a simple and friendly API so that taking programmatic control of your windows is easy. Under the surface it is possible to achieve granular control over every window setting and allow the user to rearrange as much or as little of your interface as you like.
Through its advanced and flexible layout system, the SandDock controls are able to offer a great deal of features to help you configure a cutting-edge user interface in your application.
- Four Included Themes and Extensibility
- Diamond Docking Hints
- Unparalleled Designer Support
- Easy Layout Serialization
- Encapsulating Templates
- Unified Window Architecture
- Dockable Windows
- Tabbed Documents
- Standalone TabControl
Features in Depth:
Four Packaged Themes
We include renderer classes in SandDock that mimic the appearance of Visual Studio 2003, Office 2003, Visual Studio 2005 and Office 2007. Renderers also offer a choice of color schemes with which to further customize their appearance. The Visual Studio 2005 and Office 2003 renderers include color schemes to match the user's choice of color scheme in Windows, and the Office 2007 renderer includes a choice of Blue, Silver or Black color scheme.
The developer can further customize the appearance of their chosen theme by changing individual color properties, for very fine granularity. For the ultimate customization of appearance you can create your own renderer class or inherit from one you like and override individual drawing methods.
View screenshots of all four renderers in action.
Diamond Docking Hints
Along with Visual Studio 2005 came a great improvement in the user interface for docking windows. Microsoft introduced diamond docking hints, which fade in and out in key places during a docking operation to visually guide the user to the available docking locations. As the cursor travels over these hints and around the screen, a translucent window preview follows it indicating the result of the docking operation, should it be committed.
SandDock fully supports this docking user interface along with the previous non-visual alternative. We also support a greater level of redocking ability than Visual Studio, allowing tabbed documents to be visually floated out of their container and docked with other windows, and docked windows to be made into tabbed documents. These extended docking options are available when the developer switches them on.
Unparalleled Designer Support
We are well known for the comprehensive level of designer integration we supply with our products, and perhaps the best example of this is SandDock. The result of our hard work is that integrating SandDock with your application is easy, and a pleasure to do. Docking windows around your form at design time is accomplished in exactly the same way as it is at runtime, using the same advanced docking hints. Tabbed documents behave in just the same way. If you wish to have a complex hierarchy of tabbed documents, simply create more than one and drag them around to split them.
One manager component on your form keeps track of these windows and allows you to add new ones, and once added, you simply drag them to the desired location. The rest of the window behavior, such as the rules that define where the user can visually dock it and whether it initially appears as collapsed, or unpinned, can be set with standard properties.
Your layout is saved as a part of the designer code for your form. There is no clunky collection editor and no separate interface just for design-time configuration. No other product of this kind has such good designer support.
Easy Layout Serialization
Once you include SandDock in your application you are giving your user great flexibility in configuring your user interface exactly how they like it. Once configured, they will expect the layout to remain consistent between subsequent runs of the application. We make this easy, with two simple methods. When your form is closing a call is made to one method, which returns a string representation of the entire layout. You persist this string to the storage medium of your choice, then call the other method when your form is next loading, passing the string, which restores the layout.
We also offer an AutoSaveLayout property. When set to true, layout is automatically saved using the default Windows Forms settings repository and no programmatic saving or restoring of layout is necessary.
A further enhancement to the designer features is the ability to define a dockable window or tabbed document alone, in isolation from your main form. This works in just the same way as defining a User Control. When you go to add a new item, you will see SandDock templates for User Dockable Window and User Tabbed Document. Adding one opens a standalone designer where you can create your window and more easily encapsulate its code, since it is defined in its own class. Later on, you then simply drag this window from your toolbox into your main form to add it to your SandDock layout.
Unified Window Architecture
Whether you are interested in dockable windows or tabbed documents (or both), you will be deriving from the same DockControl class. This base class ensures all windows behave in exactly the same way, with only superficial configuration differences. Although we fully expose our docking API for fine-grained control over window locations, this level of integration is not normally needed because windows remember their last positions with a great deal of accuracy. You will seldom need to use more than the Open and Close methods of windows programmatically.
A comprehensive range of events are raised on each window and the central manager component so your application can keep track of exactly what is going on. Examples are when windows are closed or their position changed, when windows receive the focus or when the active tabbed document changes.
- Complex window layouts like the ones possible in Visual Studio are easy to achieve.
- Controls or groups of controls can be "torn off" to form floating windows.
- Intuitive docking controls to perform floating and redocking operations.
- Collapsible control groups to conserve screen real-estate.
- No coding necessary - all window layout is done at design time just like you would at runtime.
SandDock offers all the flexibility of the Visual Studio dockable user interface and more. Dockable windows can be arranged into groups and hierarchies as complex or as simple as you like, and window memory ensures that after a user has finished with a window they can close it, and when next needed it will open just where they expect it. A group of windows can be unpinned so it takes up virtually no space, but its windows are still available and fly in (with animation) when the user needs them.
- Designed to completely replace the traditional MDI display if used.
- Expose events to keep track of the active document and alter available commands accordingly.
- Documents can be dragged anywhere else in the window to "split" views between documents.
- Provides access to the standard ctrl-tab and ctrl-shift-tab methods for switching windows.
- Scrolling buttons for smooth access to document tabs that are out of view.
- Included themes can mimic Visual Studio, Office OneNote 2003 or Office 2007.
If you choose to use tabbed documents, you will find them a compelling replacement for the older MDI paradigm. Offering a similar set of events and methods, they are easier to manage as they resize proportionally along with your window, but can still be split and manipulated by the user when they want to view multiple documents at once.
As mentioned previously, a certain level of duality with dockable windows can be achieved by tweaking the docking rules. The user will then be able to drag your documents out of the main window to float and subsequently dock them.
When you want a great-looking TabControl with a good selection of themes, but don't want the complexity of a full-blown tabbed documents layout, you can look no further than the TabControl shipped with SandDock. It uses all the existing rendering and windowing technology in the library in a lightweight shell and can completely replace the Windows Forms TabControl class.
NEW: The value of the PopupSize property is used as the default docked size for a window, if set.
FIX: When changing to the last tab with integral close buttons, the close button could fail to become entirely visible.
FIX: Some tab rendering glitches have been corrected.
FIX: When restoring a layout in an MDI container form, the Activated event could be raised for all windows.
FIX: When dragging over tabs the window was only selected, not activated too.
FIX: A tab with an ampersand in its text would be measured incorrectly under certain renderers.