Ok. I got the Windows Presentation Framework (aka Avalon) from amazon.com 3 weeks back. It's a great book to learn WPF and be sure to check Chris's code sample update site. It's been quite a bit of breaking change in WPF. So again, I decided to write a cool smart client application to learn about it and keep up to date with this awesome technology. Only that this time there'll be an internal developer contest that will due Nov 7th 2005 and I'll submit this application soon. I've just complete this project of mine.

Here's some statistics on this small project:
1. Percentage in declarative markup: ~75%
2. Hours used: ~80 hours [OOF time]
3. Technology used: Avalon, XAML, SOAP, WinForm Integration, HTML, JavaScript, HTTP, rawsocket, tcp socket, Win32 APIs,
MSN Search APIs, virtual earth map control.
4. Based on
PDC September 2005 build of WinFX.


I'll be uploading my code to
channel9 forum or maybe even blog about how to accomplish certain parts of the application (if I have time). But all this needs to happen after the developer contest [:)].

The goal of this client is to search for anything and all will show in a map control from Virtual Earth. Here's what my application do:
1. Search for a person or business (eg. McDonalds) and it will tell you all the McDonalds in your area (+phone) and in a data-binding styled listbox.
2. Search for an address (eg. One Microsoft Way Redmond WA) and it will show you where it is in the map etc.
3. Search for an IP address (eg. 202.190.100.22) and it will tell you where this IP address is located physically.
4. Search based on Longitude/Latitude (geo-positions). This is useful for geocaching.
5. Search for a web query and it data-binding styled listbox will your search result (from MSN Search[li]) and you can optionally launch browser from the app.
6. Address Manager (let you maintain a list of location/addresses and can drill down to it whenever you want).
7. Connection Manager (let you look at all tcp connections in your machine - great for peer to peer scenarios)
    a. Let you drill down to where this connection are from physically (will show in map)
    b. Let you do a whois (port 43) query about this IP address.
    c. Let you do a traceroute and identify each hop along the way.
    d. Even let you visually look at each hop in the virtual earth map.
8. Locate where you are physically, automatically.
9. Custom clipping window skin (like Windows Media)

Overall this shows how easy to leverage great features from the platform. Takes a small amount of time to develop something that look as complex as this app and with so many real features.

Here are some screenshot of this smart client:


[Updated]
Avalon technology area used in the project:
1. A lot of data binding (DataTemplate), XmlDataProvider and property binding.
2. WindowsFormsIntegration and other hacks to enable 2 way interaction with Javascript engine.
     - now it's able to call javascript invokeScript() from Avalon Managed world.
     - Possible with .NET 2.0 and ObjectForScripting.
3. Transformation like LayoutTransform, RenderTransform, RotateTransform
4. Brushes - Gradient, DrawingBrush. Had some cool effects with VisualBrush but no chance to use them.
5. 3d - use tag like MeshGeometry3D, Transform3DGroup, Viewport3D, MaterialGroup for the 1st time.
6. Animation - Triggers, EventTrigger, BeginStoryboard and DoubleAnimation.
7. Other small stuff like ResourceDictionary.

More screenshot here.