Skip to main content
Email Password   helpLost your password?

Sample Image - DockingManagerExtender.gif

Introduction

Some days ago as I coded the HelloWorld in C#, there was darkness around me. After crawling through all the articles from CodeProject, there was light. A few days later I got my first version of magic library, from this time my HelloWorld applications looks cool.

Now, much time later, spent millions of hours coding C# in my spare time and on my job, I still use the magic library. With the knowledge gained from using commercial products like Syncfusion Essentiel Tools I felt it's time to write a component for Visual Studio which provides easy access to the great docking features of Magic Library.

Key features

Background

The component implements the IExtenderProvider interface and wraps a Crownwood.Magic.Docking.DockingManager. The IExtenderProvider extends the controls on your Form with a few of the Crownwood.Magic.Docking.Content properties. At run time the component manages the Content settings for each control and attaches the controls to the wrapped DockingManager.

Using the code

Before you begin, make sure your project has a valid reference to the Magic Library. Go to the Toolbox window, right-click and select Customize Toolbox from the context menu. In the Customize Toolbox dialog, go to the .NET Framework Components tab and select the DockingManagerExtender.dll assembly that you just compiled. Now drop the DockingManagerExtender component to your form.

The component provides the following:

Public Instance Properties

AutomaticStatePersistence Enable or disable the Automatic State Persistence feature. If enabled, the customized docking settings made by the user are persistent by User/Domain/WorkingArea
ContainerControl Gets or sets the object to which the docking manager instance is attached
DockingManager The wrapped Crownwood.Magic.Docking.DockingManager. Direct access to all properties.
InnerControl Sets or gets the Control for which the docking windows will not be allowed to dock inside of the specified control.
OuterControl Sets or gets the Control for which docking windows will not be allowed to dock outside of the specified control.
PlainTabBorder Gets or sets the flag indicating that the appearance is defined as VisualStyle.Plain and this PlainTabBorder property is defined then a full dumped border is drawn around the docking window content.
VisualStyle Gets or sets the VisualStyle which is used to draw content.

Public Instance Methods

LoadConfigFromStream Restores the docking configuration.
ResetAutoPersistent Reset Automatic State Persistence. Changes takes effect after restarting application.
SaveConfigToStream Stores the docking configuration.

Please make sure that the ContainerControl property points to your form, otherwise the component cannot work properly.

Select one of your controls on this form, hit F4 and scroll down to the end in the PropertyGrid. Now you should see new properties like these ones.

After you set ADockingEnable to true, you could change the other properties. This is important, cause if the control is not dock enabled, the other properties are not valid.

If you like to know more about these properties, please refer directly to Magic Docking - VS.NET Style.

ADockingEnable Enables and disables the docking for the control.
CloseButton Enables and disables the close button of the docking window.
DockingStyle Dock style for the control.
FullTitle Text displayed in docking control title.
Icon Icon displayed in tabbed/hide mode.
TabbedMode Indicates if tabbed docking is preferred.
Title Text displayed in tabbed/hide mode.

After enabling docking for your controls, hit F5 to start debugging. If everything went right the controls are docked, finish.

In depth

There are three classes which where used to build this component. For detailed view, please refer to the NDOC generated Help File.

Classes

Class Description
DockingContent Wraps Crownwood.Magic.Docking.Content and extends it with needed properties.
DockingManagerConverter DockingManagerConverter provides a TypeConverter for the Crownwood.Magic.Docking.DockingManager
DockingManagerExtender DockingManagerExtender enhances Crownwood.Magic.Docking.DockingManager for design time. It extends the controls on your form with properties, which defines the docking behavior at run time.

Conclusion

Future version and features

The next version should provide real designer support, where you can drag your docking control in the designer. The default layout, specified in the designer, should be stored to a resource file, which is embedded in the assembly.

With such a designer, it's more intuitive to design docking arrangements, but my knowledge about design time components is not at a high level ,(

Links

History

Have fun with it...

You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
GeneralHow to change the dockstate in a content ? Pin
Chen.shaohua
21:50 23 Aug '09  
GeneralRe: How to change the dockstate in a content ? Pin
Chris Richner
23:45 24 Aug '09  
GeneralRe: How to change the dockstate in a content ? Pin
Chen.shaohua
5:36 25 Aug '09  
GeneralCompatible Version with VS2005 Pin
Challagolla
0:37 22 Jul '09  
GeneralRe: Compatible Version with VS2005 Pin
Chris Richner
5:33 22 Jul '09  
GeneralRe: Compatible Version with VS2005 Pin
Challagolla
21:05 22 Jul '09  
GeneralRe: Compatible Version with VS2005 Pin
Chris Richner
11:41 3 Aug '09  
GeneralHow Free is free? Pin
Findl_Fantastisch
20:59 26 Jun '07  
Generalcapture Dock window Hiding and Showing events Pin
Ambili_T
0:15 18 Apr '07  
GeneralShowing the panels as docked when app starts up. ! Pin
Ambili_T
2:56 12 Apr '07  
AnswerRe: Showing the panels as docked when app starts up. ! Pin
Chris Richner
9:31 13 Apr '07  
GeneralRe: Showing the panels as docked when app starts up. ! Pin
Ambili_T
19:41 16 Apr '07  
AnswerRe: Showing the panels as docked when app starts up. ! Pin
Chris Richner
8:40 17 Apr '07  
GeneralRe: Showing the panels as docked when app starts up. ! Pin
Ambili_T
21:07 17 Apr '07  
GeneralChange location of docked window Pin
Shakeel Mumtaz
1:04 1 Oct '06  
Generalgetting event handler for hide button clicked Pin
bhavesh vaghela
2:08 7 Feb '06  
QuestionOwn Visualstyles Pin
vornst
14:33 28 Jan '06  
GeneralHelp needed: unable to generate DLL Pin
run1492
13:49 1 Nov '05  
GeneralRe: Help needed: unable to generate DLL Pin
deloford
13:48 5 Jul '06  
GeneralI was just thinkign of this! Pin
Kevin James
8:21 26 Oct '05  
GeneralFree Magic library is still available Pin
motif8
21:12 12 Oct '05  
AnswerBAd link -- Re: Free Magic library is still available Pin
Kevin James
8:22 26 Oct '05  
GeneralRe: Free Magic library is still available Pin
badfire
0:56 5 Dec '05  
GeneralAutohide Pin
Piovra_
22:28 26 Jul '05  
GeneralNow it is no more for free Pin
Anonymous
6:57 7 Jun '05  


Last Updated 2 Nov 2003 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009