OutlookBar 2.0 – from Winforms to WPF
July 22nd, 2008
If you work/ed with CAB and SCSF you might remember the Outlook Bar we created in 2006 with the initial input of Chris Holmes and the help of some of the Southworks guys like Mariano and Ezequiel. It turned out to be a popular control for composite applications since the nature of modules mapped quite well with the navigation bar buttons and the outlook navigation bar is a well known UX pattern for a fair amount of users.
We wanted to have this control for WPF apps and also have it integrated with CompositeWPF through a region adapter. The first version looks like this:

The trick is to overwrite the template of the TabControl and TabItem (WPF separates the behavior of the control from the visual layout and style), inherit from the SelectionRegionAdapter of CompositeWPF and adding a behavior that will publish an event with the EventAggregator subsytem on TabItem (navigation bar button) click.
We also created an attached property to separate the metadata containing the title and event payload from the region. In a future version this will also handle an icon associated to the button.
This is the current usage:
MyView view = new MyView();
OutlookBarControl.SetOutlookBarMetadata(view, new OutlookBarMetadata
{
Title = "Mail",
Payload = "OnMailModuleActivate"
});
IRegionManager regionManager = Container.Resolve<IRegionManager>();
regionManager.Regions[RegionNames.OutlookBarRegion].Add(view); regionManager.Regions[RegionNames.OutlookBarRegion].Activate(view);
I would like to see a simpler API, specially for associating the metadata, but this is a start.
Read more about the implementation in Ezequiel’s post and download the code from the contrib site.
Smart Client Contrib 1.5 - WPF CAB Shell and lots of goodies!
April 18th, 2008
It's been a while as Kent said in his post. We've packaged lots of work done in the past 6 months or so. Mariano and Sebastian from the Southworks team have been actively commiting code.
Read the features in the home page of our codeplex site and download the release if you want to see some cool reference implementations and WPF CAB on esteroids.
China
November 12th, 2007
I’ve arrived to China after a long journey (~35 hours). I still needs to figure out what’s the time and what should I eat. Shanghai is very nice and it looks like any occidental city plenty of people and lights.
This week I will present in Chengdu about Software Factories and next week will deliver a 2 day workshop. And of course I will go to the Great Wall, the Forbidden City and squeeze every minute I’m here.
Smart Client Contrib and Updater Application Block new releases!
October 21st, 2007
The good old Updater Application Block won't be updated by patterns & practices, and the community now owns it. Our team at Smart Client Contrib took ownership of it. We (Curtis Gray mainly) ported it to work on .net 2.0 and Windows Vista. Below is the change log:
Application Block source code
- Works in Windows Vista!
- Updater Application Block relies on Enterprise Library 2.0 (Jan 2006) for the configuration
- Enterprise Library 3.0 could be used by recompiling the block and changing the configuration files
- BITS downloader no longer requires Administrator access.
- InstallUtil processor scans the .NET framework redist folders for a specified version of the InstallUtil application. It is no longer necessary to have .NET 1.1 installed.
- Multiple downloaders are correctly enumerated.
- Various changes and bug fixes to correctly parse Updater configuration files for each activation processor.
- Added saving of Source Folder in Manifest Editor
- The code compiles on .Net 2.0
- Quickstarts migrated to support the new configuration system
- Breaking changes only related to configuration and not the Updater API
- Bits Downloader now handles broken downloads gracefully
- UpdaterTask serialization fixed. There was a bug on the net 1.1 version of UAB related to the partial update scenario. When some files were removed from the manifest, the UAB serializes the UpdaterTask with the original version of the files. This caused the ApplicationDeployProcessor to fail.
- Partial update scenario fixed. The algorithms that might be used to calculate file hashes are non-keyed hash algorithms like: MD5; RIPEMD160; SHA1; SHA256; SHA384; SHA512
- Manifest tool fixed to correctly support salt enabled hashes
Samples
- Bootstrapper sample: a small exe app that will be installed in the client and will manage the updates
- MSI: showcase how to use MSIs to install, patch or remove an application
- Automatic Update: the application managing the updates automatically
- Manual Update: the user might decide to update or not the application
On the Smart Client side, we have some new features, samples and bugs fixed:
New Features:
- ItemsControlChildUIAdapter : allows any child of an ItemsControl to be utilized as a UI extension site (for example, allows a Separator to be used as an extension site)
- FrameworkContentElementActivationService : ensures any WPF FrameworkContentElements are built up correctly and exhibit the same behavior as FrameworkElements
- WrappedCabCommand : a WPF ICommand that wraps a CAB Command
Samples:
- Shell samples:
- ApplicationShellApplication
- WindowShellApplication
- Workspace samples:
- WindowsWorkspace
- DeckWorkspace
- TabWorkspace
- ZoneWorkspace
- Miscellaneous samples:
- UI Adapters and Commands
- Custom Visualizer
Bug Fixes
- Fixed bug in FrameworkElementActivationService that was assuming the OriginalSource of a focus event was a FrameworkElement
- Ensuring WindowSmartPartInfo only applies values to dependency properties if explicitly set
Go to our Codeplex site and start using them!
MSDN Briefing, Buenos Aires, Septiembre 2007
September 10th, 2007
When: September 20th, 2007
Where: Paseo La Plaza, Buenos Aires, Argentina
I’ll be presenting about "user experience" and what could be achieved using WPF in a scenario where offline is required. This is a preview…
Register here!
Hands on Labs for Web Client and Smart Client
September 6th, 2007
The p&p client team is working hard on getting hands on labs for both Smart Client Software Factory/CAB and Web Client Software Factory out of the door. I've been following the work they've been doing and I must say that the labs are the most insightful labs I ever seen.
Mariano was heavily involved in the creation of the labs and he really knows the technology, so the quality of the labs is pretty good. Now he's asking for feedback on the Smart Client labs since a final release of them is coming that will show how to use the Disconnected Service Agent and the WPF support. He also announced that the labs for Web Client Software Factory are available to download.
We started this effort a month ago and now we have a v1!
The team conformed by Kent Boogaart, Bil Simser, Ward Bell, Chris Holmes, Ezequiel Jadib and myself worked together to get a decent release out!
The package includes the following:
- WPF CAB Layer
A full implementation of the UI layer for CAB with 100% code coverage! - Outlook Bar Workspace & Quickstart
This is a workspace that provides a user experience like the Outlook Navigation bar. It allows the developer to add a smartpart to it with a SmartPartInfo that provides information like the icon and the text of the button - CAB Visualizer (requires WPF)
A CAB Visualizer is a tool that you can use to understand what happens behind the scenes in any CAB application. It will show the skeleton of workitems, smartparts, workspaces, commands, event topics and services - BankTeller Quickstart rewritten using SCSF 2007 and Winforms smartparts
- BankTeller Quickstart using SCSF 2007 and WPF smartparts
The CAB Visualizer is soo cool. It will help both newbies and experts to understand better what is happening behind the scenes on a CAB application.
Download the binaries or the source code from the codeplex site!
Now that the Outlook Bar is finally in scsf contrib I will close codeplex.com/cabextensions.
Acropolis
June 9th, 2007
It was on December 2006 when I first looked at this new framework on a developer lab at Redmond. I’m a big supporter of CAB as you may noticed if you read this blog and that is why I was invited. They want feedback. Acropolis grabbed many concepts and patterns that were successful in CAB, so people who invested in CAB and/or SCSF will have a seamless migration path and will understand Acropolis without too much hassle. Read this post from Glenn for more information on the future of CAB/SCSF.
Ezequiel Jadib is starting a set of posts/tutorials for Acropolis and the first is the classic hello world using a Part and a Command with the default layout.
SCSF Contrib up!
May 28th, 2007
Glenn posted about it. I will be collaborating in the project and together with Bil Simser, Ward Bell and Kent Boogaart we will try to make it significant.
I will move the Outlook bar to the contrib project and any other addition I made in the past and will do in the future will go there. Kent already uploaded the WPF CAB layer implementation.
WPF Support in Smart Client Software Factory v2
May 10th, 2007
Read Miguel’s post about the upcoming support for WPF.
There is no black magic. Simply you will be able to treat WPF smartparts as you treated Winforms smartpart (i.e. dependency injection will apply).
Also you will get a recipe to add a WPF view with a presenter.
People who invested in CAB will have a smooth migration path from Winforms to WPF and a familiar programming model.