Restructure Proposed Changes

Coordinator
Nov 16, 2009 at 6:31 AM
Edited Nov 16, 2009 at 6:33 AM

This will be a breaking change in the source control with the end results being a nice seperation between the DE Map control and the DE Toolkit.

1. Proposed file structure:

Root
-Map
--DeepEarth.Map
--Services
---Bing
---BlueMarble
---CloudMade
---GeoRss
---Google
---etc
-Toolkit
--Client
---Common
---ColorPicker
---CoordinatePanel
----BingMap
----DEMap
---DateRangeSlider
---Digitizer
----BingMap
---Find
----BingMap
---NavigationPanel
----BingMap
----DEMap
---etc
--Server
---Common
---TileHandler
-Libraries
--NetTopologySuite
--GeoAPI
--Compiled dlls, proj.net, SL toolkit, Microsoft.Maps.MapControl etc.

So we have three main folders, the core DeepEarth Maps, the toolkit and third party dlls or Silverlight ports.

Controls in the Toolkit will either be map agnostic, (eg ColorPicker),  OR live in a folder based on the map they work with eg Digitizer just works with Bing currently.

2. Namespaces:

Mostly the same but toolkit can drop the extra namespaces eg:

DeepEarth.Client.Controls.CoordinatePanel.BingMaps namespace for the Bingmaps version of the CoordinatePanel control is over the top, just be DeepEarth.Client.Controls.BingMaps as a namespace, assembly would become DeepEarth.Client.Controls.BingMaps.CoordinatePanel

DeepEarth.Client.Controls.CoordinatePanel.DEMap namespace for the DE map version of the CoordinatePanel control would be DeepEarth.Client.Controls.DEMap as a namespace, assembly would become DeepEarth.Client.Controls.DEMap.CoordinatePanel

Example of a map agnostic control:

DeepEarth.Client.Controls.ColorPicker.ColorPicker would be just DeepEarth.Client.Controls.ColorPicker.

3. Drop abstract class in toolkit controls

Although it was kind of neat it just created a bunch of complex plumbing, we will have duplication for controls but it will be super easy for anyone to come and understand it or use it for the map they are interested in. eg for DEMap you just add the DEMap version of the dlls, 1 dll per control but pretty easy for us to combine into one dll at release time if we feel it is nicer.

4. Replace all references to Microsoft.Maps.MapControl.Map with Microsoft.Maps.MapControl.MapCore

5. Move the custom styles for each control (DeepEarthDark) into each generic.xaml template

The idea here is that out of the box each control looks really good with needing to reference the SL toolkit and include a massive theme xaml. Overall if you're useing all the controls this may be ever slightly larger but allows us to keep each control seperate and easily maintained by its owner.

Let me know if there is anything else you feel should be done at the same time or any comments or suggestions. I want to get this done by the end of the week.

Nov 16, 2009 at 8:06 AM

looks good ..guess we will get some more detail from MS soon on support for adding in other providers to the Bing map control

Coordinator
Nov 26, 2009 at 5:31 AM

About to start the major restructure now, only change to the above is this will go under a folder called "trunk" and I'll have a folder called "branch" for things like SL4 etc later.

Coordinator
Nov 26, 2009 at 1:42 PM

Restructure is completed, All 5 tasks above have been completed. Make sure you get a complete new copy of the source code.

I would expect some bugs, let's start using the issues tracker again here at codeplex to report them. It's really late here now but I'll see if I can clear out any old task / bugs so they don't interfere over the weekend as well as doing some serious testing.