Friday, August 21st, 2009
Expected Release Date
The release of Krypton Suite 4.0 is looking like being the middle of next week. So expect an announcement on Wednesday 26th if all goes to plan. Obviously this could slip if a major bug appears just before release but I promise it will not be released early!
Reduced Product Line-up
Something like 90% of all sales are for the full Krypton Suite and so I intend to simplify the list of product offerings by selling only the full Suite. Existing customers with the Navigator, Workspace or Ribbon that are still within their 12 month subscription will get a free upgrade to the Suite + Source. So no customers will miss out because of the change in policy.
The Suite will also only be offered with the full source code included so the ability to buy just a license is being removed. Most companies want the source code anyway and so this reduces the number of purchase options making it a simpler decision. So the purchase page is going to have just the Krypton Suite + Source with the only options being the number of licenses you want to buy.
BARGAIN ALERT: Yes, that means you could buy the Navigator at $149 before next Wednesday and get a free upgrade to the full Suite including the source code. Reading my blog means you get the inside track and your reward is a truly once in a lifetime bargain. Or why not get a 4 pack and save even more!
New Pricing
Currently the Suite + Source is priced at $399 (USD) and the new price with the docking system added will be $499 (USD). Looking at other comparable products on the market I still think this is a reasonable price given the extra flexibility and features it offers.
New Licence Options
Last is a change to provide customers with an upper limit on costs. I hope this will tempt more of the larger outfits to consider buying the Suite for the entire development department. I am introducing Site and Enterprise license options.
A Site license will allow an unlimited number of developers within your organization but limited to one geographic location. An Enterprise license allows for an unlimited number of developers at an unlimited number of locations for your organization. Customers with 16 or more licenses at the moment will be offered the chance to convert to either the Site or Enterprise depending on their licenses requirements.
Posted in Krypton Docking, Krypton Navigator, Krypton Ribbon, Krypton Toolkit, Krypton Workspace | 8 Comments »
Tuesday, August 18th, 2009
The second and final beta for the upcoming Suite 4.0 release is now available for download. It has several bug fixes and additional features for the new docking component as well as a couple more general bugs. It is also now feature complete; so only bugs reported for this beta will be changed between now and the full release.
Changes in Beta 2
- Drag reordering for Navigator/Workspace/Docking
- Docking now has a dockable Navigator
- KryptonWrapLabel added to Toolkit
Download Beta 2
Posted in Krypton Docking | 3 Comments »
Tuesday, August 4th, 2009
Finally we can now use the mouse to drag a page header into a new position. This feature is a must for the docking system but I am sure it is helpful for those using the Navigator or Workspace standalone controls. It has been requested quite a few times over the last couple of years and finally it has made it to the top of the to-do list.
The feature works with all the Navigator modes that display elements per-page. So any of the modes that have tabs, ribbon tabs or check buttons per-page can be reordered. Even the Outlook modes have the ability as they contain a set of check buttons at the bottom of the control.
I would show some screenshots but there is no effective way of showing it working. Just wait until the docking beta 2 in a couple of week’s time and then you can play with it.
Posted in Krypton Docking, Krypton Navigator, Krypton Workspace | 10 Comments »
The new Krypton Docking capability is ready for release as a first beta. It has a couple of missing features that I will be working on whilst waiting for beta feedback but it is close enough to completed to play around with. I have created samples that can be accessed from the Krypton Explorer as well as full documentation.
Download Beta

As a beta release I do not recommend using this in a commerical application. It should be used for experimenting only. I anticipate at least one more beta before the full Suite 4.0 release is ready. I would certainly appreciate any feedback on bugs, missing functionality or any advice on how it could be improved. If there is any area that needs more explaining in the documentation or an extra sample to demonstrate something tricky then just drop me a line. I will setup a forum just for this beta release so that would be a good place to note bugs etc.
The beta version number is 3.5.4 so it will work with all existing 3.5 serial keys. Although the docking component is the headline change there are also numerous bug fixes and updates across the other components.
Change Summary
- Docking component
- Workspace persistence
- Workspace cell maximize/restore
- KryptonSeparator added to Toolkit
Known Issues
- Drag reordering of tabs not implemented
- Occasional crash with floating windows
Posted in Krypton Docking | 6 Comments »
SaveConfigToFile/LoadConfigFromFile
Saving and restoring your docking config is crucial for a good user experience. Typically when you close down an application you want to store the current layout so that at restart you can restore that layout. This allows a smooth experience for the end user. You can do this easily with the docking system by using the file variations of the save/load methods.
SaveConfigToXml/LoadConfigFromXml
SaveConfigToArray/LoadConfigFromArray
SaveConfigToStream/LoadConfigFromStream
To allow maximum flexibility you can also persist configurations to xml streams, bytes arrays and arbitrary streams. Using byte arrays is really useful if you want to store configs inside a database. You can easily convert a byte array to and from base64 and so have it stored as a string.
GlobalSaving/GlobalLoading
Extensibility is provided via a set of events. Use these two events to add your own custom data into the configuration data. Adding your own custom arbritary information into the docking config might serve as the only persistence mechanism needed for your entire application.
PageSaving/PageLoading
Store per-page custom information using this pair of events. For example, your page might represent a file and so you could use the PageSaving event to store the name of the file the page is displaying. On loading you use the PageLoading to associate the file with a page and initialize the page contents.
When a docking configuration is being loaded the process begins by creating a list of all the current pages inside the docking hierarchy. Then the entire contents of the hierarchy are reset. So all floating windows are killed, auto hidden groups wiped and docked windows removed. Now the config is loaded to create new floating window, auto hidden groups and so forth as defined in the config.
Each time a page definition is found in the config it attempts to reuse any existing page with that same unique name. So if the page existed at the time of the load operation and the config refers to that page it will simply be reused. The PageLoading event is fired so the existing page can be modified if required by event handlers based on any custom data that is stored with the page config.
RecreateLoadingPage
If the configuration contains details of a page that does not exist in the current hierarchy at load time then this event is fired so that an appropriate page can be created. If you want the config page ignored then you can cancel the event.
OrphanedPages
Once the config has been reloaded there might be pages that were in the hierarchy before the load but were not inside the config itself. These are orphan pages in that they are no longer part of the docking system as they were removed but never added back again. This event is fired at the end of the load process and gives a list of all these orphan pages. This event is useful if you need to perform extra processing for a page that is no longer needed, such as closing file handles or releasing other resources.
The above set of events allows two common scenarios to be handled. Applications that have a constant set of docking pages can easily be saved and reloaded without needing to handle any events. As the loading config will always refer to every docking page it means that all the pages are preserved after loads. Applications that have a dynamic set of pages are handled easily by using the RecreateLoadingPage and OrphanedPages events.
Posted in Krypton Docking | 2 Comments »