[mapguide-commits] r5396 - in sandbox/maestro-3.0: . Maestro.Base/Templates Maestro.Editors Maestro.Editors/FeatureSource/Providers Maestro.Editors/Fusion Maestro.Editors/Fusion/WidgetEditors Maestro.Editors/Properties Maestro.Editors/Resources MaestroAPITestRunner MaestroAPITestRunner/Properties MaestroAPITests OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/ObjectModels OSGeo.MapGuide.MaestroAPI/Properties OSGeo.MapGuide.MaestroAPI/Resources OSGeo.MapGuide.MaestroAPI.Http SDK

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sun Nov 21 16:03:39 EST 2010


Author: jng
Date: 2010-11-21 13:03:39 -0800 (Sun, 21 Nov 2010)
New Revision: 5396

Added:
   sandbox/maestro-3.0/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.Designer.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.resx
   sandbox/maestro-3.0/Maestro.Editors/Resources/ui-separator.png
   sandbox/maestro-3.0/MaestroAPITestRunner/
   sandbox/maestro-3.0/MaestroAPITestRunner/MaestroAPITestRunner.csproj
   sandbox/maestro-3.0/MaestroAPITestRunner/Program.cs
   sandbox/maestro-3.0/MaestroAPITestRunner/Properties/
   sandbox/maestro-3.0/MaestroAPITestRunner/Properties/AssemblyInfo.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resources/
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resources/BaseTemplate.ApplicationDefinition.xml
Modified:
   sandbox/maestro-3.0/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs
   sandbox/maestro-3.0/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/AboutWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ActivityIndicatorWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferPanelWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ColorPickerWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/CursorPositionWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/EditableScaleWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ExtentHistoryWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/FeatureInfoWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/GenericWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/HelpWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/IWidgetEditor.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InitialMapViewWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InvokeScriptWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/LegendWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/MapMenuWidgetCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.Designer.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.resx
   sandbox/maestro-3.0/Maestro.Editors/Maestro.Editors.csproj
   sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.Designer.cs
   sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.resx
   sandbox/maestro-3.0/MaestroAPITests/ResourceTests.cs
   sandbox/maestro-3.0/MaestroAPITests/RuntimeMapTests.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpCoordinateSystem.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinition.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInfo.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInterfaces.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx
   sandbox/maestro-3.0/SDK/SDK.sln
Log:
3.0 sandbox changes:
 - Add a MaestroAPITestRunner project which runs the API test suite (and to workaround the lack of launching custom executables in VS Express)
 - Fix the ApplicationDefinition interfaces to allow programmatic creation of flexible layout documents
 - Add a guard in the test suite setup to prevent duplicate ObjectFactory registration
 - Introduce a FlexibleLayoutEditorContext class that provides widget editor services. Note fusion editor is still not fully implemented and working with this revision

Modified: sandbox/maestro-3.0/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -25,6 +25,7 @@
 using Res = Maestro.Base.Properties.Resources;
 using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 
 namespace Maestro.Base.Templates
 {
@@ -49,7 +50,7 @@
 
         public override IResource CreateItem(IServerConnection conn)
         {
-            return ObjectFactory.CreateFlexibleLayout(conn);
+            return ObjectFactory.CreateFlexibleLayout(conn, FusionTemplateNames.Slate);
         }
     }
 }

Modified: sandbox/maestro-3.0/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -79,12 +79,12 @@
 
             var colName = new DataGridViewColumn();
             colName.Name = "COL_NAME";
-            colName.HeaderText = "Name"; //LOCALIZE
+            colName.HeaderText = Properties.Resources.ColHeaderName;
             colName.ReadOnly = true;
             colName.CellTemplate = new DataGridViewTextBoxCell();
             var colValue = new DataGridViewColumn();
             colValue.Name = "COL_VALUE";
-            colValue.HeaderText = "Value"; //LOCALIZE
+            colValue.HeaderText = Properties.Resources.ColHeaderValue;
             colValue.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
             colValue.CellTemplate = new DataGridViewTextBoxCell();
 

Added: sandbox/maestro-3.0/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs	                        (rev 0)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,79 @@
+#region Disclaimer / License
+// Copyright (C) 2010, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
+using OSGeo.MapGuide.MaestroAPI;
+
+namespace Maestro.Editors.Fusion
+{
+    public class FlexibleLayoutEditorContext
+    {
+        private IFusionService _service;
+
+        private IApplicationDefinitionWidgetInfoSet _widgetSet;
+        private IApplicationDefinitionTemplateInfoSet _templateSet;
+        private IApplicationDefinitionContainerInfoSet _containerSet;
+
+        public FlexibleLayoutEditorContext(IFusionService service)
+        {
+            _service = service;
+
+            _widgetSet = _service.GetApplicationWidgets();
+            _templateSet = _service.GetApplicationTemplates();
+            _containerSet = _service.GetApplicationContainers();
+        }
+
+        public IWidgetInfo GetWidgetInfo(string name)
+        {
+            Check.NotEmpty(name, "name");
+            foreach (var wgt in _widgetSet.WidgetInfo)
+            {
+                if (name.Equals(wgt.Type))
+                    return wgt;
+            }
+            return null;
+        }
+
+        public IApplicationDefinitionContainerInfo GetContainerInfo(string name)
+        {
+            Check.NotEmpty(name, "name");
+            foreach (var cnt in _containerSet.ContainerInfo)
+            {
+                if (name.Equals(cnt.Type))
+                    return cnt;
+            }
+            return null;
+        }
+
+        public IApplicationDefinitionTemplateInfo GetTemplateInfo(string name)
+        {
+            Check.NotEmpty(name, "name");
+            foreach (var tpl in _templateSet.TemplateInfo)
+            {
+                if (name.Equals(tpl.Name))
+                    return tpl;
+            }
+            return null;
+        }
+    }
+}

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/AboutWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/AboutWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/AboutWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,10 +37,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
             txtUrl.Text = _widget.GetValue("AboutURL");
         }
 

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ActivityIndicatorWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ActivityIndicatorWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ActivityIndicatorWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,10 +37,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
             txtElementId.Text = _widget.GetValue("ElementId");
         }
 

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferPanelWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferPanelWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferPanelWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -38,10 +38,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
 
             TextBoxBinder.BindText(txtTarget, this, "Target");
         }

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/BufferWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -43,10 +43,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
 
             TextBoxBinder.BindText(txtBorderColorInput, this, "BorderColorInput");
             TextBoxBinder.BindText(txtBufferDistance, this, "BufferDistance");

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ColorPickerWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ColorPickerWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ColorPickerWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,10 +37,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
 
             txtColorInputId.Text = _widget.GetValue("ColorInputId");
         }

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/CursorPositionWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/CursorPositionWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/CursorPositionWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -38,10 +38,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
 
             txtTemplate.Text = _widget.GetValue("Template");
             numPrecision.Value = Convert.ToDecimal(_widget.GetValue("Precision"));

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/EditableScaleWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/EditableScaleWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/EditableScaleWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -38,10 +38,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
 
             numPrecision.Value = Convert.ToDecimal(_widget.GetValue("Precision"));
         }

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ExtentHistoryWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ExtentHistoryWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/ExtentHistoryWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -38,10 +38,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
             txtDirection.Text = _widget.GetValue("Direction");
         }
 

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/FeatureInfoWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/FeatureInfoWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/FeatureInfoWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,10 +37,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
             txtTarget.Text = _widget.GetValue("Target");
         }
 

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/GenericWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/GenericWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/GenericWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -42,7 +42,7 @@
         private string _xml;
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
             _xml = _widget.ToXml();

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/HelpWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/HelpWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/HelpWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,10 +37,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
             txtTarget.Text = _widget.GetValue("Target");
             txtUrl.Text = _widget.GetValue("Url");
         }

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/IWidgetEditor.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/IWidgetEditor.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/IWidgetEditor.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -27,7 +27,7 @@
 {
     public interface IWidgetEditor
     {
-        void Setup(IWidget widget, IEditorService edsvc);
+        void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc);
 
         Control Content { get; }
     }

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InitialMapViewWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InitialMapViewWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InitialMapViewWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -38,10 +38,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
             txtViewType.Text = _widget.GetValue("ViewType");
         }
 

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InvokeScriptWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InvokeScriptWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/InvokeScriptWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,7 +37,7 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
             

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/LegendWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/LegendWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/LegendWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,10 +37,10 @@
 
         private IWidget _widget;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
-            baseEditor.Setup(_widget, edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
 
             chkHideInvisibleLayers.Checked = Convert.ToBoolean(_widget.GetValue("HideInvisibleLayers"));
             chkShowMapFolder.Checked = Convert.ToBoolean(_widget.GetValue("ShowMapFolder"));

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/MapMenuWidgetCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/MapMenuWidgetCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/MapMenuWidgetCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -39,11 +39,11 @@
         private IWidget _widget;
         private IEditorService _edsvc;
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             _widget = widget;
             _edsvc = edsvc;
-            baseEditor.Setup(_widget, _edsvc);
+            baseEditor.Setup(_widget, context, edsvc);
             txtFolder.Text = _widget.GetValue("Folder");
         }
 

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -36,7 +36,7 @@
             InitializeComponent();
         }
 
-        public void Setup(IWidget widget, IEditorService edsvc)
+        public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
             TextBoxBinder.BindText(txtName, widget, "Name");
             TextBoxBinder.BindText(txtType, widget, "Type");

Added: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.Designer.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.Designer.cs	                        (rev 0)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.Designer.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,74 @@
+namespace Maestro.Editors.Fusion
+{
+    partial class WidgetReferenceCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.label1 = new System.Windows.Forms.Label();
+            this.cmbWidgetRefs = new System.Windows.Forms.ComboBox();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(19, 18);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(100, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Referenced Widget";
+            // 
+            // cmbWidgetRefs
+            // 
+            this.cmbWidgetRefs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.cmbWidgetRefs.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbWidgetRefs.FormattingEnabled = true;
+            this.cmbWidgetRefs.Location = new System.Drawing.Point(135, 15);
+            this.cmbWidgetRefs.Name = "cmbWidgetRefs";
+            this.cmbWidgetRefs.Size = new System.Drawing.Size(386, 21);
+            this.cmbWidgetRefs.TabIndex = 1;
+            this.cmbWidgetRefs.SelectedIndexChanged += new System.EventHandler(this.cmbWidgetRefs_SelectedIndexChanged);
+            // 
+            // WidgetReferenceCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.cmbWidgetRefs);
+            this.Controls.Add(this.label1);
+            this.Name = "WidgetReferenceCtrl";
+            this.Size = new System.Drawing.Size(575, 53);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.ComboBox cmbWidgetRefs;
+    }
+}

Added: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.cs	                        (rev 0)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,59 @@
+#region Disclaimer / License
+// Copyright (C) 2010, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
+
+namespace Maestro.Editors.Fusion
+{
+    public partial class WidgetReferenceCtrl : UserControl
+    {
+        private WidgetReferenceCtrl()
+        {
+            InitializeComponent();
+        }
+
+        private IWidgetItem _widgetRef;
+        private IApplicationDefinition _flexLayout;
+
+        public WidgetReferenceCtrl(IWidgetItem item, IEditorService edsvc)
+            : this()
+        {
+            _widgetRef = item;
+            _flexLayout = (IApplicationDefinition)edsvc.GetEditedResource();
+            cmbWidgetRefs.DataSource = _flexLayout.GetAllReferenceableWidgetNames();
+
+            cmbWidgetRefs.SelectedItem = item.Widget;
+        }
+
+        private void cmbWidgetRefs_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (cmbWidgetRefs.SelectedItem != null)
+            {
+                _widgetRef.Widget = cmbWidgetRefs.SelectedItem.ToString();
+            }
+        }
+    }
+}

Added: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.resx
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.resx	                        (rev 0)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetReferenceCtrl.resx	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.Designer.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.Designer.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.Designer.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -28,11 +28,15 @@
         /// </summary>
         private void InitializeComponent()
         {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WidgetSettingsCtrl));
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.trvWidgets = new System.Windows.Forms.TreeView();
             this.toolStrip1 = new System.Windows.Forms.ToolStrip();
             this.btnAddWidget = new System.Windows.Forms.ToolStripDropDownButton();
-            this.propertiesPanel = new System.Windows.Forms.Panel();
+            this.widgetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.separatorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.flyoutMenuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.btnAddContainer = new System.Windows.Forms.ToolStripButton();
             this.btnRemoveWidget = new System.Windows.Forms.ToolStripButton();
             this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
@@ -40,6 +44,8 @@
             this.btnMoveDown = new System.Windows.Forms.ToolStripButton();
             this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
             this.btnConfigureWidgets = new System.Windows.Forms.ToolStripButton();
+            this.propertiesPanel = new System.Windows.Forms.Panel();
+            this.widgetImageList = new System.Windows.Forms.ImageList(this.components);
             this.contentPanel.SuspendLayout();
             this.groupBox1.SuspendLayout();
             this.toolStrip1.SuspendLayout();
@@ -92,22 +98,40 @@
             // btnAddWidget
             // 
             this.btnAddWidget.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.btnAddWidget.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.widgetToolStripMenuItem,
+            this.separatorToolStripMenuItem,
+            this.flyoutMenuToolStripMenuItem});
             this.btnAddWidget.Image = global::Maestro.Editors.Properties.Resources.gear__plus;
             this.btnAddWidget.ImageTransparentColor = System.Drawing.Color.Magenta;
             this.btnAddWidget.Name = "btnAddWidget";
             this.btnAddWidget.Size = new System.Drawing.Size(29, 22);
             this.btnAddWidget.Text = "toolStripDropDownButton1";
             // 
-            // propertiesPanel
+            // widgetToolStripMenuItem
             // 
-            this.propertiesPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.propertiesPanel.Location = new System.Drawing.Point(209, 6);
-            this.propertiesPanel.Name = "propertiesPanel";
-            this.propertiesPanel.Size = new System.Drawing.Size(436, 280);
-            this.propertiesPanel.TabIndex = 1;
+            this.widgetToolStripMenuItem.Image = global::Maestro.Editors.Properties.Resources.gear;
+            this.widgetToolStripMenuItem.Name = "widgetToolStripMenuItem";
+            this.widgetToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+            this.widgetToolStripMenuItem.Text = "Widget";
+            this.widgetToolStripMenuItem.Click += new System.EventHandler(this.widgetToolStripMenuItem_Click);
             // 
+            // separatorToolStripMenuItem
+            // 
+            this.separatorToolStripMenuItem.Image = global::Maestro.Editors.Properties.Resources.ui_separator;
+            this.separatorToolStripMenuItem.Name = "separatorToolStripMenuItem";
+            this.separatorToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+            this.separatorToolStripMenuItem.Text = "Separator";
+            this.separatorToolStripMenuItem.Click += new System.EventHandler(this.separatorToolStripMenuItem_Click);
+            // 
+            // flyoutMenuToolStripMenuItem
+            // 
+            this.flyoutMenuToolStripMenuItem.Image = global::Maestro.Editors.Properties.Resources.ui_menu;
+            this.flyoutMenuToolStripMenuItem.Name = "flyoutMenuToolStripMenuItem";
+            this.flyoutMenuToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+            this.flyoutMenuToolStripMenuItem.Text = "Flyout Menu";
+            this.flyoutMenuToolStripMenuItem.Click += new System.EventHandler(this.flyoutMenuToolStripMenuItem_Click);
+            // 
             // btnAddContainer
             // 
             this.btnAddContainer.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -126,6 +150,7 @@
             this.btnRemoveWidget.Name = "btnRemoveWidget";
             this.btnRemoveWidget.Size = new System.Drawing.Size(23, 22);
             this.btnRemoveWidget.Text = "toolStripButton2";
+            this.btnRemoveWidget.Click += new System.EventHandler(this.btnRemoveWidget_Click);
             // 
             // toolStripSeparator1
             // 
@@ -141,6 +166,7 @@
             this.btnMoveUp.Name = "btnMoveUp";
             this.btnMoveUp.Size = new System.Drawing.Size(23, 22);
             this.btnMoveUp.Text = "toolStripButton3";
+            this.btnMoveUp.Click += new System.EventHandler(this.btnMoveUp_Click);
             // 
             // btnMoveDown
             // 
@@ -151,6 +177,7 @@
             this.btnMoveDown.Name = "btnMoveDown";
             this.btnMoveDown.Size = new System.Drawing.Size(23, 22);
             this.btnMoveDown.Text = "toolStripButton4";
+            this.btnMoveDown.Click += new System.EventHandler(this.btnMoveDown_Click);
             // 
             // toolStripSeparator2
             // 
@@ -165,7 +192,27 @@
             this.btnConfigureWidgets.Name = "btnConfigureWidgets";
             this.btnConfigureWidgets.Size = new System.Drawing.Size(23, 22);
             this.btnConfigureWidgets.Text = "Configure";
+            this.btnConfigureWidgets.Click += new System.EventHandler(this.btnConfigureWidgets_Click);
             // 
+            // propertiesPanel
+            // 
+            this.propertiesPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.propertiesPanel.Location = new System.Drawing.Point(209, 6);
+            this.propertiesPanel.Name = "propertiesPanel";
+            this.propertiesPanel.Size = new System.Drawing.Size(436, 280);
+            this.propertiesPanel.TabIndex = 1;
+            // 
+            // widgetImageList
+            // 
+            this.widgetImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("widgetImageList.ImageStream")));
+            this.widgetImageList.TransparentColor = System.Drawing.Color.Transparent;
+            this.widgetImageList.Images.SetKeyName(0, "application.png");
+            this.widgetImageList.Images.SetKeyName(1, "gear.png");
+            this.widgetImageList.Images.SetKeyName(2, "ui-separator.png");
+            this.widgetImageList.Images.SetKeyName(3, "ui-menu.png");
+            // 
             // WidgetSettingsCtrl
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -196,5 +243,9 @@
         private System.Windows.Forms.ToolStripButton btnMoveDown;
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
         private System.Windows.Forms.ToolStripButton btnConfigureWidgets;
+        private System.Windows.Forms.ImageList widgetImageList;
+        private System.Windows.Forms.ToolStripMenuItem widgetToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem separatorToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem flyoutMenuToolStripMenuItem;
     }
 }

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -27,6 +27,7 @@
 using Maestro.Editors.Common;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.MaestroAPI;
 
 namespace Maestro.Editors.Fusion
 {
@@ -37,6 +38,11 @@
             InitializeComponent();
         }
 
+        const int IDX_CONTAINER = 0;
+        const int IDX_WIDGET = 1;
+        const int IDX_SEPARATOR = 2;
+        const int IDX_MENU = 3;
+
         private IFusionService _fsvc;
         private IApplicationDefinition _flexLayout;
         private string _baseUrl;
@@ -59,5 +65,110 @@
             _flexLayout = (IApplicationDefinition)service.GetEditedResource();
             
         }
+
+        private void widgetToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            var cnt = this.SelectedContainer;
+            if (cnt != null)
+            {
+                string[] widgets = _flexLayout.GetAllReferenceableWidgetNames();
+                string widget = GenericItemSelectionDialog.SelectItem(
+                    Properties.Resources.AddWidgetReference, 
+                    Properties.Resources.SelectWidget, 
+                    widgets);
+                if (widget != null)
+                {
+                    //at end
+                    var item = _flexLayout.CreateWidgetReference(widget);
+                    cnt.Insert(item, cnt.ItemCount - 1);
+                    this.SelectedNode.Nodes.Add(CreateNode(item));
+                }
+            }
+        }
+
+        private void separatorToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            var cnt = this.SelectedContainer;
+            if (cnt != null)
+            {
+                //at end
+                var item = _flexLayout.CreateSeparator();
+                cnt.Insert(item, cnt.ItemCount - 1);
+                this.SelectedNode.Nodes.Add(CreateNode(item));
+            }
+        }
+
+        private void flyoutMenuToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            var cnt = this.SelectedContainer;
+            if (cnt != null)
+            {
+                //at end
+                var item = _flexLayout.CreateFlyout(Properties.Resources.NewFlyout);
+                cnt.Insert(item, cnt.ItemCount - 1);
+                this.SelectedNode.Nodes.Add(CreateNode(item));
+            }
+        }
+
+        private static TreeNode CreateNode(IUIItem item)
+        {
+            Check.NotNull(item, "item");
+            var node = new TreeNode();
+            switch (item.Function)
+            {
+                case UiItemFunctionType.Flyout:
+                    {
+                        node.ImageIndex = node.SelectedImageIndex = IDX_MENU;
+                        node.Text = ((IFlyoutItem)item).Label;
+                    }
+                    break;
+                case UiItemFunctionType.Separator:
+                    {
+                        node.ImageIndex = node.SelectedImageIndex = IDX_SEPARATOR;
+                        node.Text = Properties.Resources.Separator;
+                    }
+                    break;
+                case UiItemFunctionType.Widget:
+                    {
+                        node.ImageIndex = node.SelectedImageIndex = IDX_WIDGET;
+                        node.Text = ((IWidgetItem)item).Widget;
+                    }
+                    break;
+            }
+            return node;
+        }
+
+        internal TreeNode SelectedNode
+        {
+            get { return trvWidgets.SelectedNode; }
+        }
+
+        internal IUIItemContainer SelectedContainer
+        {
+            get
+            {
+                return this.SelectedNode.Tag as IUIItemContainer;
+            }
+        }
+
+        private void btnRemoveWidget_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        private void btnMoveUp_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        private void btnMoveDown_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        private void btnConfigureWidgets_Click(object sender, EventArgs e)
+        {
+
+        }
     }
 }

Modified: sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.resx
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.resx	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Fusion/WidgetSettingsCtrl.resx	2010-11-21 21:03:39 UTC (rev 5396)
@@ -120,4 +120,55 @@
   <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="widgetImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>122, 17</value>
+  </metadata>
+  <data name="widgetImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACU
+        CQAAAk1TRnQBSQFMAgEBBAEAASgBAAEoAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AFgAO/xEA
+        IP8BAAL/AfQC8wHwAu8B8ALzAfQC/xEAAfAOBwHwAbwO7wG8AwAB8gHvAfQB7wLwAe8B9AHvAfITAAEH
+        AfMM8gHzAgcB8wzyAfMBBwIAAfIB9wG8Au8CvALvAbwB9wHyEgABvAHzAeoL8gHzArwB8wzyAfMBvAIA
+        Ae8BvAHvAbwB7wK8Ae8BvAHvAbwB7xIAAfAO8wHwAbwB8wzyAfMBvAIAAfQB7wG8AQcB8QL0AfEBBwG8
+        Ae8B9BIAAfAO7wHwAbwB9AzzAfQBvAEAAfICBwHvArwCBwK8Ae8CBwHyEQAB8AH0DPMB9ALwAfQM8wH0
+        AfABAAQHAfABBwIAAQcB8AQHEQAB8AH0AesL8wH0AvAO9AHwAQACvAIHAfABBwIAAQcB8AIHArwBABAH
+        AfEO9AHxAfAO/wHwAQAB8wK8Ae8B8AEHAu8BBwHwAe8CvAHzEQAB8AKSA+0J7AEHAfAO/wHwAgAB/wG8
+        AfABvAHxAvIB8QG8AfABvAH/EgAB8AGSAf8D7QnsAQcB8Q7/AfECAAHwAfIBvAHyAQcC8gEHAfEBvAHy
+        AfASAAHwApID7QnsAQcB8AMHBu8D9wKSAbwCAAHzAbwB8wLwAvIC8AHzAbwB8xIAAfEO/wLxAfAC8QLw
+        ArwCBwW8AfEDAAHzAfAB/wHwAf8B9AHwAf8B8AHzEwAB8QH/AZIM/wHxAfQB8gzxAfIB9AYAAfMC8QHz
+        FgAB8Q7/AfEwAAHzDvIB8wFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/gQAC/wGA
+        AQEC/wQAAYABAQL/BAAB4AEHAv8EAAHAAQMC/wQAAcABAwL/BAABwAEDAv8EAAGAAQEC/wQAAoEC/wQA
+        AoEGAAGAAQEC/wQAAcABAwL/BAABwAEDAv8EAAHAAQMC/wQAAeABBwL/BAAB/AE/Av8CAAb/AgAL
+</value>
+  </data>
 </root>
\ No newline at end of file

Modified: sandbox/maestro-3.0/Maestro.Editors/Maestro.Editors.csproj
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Maestro.Editors.csproj	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Maestro.Editors.csproj	2010-11-21 21:03:39 UTC (rev 5396)
@@ -262,6 +262,7 @@
     <Compile Include="Fusion\FlexibleLayoutEditor.Designer.cs">
       <DependentUpon>FlexibleLayoutEditor.cs</DependentUpon>
     </Compile>
+    <Compile Include="Fusion\FlexibleLayoutEditorContext.cs" />
     <Compile Include="Fusion\FlexLayoutSettingsCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
@@ -426,6 +427,12 @@
     <Compile Include="Fusion\WidgetEditors\WidgetEditorBase.Designer.cs">
       <DependentUpon>WidgetEditorBase.cs</DependentUpon>
     </Compile>
+    <Compile Include="Fusion\WidgetReferenceCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Fusion\WidgetReferenceCtrl.Designer.cs">
+      <DependentUpon>WidgetReferenceCtrl.cs</DependentUpon>
+    </Compile>
     <Compile Include="Fusion\WidgetSettingsCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
@@ -965,6 +972,9 @@
     <EmbeddedResource Include="Fusion\WidgetEditors\WidgetEditorBase.resx">
       <DependentUpon>WidgetEditorBase.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Fusion\WidgetReferenceCtrl.resx">
+      <DependentUpon>WidgetReferenceCtrl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Fusion\WidgetSettingsCtrl.resx">
       <DependentUpon>WidgetSettingsCtrl.cs</DependentUpon>
     </EmbeddedResource>
@@ -1654,6 +1664,7 @@
     <Content Include="FsEditorMap.xml">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
+    <None Include="Resources\ui-separator.png" />
     <None Include="Resources\gear--plus.png" />
     <None Include="Resources\gear--pencil.png" />
     <None Include="Resources\gear--minus.png" />

Modified: sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.Designer.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.Designer.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.Designer.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -61,6 +61,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Add Widget Reference.
+        /// </summary>
+        internal static string AddWidgetReference {
+            get {
+                return ResourceManager.GetString("AddWidgetReference", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Aggregate Query.
         /// </summary>
         internal static string AggregateQuery {
@@ -204,6 +213,24 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Name.
+        /// </summary>
+        internal static string ColHeaderName {
+            get {
+                return ResourceManager.GetString("ColHeaderName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Value.
+        /// </summary>
+        internal static string ColHeaderValue {
+            get {
+                return ResourceManager.GetString("ColHeaderValue", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to &quot;ColorName&quot;,&quot;NumOfColors&quot;,&quot;Type&quot;,&quot;CritVal&quot;,&quot;ColorNum&quot;,&quot;ColorLetter&quot;,&quot;R&quot;,&quot;G&quot;,&quot;B&quot;,&quot;SchemeType&quot;
         ///&quot;Accent&quot;,3,&quot;qual&quot;,,1,&quot;A&quot;,127,201,127,&quot;Qualitative&quot;
         ///,,,,2,&quot;B&quot;,190,174,212,
@@ -2010,6 +2037,24 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Select widget.
+        /// </summary>
+        internal static string SelectWidget {
+            get {
+                return ResourceManager.GetString("SelectWidget", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Separator.
+        /// </summary>
+        internal static string Separator {
+            get {
+                return ResourceManager.GetString("Separator", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Sequential.
         /// </summary>
         internal static string SequentialName {
@@ -2219,6 +2264,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap ui_separator {
+            get {
+                object obj = ResourceManager.GetObject("ui-separator", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap ui_splitter_horizontal {
             get {
                 object obj = ResourceManager.GetObject("ui_splitter_horizontal", resourceCulture);

Modified: sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.resx
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.resx	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/Maestro.Editors/Properties/Resources.resx	2010-11-21 21:03:39 UTC (rev 5396)
@@ -166,6 +166,9 @@
   <data name="icon_refreshmap_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_refreshmap_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="folder_horizontal" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\folder-horizontal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="block" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\block.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -175,8 +178,8 @@
   <data name="icon_tasks" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_tasks.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="icon_forward_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_forward_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="ColHeaderName" xml:space="preserve">
+    <value>Name</value>
   </data>
   <data name="ui_splitter_horizontal" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ui-splitter-horizontal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -187,12 +190,12 @@
   <data name="layer" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\layer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="NoWidgetEditorIface" xml:space="preserve">
+    <value>The specified editor does not implement the required IWidgetEditor interface</value>
+  </data>
   <data name="control" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\control.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="sql" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\sql.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="icon_zoomout_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_zoomout_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -247,9 +250,15 @@
   <data name="document--pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\document--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="layer--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layer--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="tick" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="gear--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\gear--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="gear" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="AggregateQuery" xml:space="preserve">
     <value>Aggregate Query</value>
   </data>
@@ -325,6 +334,9 @@
   <data name="FilterSqlite" xml:space="preserve">
     <value>SQLite files|*.sqlite;*.db;*.sdx;*.slt</value>
   </data>
+  <data name="ColHeaderValue" xml:space="preserve">
+    <value>Value</value>
+  </data>
   <data name="InvalidRestorePathError" xml:space="preserve">
     <value>An error occured while validating the restore path: {0}\nIt should have the format: \"Libray://folder/folder/\".</value>
     <comment>A message that is displayed when the restore path does not validate</comment>
@@ -343,10 +355,6 @@
   <data name="icon_fitwindow" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_fitwindow.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="InvalidValueError" xml:space="preserve">
-    <value>Invalid value</value>
-    <comment>An error message that is displayed when the entered value is invalid</comment>
-  </data>
   <data name="UnitsKb" xml:space="preserve">
     <value>KB</value>
   </data>
@@ -366,14 +374,17 @@
   <data name="TestConnectionNoErrors" xml:space="preserve">
     <value>Provider reported no errors</value>
   </data>
+  <data name="globe--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\globe--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="icon_selectpolygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_selectpolygon.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="StandardQuery" xml:space="preserve">
     <value>Standard Query</value>
   </data>
-  <data name="FileDownloaded" xml:space="preserve">
-    <value>File Downloaded</value>
+  <data name="OverwriteDisplayScales" xml:space="preserve">
+    <value>Overwrite the current display scales?</value>
   </data>
   <data name="map--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\map--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -385,19 +396,16 @@
   <data name="application-search-result" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\application-search-result.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="GeometryStyleComboDataset" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\GeometryStyleComboDataset.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  <data name="gear--arrow" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\gear--arrow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="globe--pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\globe--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="layer--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layer--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="UnknownResourceTypes" xml:space="preserve">
     <value>Unknown types</value>
     <comment>The list entry that represents unknown resource types</comment>
   </data>
-  <data name="icon_zoomin_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_zoomin_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="icon_panright" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_panright.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -417,6 +425,9 @@
   <data name="icon_tasks_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_tasks_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="gear--exclamation" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\gear--exclamation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="icon_zoomout" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_zoomout.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -454,9 +465,6 @@
   <data name="globe--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\globe--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="arrow-circle-135" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\arrow-circle-135.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="FindNothing" xml:space="preserve">
     <value>Could not find specified string or end of document reached</value>
   </data>
@@ -475,6 +483,9 @@
   <data name="UnitsMs" xml:space="preserve">
     <value>ms</value>
   </data>
+  <data name="icon_forward" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_forward.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="databases-relation" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\databases-relation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -505,6 +516,9 @@
   <data name="icon_copy_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_copy_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="FileDownloaded" xml:space="preserve">
+    <value>File Downloaded</value>
+  </data>
   <data name="ColumnHasNoValidDataError" xml:space="preserve">
     <value>The selected column had no non-null values and cannot be used.</value>
     <comment>An error message that is displayed if the user selects a column with no valid data</comment>
@@ -512,9 +526,6 @@
   <data name="SaveResource" xml:space="preserve">
     <value>Save Resource</value>
   </data>
-  <data name="icon_zoom_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_zoom_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="PropertyTooltip" xml:space="preserve">
     <value>Property: {0}
 Type: {1}</value>
@@ -526,6 +537,9 @@
   <data name="icon_help" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_help.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="WidgetUpdated" xml:space="preserve">
+    <value>Widget updated</value>
+  </data>
   <data name="icon_back_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_back_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -533,8 +547,9 @@
     <value>An error occured while copying file: {0}</value>
     <comment>A message displayed when a file copy fails</comment>
   </data>
-  <data name="layers-stack-arrange" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layers-stack-arrange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="FiletypeMGP" xml:space="preserve">
+    <value>MapGuide Packages ({0})</value>
+    <comment>The text displayed when browsing for MGP files</comment>
   </data>
   <data name="RepositoryWipeWarning" xml:space="preserve">
     <value>You have selected to restore the package at the root.
@@ -605,9 +620,8 @@
   <data name="cross-script" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\cross-script.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="FiletypeMGP" xml:space="preserve">
-    <value>MapGuide Packages ({0})</value>
-    <comment>The text displayed when browsing for MGP files</comment>
+  <data name="LoadProcedureVersionExecutionNotSupported" xml:space="preserve">
+    <value>This connection does not support executing this type of Load Procedure</value>
   </data>
   <data name="SymbolTypeNotSupported" xml:space="preserve">
     <value>Only symbols of type "Mark" and "Font" are currently supported</value>
@@ -623,9 +637,6 @@
   <data name="UnknownQueryMode" xml:space="preserve">
     <value>Unknown query mode</value>
   </data>
-  <data name="OverwriteDisplayScales" xml:space="preserve">
-    <value>Overwrite the current display scales?</value>
-  </data>
   <data name="PackageBuildError" xml:space="preserve">
     <value>An error occured while building package: {0}</value>
     <comment>A message displayed when the package creation fails</comment>
@@ -650,9 +661,6 @@
   <data name="NoActiveDataFile" xml:space="preserve">
     <value>No active resource data file selected</value>
   </data>
-  <data name="SelectFeatureClass" xml:space="preserve">
-    <value>Select Feature Class</value>
-  </data>
   <data name="icon_zoomnext" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_zoomnext.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -669,8 +677,8 @@
     <value>You must enter a alternate name, or remove the checkmark</value>
     <comment>A message displayed when the user has not entered an alternate name for a resource</comment>
   </data>
-  <data name="globe--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\globe--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="globe--pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\globe--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="icon_selectwithin_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_selectwithin_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -687,6 +695,9 @@
   <data name="TitleError" xml:space="preserve">
     <value>Error</value>
   </data>
+  <data name="icon_search_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_search_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="icon_plotdwf_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_plotdwf_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -696,14 +707,14 @@
   <data name="Confirm" xml:space="preserve">
     <value>Confirm</value>
   </data>
-  <data name="folder_horizontal" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\folder-horizontal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="gear--pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\gear--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="icon_ctxarrow" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_ctxarrow.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="icon_measure" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_measure.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="ColorBrewer" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\ColorBrewer.csv;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
   <data name="FilenameValidationError" xml:space="preserve">
     <value>Failed to validate the filenames: {0}</value>
@@ -794,13 +805,11 @@
   <data name="NewLayer" xml:space="preserve">
     <value>New Layer</value>
   </data>
-  <data name="TooManyValuesError" xml:space="preserve">
-    <value>The selected column contains more than {0} different values, and thus cannot be used for theming</value>
-    <comment>An error message that is displayed if the selected column has too many distinct values</comment>
+  <data name="arrow-circle-135" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\arrow-circle-135.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="DivergingName" xml:space="preserve">
-    <value>Diverging</value>
-    <comment>A display name for the Diverging data type</comment>
+  <data name="icon_zoom_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_zoom_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="icon_invokeurl" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_invokeurl.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -818,6 +827,10 @@
     <value>Invalid field count in line {0}</value>
     <comment>An error message that is displayed if the file has an invalid field count</comment>
   </data>
+  <data name="DivergingName" xml:space="preserve">
+    <value>Diverging</value>
+    <comment>A display name for the Diverging data type</comment>
+  </data>
   <data name="icon_buffer" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_buffer.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -834,8 +847,8 @@
   <data name="NoSiteService" xml:space="preserve">
     <value>No site service available</value>
   </data>
-  <data name="icon_forward" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_forward.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="layers-stack-arrange" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layers-stack-arrange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="InvokeUrlCmdDescription" xml:space="preserve">
     <value>Invoke URL command</value>
@@ -846,18 +859,25 @@
   <data name="PropEnumNoValues" xml:space="preserve">
     <value>Could not find possible values for enumerable property</value>
   </data>
+  <data name="SelectColumnPlaceholder" xml:space="preserve">
+    <value>&lt;Select column&gt;</value>
+    <comment>A placeholder message displayed when the user has not yet selected a column</comment>
+  </data>
   <data name="ModeNotAllowed" xml:space="preserve">
     <value>Mode not allowed: {0}</value>
   </data>
   <data name="icon_zoomselect_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_zoomselect_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="gear--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\gear--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="icon_zoomnext_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_zoomnext_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="LessThanLabel" xml:space="preserve">
-    <value>Less than {0}</value>
-    <comment>The label used for the lowest value in the graduated theme set</comment>
+  <data name="TooManyValuesError" xml:space="preserve">
+    <value>The selected column contains more than {0} different values, and thus cannot be used for theming</value>
+    <comment>An error message that is displayed if the selected column has too many distinct values</comment>
   </data>
   <data name="icon_null" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_null.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -884,8 +904,8 @@
   <data name="icon_clearselect_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_clearselect_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="LoadProcedureVersionExecutionNotSupported" xml:space="preserve">
-    <value>This connection does not support executing this type of Load Procedure</value>
+  <data name="icon_measure" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_measure.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="IncompatibleConnection" xml:space="preserve">
     <value>This connection is not compatible</value>
@@ -901,8 +921,8 @@
     <value>The selected column contains more than {0} different values, and thus cannot be used for theming with individual values</value>
     <comment>An error message that is displayed if the selected column has too many distinct values</comment>
   </data>
-  <data name="tick" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="icon_zoomin_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_zoomin_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="FilterDwf" xml:space="preserve">
     <value>Autodesk DWF (*.dwf)|*.dwf</value>
@@ -923,9 +943,13 @@
     <value>Failed to read package. Error message was: {0}</value>
     <comment>A message displayed when the package could not be read</comment>
   </data>
-  <data name="ColorBrewer" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\ColorBrewer.csv;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  <data name="sql" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\sql.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="LessThanLabel" xml:space="preserve">
+    <value>Less than {0}</value>
+    <comment>The label used for the lowest value in the graduated theme set</comment>
+  </data>
   <data name="FsSqlServerSpatial" xml:space="preserve">
     <value>SQL Server Spatial Feature Source</value>
   </data>
@@ -955,15 +979,15 @@
     <value>The content file does not exist</value>
     <comment>A message displayed when the user selects a non-existing file</comment>
   </data>
-  <data name="icon_search_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_search_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="SelectFeatureClass" xml:space="preserve">
+    <value>Select Feature Class</value>
   </data>
   <data name="sum" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\sum.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="SelectColumnPlaceholder" xml:space="preserve">
-    <value>&lt;Select column&gt;</value>
-    <comment>A placeholder message displayed when the user has not yet selected a column</comment>
+  <data name="InvalidValueError" xml:space="preserve">
+    <value>Invalid value</value>
+    <comment>An error message that is displayed when the entered value is invalid</comment>
   </data>
   <data name="XmlDocIsValid" xml:space="preserve">
     <value>Document is valid</value>
@@ -1001,31 +1025,25 @@
   <data name="FsMySql" xml:space="preserve">
     <value>MySQL Feature Source</value>
   </data>
+  <data name="icon_forward_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_forward_disabled.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="icon_copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_copy.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="gear" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="GeometryStyleComboDataset" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\GeometryStyleComboDataset.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
-  <data name="gear--arrow" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\gear--arrow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="ui-separator" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\ui-separator.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="gear--exclamation" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\gear--exclamation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="AddWidgetReference" xml:space="preserve">
+    <value>Add Widget Reference</value>
   </data>
-  <data name="gear--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\gear--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="SelectWidget" xml:space="preserve">
+    <value>Select widget</value>
   </data>
-  <data name="gear--pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\gear--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="Separator" xml:space="preserve">
+    <value>Separator</value>
   </data>
-  <data name="gear--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\gear--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="NoWidgetEditorIface" xml:space="preserve">
-    <value>The specified editor does not implement the required IWidgetEditor interface</value>
-  </data>
-  <data name="WidgetUpdated" xml:space="preserve">
-    <value>Widget updated</value>
-  </data>
 </root>
\ No newline at end of file

Added: sandbox/maestro-3.0/Maestro.Editors/Resources/ui-separator.png
===================================================================
(Binary files differ)


Property changes on: sandbox/maestro-3.0/Maestro.Editors/Resources/ui-separator.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: sandbox/maestro-3.0/MaestroAPITestRunner
___________________________________________________________________
Added: svn:ignore
   + obj
bin
*.user


Added: sandbox/maestro-3.0/MaestroAPITestRunner/MaestroAPITestRunner.csproj
===================================================================
--- sandbox/maestro-3.0/MaestroAPITestRunner/MaestroAPITestRunner.csproj	                        (rev 0)
+++ sandbox/maestro-3.0/MaestroAPITestRunner/MaestroAPITestRunner.csproj	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{50C12B5C-387C-4007-A1D1-CB181CB474CC}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MaestroAPITestRunner</RootNamespace>
+    <AssemblyName>MaestroAPITestRunner</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit-console-runner, Version=2.5.5.10112, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Thirdparty\NUnit\bin\net-2.0\lib\nunit-console-runner.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\MaestroAPITests\MaestroAPITests.csproj">
+      <Project>{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}</Project>
+      <Name>MaestroAPITests</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.MaestroAPI\OSGeo.MapGuide.MaestroAPI.csproj">
+      <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
+      <Name>OSGeo.MapGuide.MaestroAPI</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

Added: sandbox/maestro-3.0/MaestroAPITestRunner/Program.cs
===================================================================
--- sandbox/maestro-3.0/MaestroAPITestRunner/Program.cs	                        (rev 0)
+++ sandbox/maestro-3.0/MaestroAPITestRunner/Program.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,38 @@
+#region Disclaimer / License
+// Copyright (C) 2010, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace MaestroAPITestRunner
+{
+    /// <summary>
+    /// This is a simple NUnit test runner, to work around the fact that you can't launch an external program
+    /// in a debug session (in our case, nunit-console.exe) in Visual Studio Express.
+    /// </summary>
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            NUnit.ConsoleRunner.Runner.Main(args);
+        }
+    }
+}

Added: sandbox/maestro-3.0/MaestroAPITestRunner/Properties/AssemblyInfo.cs
===================================================================
--- sandbox/maestro-3.0/MaestroAPITestRunner/Properties/AssemblyInfo.cs	                        (rev 0)
+++ sandbox/maestro-3.0/MaestroAPITestRunner/Properties/AssemblyInfo.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MaestroAPITestRunner")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MaestroAPITestRunner")]
+[assembly: AssemblyCopyright("Copyright ©  2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ab92ee69-5f95-4f60-bb15-b75a26c441da")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

Modified: sandbox/maestro-3.0/MaestroAPITests/ResourceTests.cs
===================================================================
--- sandbox/maestro-3.0/MaestroAPITests/ResourceTests.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/MaestroAPITests/ResourceTests.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -37,6 +37,8 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.ObjectModels.LoadProcedure;
 using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.MaestroAPI.Services;
+using System.IO;
 
 namespace MaestroAPITests
 {
@@ -52,7 +54,7 @@
             _mocks = new Mockery();
             var conn = _mocks.NewMock<IServerConnection>();
 
-            var app = ObjectFactory.CreateFlexibleLayout(conn);
+            var app = ObjectFactory.DeserializeEmbeddedFlexLayout();
             var app2 = app.Clone();
             Assert.AreNotSame(app, app2);
 
@@ -93,6 +95,7 @@
         public void TestValidResourceIdentifiers()
         {
             var conn = _mocks.NewMock<IServerConnection>();
+            
             //Verify that only valid resource identifiers can be assigned to certain resource types.
 
             IResource res = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF");
@@ -227,7 +230,7 @@
             }
             #endregion
 
-            res = ObjectFactory.CreateFlexibleLayout(conn);
+            res = ObjectFactory.DeserializeEmbeddedFlexLayout();
             #region Application Definition
             try
             {
@@ -436,7 +439,7 @@
             var conv = new ResourceConverter(new List<IResourceConverter>());
             var targetVer = new Version(1, 0, 0);
 
-            var app = ObjectFactory.CreateFlexibleLayout(conn);
+            var app = ObjectFactory.DeserializeEmbeddedFlexLayout();
             var app2 = conv.Upgrade(app, targetVer);
             Assert.AreSame(app, app2);
 

Modified: sandbox/maestro-3.0/MaestroAPITests/RuntimeMapTests.cs
===================================================================
--- sandbox/maestro-3.0/MaestroAPITests/RuntimeMapTests.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/MaestroAPITests/RuntimeMapTests.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -45,59 +45,66 @@
     [SetUpFixture]
     public class TestBootstrap
     {
+        //Guard variable to prevent duplicate registration on repeated test runs of a single test session
+        static bool _registered = false;
+
         [SetUp]
         public void Setup()
         {
-            //Layer Definition 1.1.0
-            ResourceValidatorSet.RegisterValidator(new Ldf110.LayerDefinitionValidator());
-            ResourceTypeRegistry.RegisterResource(
-                new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.1.0"),
-                new ResourceSerializationCallback(Ldf110.LdfEntryPoint.Serialize),
-                new ResourceDeserializationCallback(Ldf110.LdfEntryPoint.Deserialize));
-            ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 1, 0), new LayerCreatorFunc(Ldf110.LdfEntryPoint.CreateDefault));
+            if (!_registered)
+            {
+                //Layer Definition 1.1.0
+                ResourceValidatorSet.RegisterValidator(new Ldf110.LayerDefinitionValidator());
+                ResourceTypeRegistry.RegisterResource(
+                    new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.1.0"),
+                    new ResourceSerializationCallback(Ldf110.LdfEntryPoint.Serialize),
+                    new ResourceDeserializationCallback(Ldf110.LdfEntryPoint.Deserialize));
+                ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 1, 0), new LayerCreatorFunc(Ldf110.LdfEntryPoint.CreateDefault));
 
-            //Layer Definition 1.2.0
-            ResourceValidatorSet.RegisterValidator(new Ldf120.LayerDefinitionValidator());
-            ResourceTypeRegistry.RegisterResource(
-                new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.2.0"),
-                new ResourceSerializationCallback(Ldf120.LdfEntryPoint.Serialize),
-                new ResourceDeserializationCallback(Ldf120.LdfEntryPoint.Deserialize));
-            ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 2, 0), new LayerCreatorFunc(Ldf120.LdfEntryPoint.CreateDefault));
+                //Layer Definition 1.2.0
+                ResourceValidatorSet.RegisterValidator(new Ldf120.LayerDefinitionValidator());
+                ResourceTypeRegistry.RegisterResource(
+                    new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.2.0"),
+                    new ResourceSerializationCallback(Ldf120.LdfEntryPoint.Serialize),
+                    new ResourceDeserializationCallback(Ldf120.LdfEntryPoint.Deserialize));
+                ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 2, 0), new LayerCreatorFunc(Ldf120.LdfEntryPoint.CreateDefault));
 
-            //Layer Definition 1.3.0
-            ResourceValidatorSet.RegisterValidator(new Ldf130.LayerDefinitionValidator());
-            ResourceTypeRegistry.RegisterResource(
-                new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.3.0"),
-                new ResourceSerializationCallback(Ldf130.LdfEntryPoint.Serialize),
-                new ResourceDeserializationCallback(Ldf130.LdfEntryPoint.Deserialize));
-            ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 3, 0), new LayerCreatorFunc(Ldf130.LdfEntryPoint.CreateDefault));
+                //Layer Definition 1.3.0
+                ResourceValidatorSet.RegisterValidator(new Ldf130.LayerDefinitionValidator());
+                ResourceTypeRegistry.RegisterResource(
+                    new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.3.0"),
+                    new ResourceSerializationCallback(Ldf130.LdfEntryPoint.Serialize),
+                    new ResourceDeserializationCallback(Ldf130.LdfEntryPoint.Deserialize));
+                ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 3, 0), new LayerCreatorFunc(Ldf130.LdfEntryPoint.CreateDefault));
 
-            //Load Procedure 1.1.0
-            ResourceValidatorSet.RegisterValidator(new Lp110.LoadProcedureValidator());
-            ResourceTypeRegistry.RegisterResource(
-                new ResourceTypeDescriptor(ResourceTypes.LoadProcedure, "1.1.0"),
-                new ResourceSerializationCallback(Lp110.LoadProcEntryPoint.Serialize),
-                new ResourceDeserializationCallback(Lp110.LoadProcEntryPoint.Deserialize));
+                //Load Procedure 1.1.0
+                ResourceValidatorSet.RegisterValidator(new Lp110.LoadProcedureValidator());
+                ResourceTypeRegistry.RegisterResource(
+                    new ResourceTypeDescriptor(ResourceTypes.LoadProcedure, "1.1.0"),
+                    new ResourceSerializationCallback(Lp110.LoadProcEntryPoint.Serialize),
+                    new ResourceDeserializationCallback(Lp110.LoadProcEntryPoint.Deserialize));
 
-            //Load Procedure 1.1.0 schema offers nothing new for the ones we want to support, so nothing to register
-            //with the ObjectFactory
+                //Load Procedure 1.1.0 schema offers nothing new for the ones we want to support, so nothing to register
+                //with the ObjectFactory
 
-            //Load Procedure 2.2.0
-            ResourceValidatorSet.RegisterValidator(new Lp220.LoadProcedureValidator());
-            ResourceTypeRegistry.RegisterResource(
-                new ResourceTypeDescriptor(ResourceTypes.LoadProcedure, "2.2.0"),
-                new ResourceSerializationCallback(Lp220.LoadProcEntryPoint.Serialize),
-                new ResourceDeserializationCallback(Lp220.LoadProcEntryPoint.Deserialize));
-            ObjectFactory.RegisterLoadProcedureFactoryMethod(LoadType.Sqlite, new LoadProcCreatorFunc(Lp220.LoadProcEntryPoint.CreateDefaultSqlite));
+                //Load Procedure 2.2.0
+                ResourceValidatorSet.RegisterValidator(new Lp220.LoadProcedureValidator());
+                ResourceTypeRegistry.RegisterResource(
+                    new ResourceTypeDescriptor(ResourceTypes.LoadProcedure, "2.2.0"),
+                    new ResourceSerializationCallback(Lp220.LoadProcEntryPoint.Serialize),
+                    new ResourceDeserializationCallback(Lp220.LoadProcEntryPoint.Deserialize));
+                ObjectFactory.RegisterLoadProcedureFactoryMethod(LoadType.Sqlite, new LoadProcCreatorFunc(Lp220.LoadProcEntryPoint.CreateDefaultSqlite));
 
-            //Web Layout 1.1.0
-            ResourceValidatorSet.RegisterValidator(new WL110.WebLayoutValidator());
-            ResourceTypeRegistry.RegisterResource(
-                new ResourceTypeDescriptor(ResourceTypes.WebLayout, "1.1.0"),
-                new ResourceSerializationCallback(WL110.WebLayoutEntryPoint.Serialize),
-                new ResourceDeserializationCallback(WL110.WebLayoutEntryPoint.Deserialize));
-            ObjectFactory.RegisterWebLayoutFactoryMethod(new Version(1, 1, 0), new WebLayoutCreatorFunc(WL110.WebLayoutEntryPoint.CreateDefault));
+                //Web Layout 1.1.0
+                ResourceValidatorSet.RegisterValidator(new WL110.WebLayoutValidator());
+                ResourceTypeRegistry.RegisterResource(
+                    new ResourceTypeDescriptor(ResourceTypes.WebLayout, "1.1.0"),
+                    new ResourceSerializationCallback(WL110.WebLayoutEntryPoint.Serialize),
+                    new ResourceDeserializationCallback(WL110.WebLayoutEntryPoint.Deserialize));
+                ObjectFactory.RegisterWebLayoutFactoryMethod(new Version(1, 1, 0), new WebLayoutCreatorFunc(WL110.WebLayoutEntryPoint.CreateDefault));
 
+                _registered = true;
+            }
         }
 
         [TearDown]

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2010-11-21 21:03:39 UTC (rev 5396)
@@ -412,6 +412,7 @@
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
     <Content Include="ObjectModels\readme.txt" />
+    <None Include="Resources\BaseTemplate.ApplicationDefinition.xml" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Properties\Resources.resx">

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinition.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinition.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinition.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -25,6 +25,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
+using System.Collections.Specialized;
 
 #pragma warning disable 1591, 0114, 0108
 
@@ -51,6 +52,48 @@
 
         private static readonly Version RES_VERSION = new Version(1, 0, 0);
 
+        public string[] GetAllReferenceableWidgetNames()
+        {
+            List<string> names = new List<string>();
+
+            foreach (var ws in this.WidgetSets)
+            {
+                foreach (var cnt in ws.Containers)
+                { 
+                    
+                }
+            }
+
+            return names.ToArray();
+        }
+
+        public IMapWidget CreateMapWidget(string mapId, string contextMenuId)
+        {
+            var map = new MapWidgetType()
+            {
+                MapId = mapId,
+                Name = "Map",
+                Type = "Map",
+                Extension = new CustomContentType() { Any = new XmlElement[0] }
+            };
+            map.SetValue("MenuContainer", contextMenuId);
+            return map;
+        }
+
+        public IWidgetItem CreateWidgetReference(string name) { return new WidgetItemType() { Function = UiItemFunctionType.Widget, Widget = name }; }
+
+        public ISeparator CreateSeparator() { return new SeparatorItemType() { Function = UiItemFunctionType.Separator }; }
+
+        public IFlyoutItem CreateFlyout(string label) 
+        { 
+            return new FlyoutItemType() 
+            { 
+                Function = UiItemFunctionType.Flyout, 
+                Label = label,
+                Item = new System.ComponentModel.BindingList<UiItemType>()
+            }; 
+        }
+
         public IMapGroup AddMapGroup(string id, bool singleTile, string mapDefinitionId)
         {
             var map = new MapGroupType()
@@ -155,19 +198,20 @@
         {
             var wparams = widgetInfo.Parameters;
 
-            WidgetType widget = null;
+            IWidget widget = null;
 
             if (widgetInfo.StandardUi)
             {
                 widget = new UiWidgetType()
                 {
-                    Extension = new CustomContentType(),
+                    Disabled = "false",
+                    Extension = new CustomContentType() { Any = new XmlElement[0] },
                     ImageClass = widgetInfo.ImageClass,
                     ImageUrl = widgetInfo.ImageUrl,
                     Label = widgetInfo.Label,
-                    Location = widgetInfo.Location,
+                    Location = widgetInfo.Location ?? string.Empty,
                     Name = name,
-                    StatusText = widgetInfo.StatusText,
+                    StatusText = widgetInfo.StatusText ?? string.Empty,
                     Tooltip = widgetInfo.Tooltip,
                     Type = widgetInfo.Type
                 };
@@ -176,22 +220,29 @@
             {
                 widget = new WidgetType()
                 {
-                    Extension = new CustomContentType(),
-                    Location = widgetInfo.Location,
+                    Extension = new CustomContentType() { Any = new XmlElement[0] },
+                    Location = widgetInfo.Location ?? string.Empty,
                     Name = name,
                     Type = widgetInfo.Type,
                 };
             }
 
-            widget.Extension.Any = new XmlElement[wparams.Length];
+            NameValueCollection extProperties = new NameValueCollection();
 
-            /*
-            for (int i = 0; i < wparams.Length; i++)
+            foreach (var wp in widgetInfo.Parameters)
             {
-                var el = CreateExtensionElement(wparams[i]);
-                widget.Extension.InsertElementAt(i, el);
-            }*/
+                if (!string.IsNullOrEmpty(wp.DefaultValue))
+                {
+                    extProperties.Add(wp.Name, wp.DefaultValue);
+                }
+                else
+                {
+                    extProperties.Add(wp.Name, string.Empty);
+                }
+            }
 
+            widget.SetAllValues(extProperties);
+
             return widget;
         }
 
@@ -202,9 +253,14 @@
             return el;
         }
 
-        IWidgetContainer IApplicationDefinition.CreateContainer(string name, IApplicationDefinitionContainerInfo containerInfo)
+        IUIItemContainer IApplicationDefinition.CreateContainer(string name, IApplicationDefinitionContainerInfo containerInfo)
         {
-            return null;
+            return new UiItemContainerType() 
+            { 
+                Name = name, 
+                Type = containerInfo.Type, 
+                Item = new System.ComponentModel.BindingList<UiItemType>() 
+            };
         }
 
         IMapSet IApplicationDefinition.MapSet
@@ -286,6 +342,16 @@
                 OnPropertyChanged("WidgetSet");
             }
         }
+
+        public IWidgetSet CreateWidgetSet(IMapWidget mapWidget)
+        {
+            return new WidgetSetType()
+            {
+                Widget = new System.ComponentModel.BindingList<WidgetType>(),
+                Container = new System.ComponentModel.BindingList<ContainerType>(),
+                MapWidget = (MapWidgetType)mapWidget
+            };
+        }
     }
 
     partial class UiItemContainerType : IUIItemContainer
@@ -346,6 +412,7 @@
             if (it != null)
             {
                 this.Item.Insert(index, it);
+                it.Parent = this;
                 OnPropertyChanged("Item");
             }
         }
@@ -356,6 +423,7 @@
             if (it != null)
             {
                 this.Item.Add(it);
+                it.Parent = this;
                 OnPropertyChanged("Item");
             }
         }
@@ -366,6 +434,7 @@
             if (it != null)
             {
                 this.Item.Remove(it);
+                it.Parent = null;
                 OnPropertyChanged("Item");
             }
         }
@@ -429,6 +498,7 @@
             if (it != null)
             {
                 this.Item.Insert(index, it);
+                it.Parent = this;
                 OnPropertyChanged("Item");
             }
         }
@@ -439,6 +509,7 @@
             if (it != null)
             {
                 this.Item.Add(it);
+                it.Parent = this;
                 OnPropertyChanged("Item");
             }
         }
@@ -449,12 +520,17 @@
             if (it != null)
             {
                 this.Item.Remove(it);
+                it.Parent = null;
                 OnPropertyChanged("Item");
             }
         }
     }
 
-    partial class UiItemType : IUIItem { }
+    partial class UiItemType : IUIItem 
+    {
+        [XmlIgnore]
+        public IMenu Parent { get; set; }
+    }
 
     partial class WidgetItemType : IWidgetItem { }
 
@@ -505,6 +581,41 @@
                 return this.MapWidget;  
             }
         }
+
+
+        public int WidgetCount
+        {
+            get { return this.Widget.Count; }
+        }
+
+        public IEnumerable<IWidget> Widgets
+        {
+            get 
+            {
+                foreach (var wgt in this.Widget)
+                {
+                    yield return wgt;
+                }
+            }
+        }
+
+        public void AddWidget(IWidget widget)
+        {
+            var wgt = widget as WidgetType;
+            if (wgt != null)
+            {
+                this.Widget.Add(wgt);
+            }
+        }
+
+        public void RemoveWidget(IWidget widget)
+        {
+            var wgt = widget as WidgetType;
+            if (wgt != null)
+            {
+                this.Widget.Remove(wgt);
+            }
+        }
     }
 
     partial class ContainerType : IWidgetContainer
@@ -531,6 +642,8 @@
         }
     }
 
+    partial class UiWidgetType : IUIWidget { }
+
     partial class MapWidgetType : IMapWidget { }
 
     partial class MapViewType : IMapView { }

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInfo.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInfo.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInfo.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -27,9 +27,11 @@
 namespace OSGeo.MapGuide.ObjectModels.ApplicationDefinition_1_0_0
 {
     using OSGeo.MapGuide.MaestroAPI;
+    using System.Xml.Serialization;
 
     partial class ApplicationDefinitionWidgetInfoSet : IApplicationDefinitionWidgetInfoSet
     {
+        [XmlIgnore]
         IEnumerable<IWidgetInfo> IApplicationDefinitionWidgetInfoSet.WidgetInfo
         {
             get 
@@ -44,6 +46,7 @@
 
     partial class ApplicationDefinitionContainerInfoSet : IApplicationDefinitionContainerInfoSet
     {
+        [XmlIgnore]
         IEnumerable<IApplicationDefinitionContainerInfo> IApplicationDefinitionContainerInfoSet.ContainerInfo
         {
             get 
@@ -58,6 +61,7 @@
 
     partial class ApplicationDefinitionTemplateInfoSet : IApplicationDefinitionTemplateInfoSet
     {
+        [XmlIgnore]
         IEnumerable<IApplicationDefinitionTemplateInfo> IApplicationDefinitionTemplateInfoSet.TemplateInfo
         {
             get 
@@ -77,6 +81,7 @@
 
     partial class ApplicationDefinitionTemplateInfoType : IApplicationDefinitionTemplateInfo
     {
+        [XmlIgnore]
         IEnumerable<IApplicationDefinitionPanel> IApplicationDefinitionTemplateInfo.Panels
         {
             get 
@@ -101,11 +106,13 @@
 
     partial class ApplicationDefinitionWidgetInfoType : IWidgetInfo
     {
+        [XmlIgnore]
         string[] IWidgetInfo.ContainableBy
         {
             get { return this.ContainableBy.ToArray(); }
         }
 
+        [XmlIgnore]
         public IWidgetParameter[] Parameters
         {
             get 
@@ -122,6 +129,7 @@
 
     partial class ApplicationDefinitionWidgetParameterType : IWidgetParameter
     {
+        [XmlIgnore]
         IAllowedValue[] IWidgetParameter.AllowedValue
         {
             get 

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInterfaces.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInterfaces.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ApplicationDefinitionInterfaces.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -24,6 +24,7 @@
 using System.Xml;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI;
+using System.Collections.Specialized;
 
 namespace OSGeo.MapGuide.ObjectModels.ApplicationDefinition
 {
@@ -202,6 +203,112 @@
     }
 
     /// <summary>
+    /// A set of known widgets that come with a fusion installation
+    /// </summary>
+    public static class KnownWidgetNames
+    {
+        public const string About = "About";
+
+        public const string ActivityIndicator = "ActivityIndicator";
+
+        public const string BasemapSwitcher = "BasemapSwitcher";
+
+        public const string Buffer = "Buffer";
+
+        public const string BufferPanel = "BufferPanel";
+
+        public const string CenterSelection = "CenterSelection";
+
+        public const string ClearSelection = "ClearSelection";
+
+        public const string ColorPicker = "ColorPicker";
+
+        public const string CTRLClick = "CTRLClick";
+
+        public const string CursorPosition = "CursorPosition";
+
+        public const string EditableScale = "EditableScale";
+
+        public const string ExtentHistory = "ExtentHistory";
+
+        public const string FeatureInfo = "FeatureInfo";
+
+        public const string Help = "Help";
+
+        public const string InitialMapView = "InitialMapView";
+
+        public const string InvokeScript = "InvokeScript";
+
+        public const string InvokeURL = "InvokeURL";
+
+        public const string LayerManager = "LayerManager";
+
+        public const string Legend = "Legend";
+
+        public const string LinkToView = "LinkToView";
+
+        public const string MapMenu = "MapMenu";
+
+        public const string Maptip = "Maptip";
+
+        public const string Measure = "Measure";
+
+        public const string Navigator = "Navigator";
+
+        public const string OverviewMap = "OverviewMap";
+
+        public const string Pan = "Pan";
+
+        public const string PanOnClick = "PanOnClick";
+
+        public const string PanQuery = "PanQuery";
+
+        public const string Print = "Print";
+
+        public const string Query = "Query";
+
+        public const string QuickPlot = "QuickPlot";
+
+        public const string Redline = "Redline";
+
+        public const string RefreshMap = "RefreshMap";
+
+        public const string SaveMap = "SaveMap";
+
+        public const string Scalebar = "Scalebar";
+
+        public const string ScalebarDual = "ScalebarDual";
+
+        public const string Search = "Search";
+
+        public const string Select = "Select";
+
+        public const string SelectionInfo = "SelectionInfo";
+
+        public const string SelectPolygon = "SelectPolygon";
+
+        public const string SelectRadius = "SelectRadius";
+
+        public const string SelectRadiusValue = "SelectRadiusValue";
+
+        public const string SelectWithin = "SelectWithin";
+
+        public const string TaskPane = "TaskPane";
+
+        public const string Theme = "Theme";
+
+        public const string ViewOptions = "ViewOptions";
+
+        public const string ViewSize = "ViewSize";
+
+        public const string Zoom = "Zoom";
+
+        public const string ZoomOnClick = "ZoomOnClick";
+
+        public const string ZoomToSelection = "ZoomToSelection";
+    }
+
+    /// <summary>
     /// Represents a fusion flexible layout (aka. An Application Definition document)
     /// </summary>
     public interface IApplicationDefinition : IResource, IExtensibleElement
@@ -226,10 +333,18 @@
         /// </summary>
         IEnumerable<IWidgetSet> WidgetSets { get; }
 
+        IWidgetSet CreateWidgetSet(IMapWidget mapWidget);
+
         void AddWidgetSet(IWidgetSet set);
 
         void RemoveWidgetSet(IWidgetSet set);
 
+        IWidgetItem CreateWidgetReference(string name);
+
+        ISeparator CreateSeparator();
+
+        IFlyoutItem CreateFlyout(string label);
+
         /// <summary>
         /// Adds the new map group to the current map set
         /// </summary>
@@ -253,7 +368,15 @@
 
         IWidget CreateWidget(string name, IWidgetInfo widgetInfo);
 
-        IWidgetContainer CreateContainer(string name, IApplicationDefinitionContainerInfo containerInfo);
+        IUIItemContainer CreateContainer(string name, IApplicationDefinitionContainerInfo containerInfo);
+
+        /// <summary>
+        /// Gets an array of the names of widgets that can be referenced from a toolbar or menu
+        /// </summary>
+        /// <returns></returns>
+        string[] GetAllReferenceableWidgetNames();
+
+        IMapWidget CreateMapWidget(string mapId, string contextMenuId);
     }
 
     public interface IExtensibleElement
@@ -299,6 +422,63 @@
     public static class ExtensionMethods
     {
         /// <summary>
+        /// Gets a specific container info by type
+        /// </summary>
+        /// <param name="set"></param>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static IApplicationDefinitionContainerInfo FindContainer(this IApplicationDefinitionContainerInfoSet set, string name)
+        {
+            Check.NotNull(set, "set");
+            Check.NotEmpty(name, "name");
+
+            foreach (var cnt in set.ContainerInfo)
+            {
+                if (name.Equals(cnt.Type))
+                    return cnt;
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Gets a specific Widget Info by name
+        /// </summary>
+        /// <param name="set"></param>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static IWidgetInfo FindWidget(this IApplicationDefinitionWidgetInfoSet set, string name)
+        {
+            Check.NotNull(set, "set");
+            Check.NotEmpty(name, "name");
+
+            foreach (var wgt in set.WidgetInfo)
+            {
+                if (name.Equals(wgt.Type))
+                    return wgt;
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Gets information for the named template
+        /// </summary>
+        /// <param name="set"></param>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static IApplicationDefinitionTemplateInfo FindTemplate(this IApplicationDefinitionTemplateInfoSet set, string name)
+        {
+            Check.NotNull(set, "set");
+            Check.NotEmpty(name, "name");
+
+            foreach (var tpl in set.TemplateInfo)
+            {
+                if (name.Equals(tpl.Name))
+                    return tpl;
+            }
+            return null;
+        }
+
+        /// <summary>
         /// Gets the specified map group by its id
         /// </summary>
         /// <param name="set"></param>
@@ -335,6 +515,43 @@
         }
 
         /// <summary>
+        /// Gets all the properties in this extensible element
+        /// </summary>
+        /// <param name="ext"></param>
+        /// <returns></returns>
+        public static NameValueCollection GetAllValues(this IExtensibleElement ext)
+        {
+            Check.NotNull(ext, "ext");
+            NameValueCollection values = new NameValueCollection();
+            foreach (var el in ext.Extension.Content)
+            {
+                values.Add(el.Name, el.InnerText);
+            }
+            return values;
+        }
+
+        /// <summary>
+        /// Replace the values of all properties in this extensible element with the values provided
+        /// </summary>
+        /// <param name="ext"></param>
+        /// <param name="values"></param>
+        public static void SetAllValues(this IExtensibleElement ext, NameValueCollection values)
+        {
+            Check.NotNull(ext, "ext");
+            Check.NotNull(values, "values");
+
+            var elements = new List<XmlElement>();
+            foreach (string name in values.Keys)
+            {
+                var value = values[name];
+                var rid = AppDefDocument.Instance.CreateElement(name);
+                rid.InnerText = value;
+                elements.Add(rid);
+            }
+            ext.Extension.Content = elements.ToArray();
+        }
+
+        /// <summary>
         /// Sets the value of a property in this extensible element.
         /// </summary>
         /// <param name="ext"></param>
@@ -610,6 +827,14 @@
         void RemoveContainer(IWidgetContainer container);
 
         IMapWidget MapWidget { get; }
+
+        int WidgetCount { get; }
+
+        IEnumerable<IWidget> Widgets { get; }
+
+        void AddWidget(IWidget widget);
+
+        void RemoveWidget(IWidget widget);
     }
 
     /// <summary>
@@ -708,6 +933,8 @@
 
     public interface IUIItem
     {
+        IMenu Parent { get; }
+
         UiItemFunctionType Function { get; }
     }
 

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using Res = OSGeo.MapGuide.MaestroAPI.Properties.Resources;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.DrawingSource;
@@ -36,6 +37,7 @@
 using OSGeo.MapGuide.ObjectModels.SymbolLibrary;
 using OSGeo.MapGuide.ObjectModels.WebLayout;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition_1_0_0;
+using System.Collections.Specialized;
 
 namespace OSGeo.MapGuide.ObjectModels
 {
@@ -304,40 +306,326 @@
             return new CompoundSymbolDefinition() { CurrentConnection = owner };
         }
 
-        //TODO: Just deserialize from an embedded resource. The content model for a fusion
-        //flexible layout is just too loose to programmatically build reliably.
+        static readonly string[] parameterizedWidgets = 
+        {
+            KnownWidgetNames.ZoomOnClick,
+            KnownWidgetNames.ExtentHistory,
+            KnownWidgetNames.BufferPanel,
+            KnownWidgetNames.Measure,
+            KnownWidgetNames.InvokeScript,
+            KnownWidgetNames.InvokeURL,
+            KnownWidgetNames.Search,
+            KnownWidgetNames.CursorPosition,
+            KnownWidgetNames.SelectionInfo,
+            KnownWidgetNames.ViewSize
+        };
+
         /// <summary>
-        /// Creates the flexible layout.
+        /// Creates a fusion flexible layout
         /// </summary>
-        /// <param name="owner">The owner.</param>
+        /// <param name="owner"></param>
+        /// <param name="templateName">The name of the template. See <see cref="FusionTemplateNames"/> for the common pre-defined names</param>
         /// <returns></returns>
-        public static IApplicationDefinition CreateFlexibleLayout(IServerConnection owner)
+        public static IApplicationDefinition CreateFlexibleLayout(IServerConnection owner, string templateName)
         {
             Check.NotNull(owner, "owner");
-
-            return new ApplicationDefinitionType()
+            Check.Precondition(Array.IndexOf(owner.Capabilities.SupportedServices, (int)ServiceType.Fusion) >= 0, "Required Fusion service not supported on this connection");
+            
+            IApplicationDefinition appDef = new ApplicationDefinitionType()
             {
                 CurrentConnection = owner,
                 MapSet = new System.ComponentModel.BindingList<MapGroupType>(),
                 WidgetSet = new System.ComponentModel.BindingList<WidgetSetType>()
             };
-        }
 
-        /// <summary>
-        /// Creates the flexible layout.
-        /// </summary>
-        /// <param name="owner">The owner.</param>
-        /// <param name="title">The title.</param>
-        /// <returns></returns>
-        public static IApplicationDefinition CreateFlexibleLayout(IServerConnection owner, string title)
-        {
-            Check.NotNull(owner, "owner");
+            var fusionSvc = (IFusionService)owner.GetService((int)ServiceType.Fusion);
+            var templates = fusionSvc.GetApplicationTemplates();
+            var widgets = fusionSvc.GetApplicationWidgets();
+            var containers = fusionSvc.GetApplicationContainers();
 
-            var appDef = CreateFlexibleLayout(owner);
-            appDef.Title = title;
+            //Find matching template
+            var tpl = templates.FindTemplate(templateName);
+            if (tpl != null)
+            {
+                appDef.TemplateUrl = tpl.LocationUrl;
+                appDef.Title = tpl.Name;
+            }
+            else
+            {
+                return DeserializeEmbeddedFlexLayout();
+            }
+
+            //Toolbars, every template has them
+            var toolbar = appDef.CreateContainer("Toolbar", containers.FindContainer("Toolbar"));
+            var secToolbar = appDef.CreateContainer("ToolbarSecondary", containers.FindContainer("Toolbar"));
+
+            //Context menus, every template has them
+            var mapContextMenu = appDef.CreateContainer("MapContextMenu", containers.FindContainer("ContextMenu"));
+            var taskPaneMenu = appDef.CreateContainer("TaskContextMenu", containers.FindContainer("ContextMenu"));
+
+            //Menu
+            var menu = appDef.CreateContainer("FileMenu", containers.FindContainer("Toolbar"));
+
+            //Status bar
+            var statusbar = appDef.CreateContainer("Statusbar", containers.FindContainer("Splitterbar"));
+
+            string mapId = "MainMap";
+            //Set default map group
+            appDef.AddMapGroup(mapId, true, string.Empty);
+
+            //Create default widget set
+            var widgetSet = appDef.CreateWidgetSet(appDef.CreateMapWidget(mapId, mapContextMenu.Name));
+            appDef.AddWidgetSet(widgetSet);
+
+            //Add all known non-parameterized widgets to this widget set
+            foreach (var wgt in widgets.WidgetInfo)
+            {
+                if (Array.IndexOf(parameterizedWidgets, wgt.Type) < 0)
+                {
+                    var widget = appDef.CreateWidget(wgt.Type, wgt);
+                    widgetSet.AddWidget(widget);
+                }
+            }
+
+            //Add some parameterized ones
+
+            //Zoom In
+            var zoomIn = (IUIWidget)appDef.CreateWidget("ZoomIn", widgets.FindWidget(KnownWidgetNames.ZoomOnClick));
+            zoomIn.SetValue("Factor", "2");
+            zoomIn.StatusText = zoomIn.Tooltip = Res.ADF_Widget_ZoomIn_Desc;
+            zoomIn.Label = Res.ADF_Widget_ZoomIn_Label;
+            
+            //Zoom Out
+            var zoomOut = (IUIWidget)appDef.CreateWidget("ZoomOut", widgets.FindWidget(KnownWidgetNames.ZoomOnClick));
+            zoomOut.SetValue("Factor", "0.5");
+            zoomOut.StatusText = zoomOut.Tooltip = Res.ADF_Widget_ZoomOut_Desc;
+            zoomOut.Label = Res.ADF_Widget_ZoomOut_Label;
+            
+            //Previous View
+            var prevView = (IUIWidget)appDef.CreateWidget("PreviousView", widgets.FindWidget(KnownWidgetNames.ExtentHistory));
+            prevView.SetValue("Direction", "previous");
+            prevView.StatusText = prevView.Tooltip = Res.ADF_Widget_PreviousView_Desc;
+            prevView.Label = Res.ADF_Widget_PreviousView_Label;
+
+            //Next View
+            var nextView = (IUIWidget)appDef.CreateWidget("NextView", widgets.FindWidget(KnownWidgetNames.ExtentHistory));
+            nextView.SetValue("Direction", "next");
+            nextView.StatusText = nextView.Tooltip = Res.ADF_Widget_NextView_Desc;
+            nextView.Label = Res.ADF_Widget_NextView_Label;
+
+            //Buffer
+            var buffer = (IUIWidget)appDef.CreateWidget("tbBuffer", widgets.FindWidget(KnownWidgetNames.BufferPanel));
+            //buffer.SetValue("Target", "TaskPane");
+            buffer.StatusText = buffer.Tooltip = Res.ADF_Widget_Buffer_Desc;
+            buffer.Tooltip = Res.ADF_Widget_Buffer_Label;
+
+            //Measure
+            var measure = (IUIWidget)appDef.CreateWidget("tbBuffer", widgets.FindWidget(KnownWidgetNames.Measure));
+            var measureParams = new NameValueCollection();
+            measureParams["Type"] = "both";
+            measureParams["MeasureTooltipContainer"] = "MeasureResult";
+            measureParams["MeasureTooltipType"] = "dynamic";
+            measureParams["DistancePrecision"] = "0";
+            measureParams["AreaPrecision"] = "0";
+            measureParams["Units"] = "meters";
+            measureParams["Target"] = "TaskPane";
+            measure.SetAllValues(measureParams);
+            measure.StatusText = buffer.Tooltip = Res.ADF_Widget_Measure_Desc;
+            measure.Tooltip = Res.ADF_Widget_Measure_Label;
+
+            //Show Overview
+            var showOverview = (IUIWidget)appDef.CreateWidget("showOverview", widgets.FindWidget(KnownWidgetNames.InvokeScript));
+            showOverview.SetValue("Script", "showOverviewMap()");
+
+            //Show Task Pane
+            var showTaskPane = (IUIWidget)appDef.CreateWidget("showTaskPane", widgets.FindWidget(KnownWidgetNames.InvokeScript));
+            showTaskPane.SetValue("Script", "showTaskPane()");
+
+            //Show Legend
+            var showLegend = (IUIWidget)appDef.CreateWidget("showLegend", widgets.FindWidget(KnownWidgetNames.InvokeScript));
+            showLegend.SetValue("Script", "showLegend()");
+
+            //Show Selection Panel
+            var showSelectionPanel = (IUIWidget)appDef.CreateWidget("showSelectionPanel", widgets.FindWidget(KnownWidgetNames.InvokeScript));
+            showSelectionPanel.SetValue("Script", "showSelectionPanel()");
+
+            //Coordinate Tracker
+            var coordTracker = appDef.CreateWidget("statusCoordinates", widgets.FindWidget(KnownWidgetNames.CursorPosition));
+            coordTracker.SetValue("Template", "X: {x} {units}, Y: {y} {units}");
+            coordTracker.SetValue("Precision", "4");
+            coordTracker.SetValue("EmptyText", "&amp;nbsp;");
+
+            //Selection Info
+            var selInfo = appDef.CreateWidget("statusSelection", widgets.FindWidget(KnownWidgetNames.SelectionInfo));
+            selInfo.SetValue("EmptyText", "No selection");
+
+            //View Size
+            var viewSize = appDef.CreateWidget("statusViewSize", widgets.FindWidget(KnownWidgetNames.ViewSize));
+            viewSize.SetValue("Template", "{w} x {h} ({units})");
+            viewSize.SetValue("Precision", "2");
+
+            widgetSet.AddWidget(zoomIn);
+            widgetSet.AddWidget(zoomOut);
+            widgetSet.AddWidget(prevView);
+            widgetSet.AddWidget(nextView);
+            widgetSet.AddWidget(buffer);
+            widgetSet.AddWidget(showOverview);
+            widgetSet.AddWidget(showTaskPane);
+            widgetSet.AddWidget(showLegend);
+            widgetSet.AddWidget(showSelectionPanel);
+            widgetSet.AddWidget(coordTracker);
+            widgetSet.AddWidget(selInfo);
+            widgetSet.AddWidget(viewSize);
+
+            //Now here's where things may diverge completely between templates
+            //So let's try for something that is somewhat consistent
+
+            //Init primary toolbar
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Print));
+
+            //2.2 specific stuff
+            if (owner.SiteVersion >= new Version(2, 2))
+            {
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.QuickPlot));
+            }
+
+            toolbar.AddItem(appDef.CreateSeparator());
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.RefreshMap));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.SelectRadius));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.SelectPolygon));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ClearSelection));
+            
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Buffer));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Measure));
+            
+            //2.2 specific stuff
+            if (owner.SiteVersion >= new Version(2, 2))
+            {
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.FeatureInfo));
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Query));
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Theme));
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Redline));
+            }
+
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ViewOptions));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.About));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Help));
+            
+            //Init secondary toolbar
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Select));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Pan));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Zoom));
+            secToolbar.AddItem(appDef.CreateWidgetReference(zoomIn.Name));
+            secToolbar.AddItem(appDef.CreateWidgetReference(zoomOut.Name));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.InitialMapView));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ZoomToSelection));
+            secToolbar.AddItem(appDef.CreateWidgetReference(prevView.Name));
+            secToolbar.AddItem(appDef.CreateWidgetReference(nextView.Name));
+
+            //Main menu
+            menu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.MapMenu));
+
+            //2.2 specific stuff
+            if (owner.SiteVersion >= new Version(2, 2))
+            {
+                menu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.BasemapSwitcher));
+            }
+            var viewMenu = appDef.CreateFlyout(Res.ADF_Flyout_View);
+            viewMenu.AddItem(appDef.CreateWidgetReference(showOverview.Name));
+            viewMenu.AddItem(appDef.CreateWidgetReference(showTaskPane.Name));
+            viewMenu.AddItem(appDef.CreateWidgetReference(showLegend.Name));
+            viewMenu.AddItem(appDef.CreateWidgetReference(showSelectionPanel.Name));
+            menu.AddItem(viewMenu);
+
+            //status bar
+            statusbar.AddItem(appDef.CreateWidgetReference(coordTracker.Name));
+            statusbar.AddItem(appDef.CreateWidgetReference(selInfo.Name));
+            statusbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.EditableScale));
+            statusbar.AddItem(appDef.CreateWidgetReference(viewSize.Name));
+
+            //Map Context Menu
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.RefreshMap));
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Pan));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Zoom));
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(zoomIn.Name));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(zoomOut.Name));
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            var zoomMenu = appDef.CreateFlyout(Res.ADF_Flyout_Zoom);
+
+            mapContextMenu.AddItem(zoomMenu);
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Select));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ClearSelection));
+            var selectMoreMenu = appDef.CreateFlyout(Res.ADF_Flyout_SelectMore);
+
+            mapContextMenu.AddItem(selectMoreMenu);
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(buffer.Name));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(measure.Name));
+
+            if (owner.SiteVersion >= new Version(2, 2))
+            {
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.FeatureInfo));
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Query));
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Theme));
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Redline));
+            }
+
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ViewOptions));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Help));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.About));
+
+            //Tasks Context Menu
+            taskPaneMenu.AddItem(appDef.CreateWidgetReference(measure.Name));
+            taskPaneMenu.AddItem(appDef.CreateWidgetReference(buffer.Name));
+
+            if (owner.SiteVersion >= new Version(2, 2))
+            {
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.FeatureInfo));
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Query));
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Theme));
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Redline));
+            }
+
+            //Now add them all to the main widget set
+            widgetSet.AddContainer(toolbar);
+            widgetSet.AddContainer(secToolbar);
+            widgetSet.AddContainer(menu);
+            widgetSet.AddContainer(statusbar);
+            widgetSet.AddContainer(mapContextMenu);
+            widgetSet.AddContainer(taskPaneMenu);
+
+            //Set positioning
+            toolbar.Position = "top";
+            secToolbar.Position = "top";
+            menu.Position = "top";
+            statusbar.Position = "bottom";
+            mapContextMenu.Position = "top";
+            taskPaneMenu.Position = "top";
+
+            //TODO: MGStudio actually creates a redundant secondary toolbar container. That way it can seamlessly
+            //switch between templates.
+
+            //Depending on some templates the secondary toolbar requires renaming
+            if (templateName.Equals(FusionTemplateNames.Aqua) || 
+                templateName.Equals(FusionTemplateNames.Maroon) || 
+                templateName.Equals(FusionTemplateNames.TurquoiseYellow))
+            {
+                secToolbar.Name = "ToolbarVertical";
+                secToolbar.Position = "left";
+            }
+
             return appDef;
         }
 
+        internal static IApplicationDefinition DeserializeEmbeddedFlexLayout()
+        {
+            return (IApplicationDefinition)ResourceTypeRegistry.Deserialize(OSGeo.MapGuide.MaestroAPI.Properties.Resources.BaseTemplate_ApplicationDefinition);
+        }
+
         /// <summary>
         /// Creates the preview flex layout.
         /// </summary>
@@ -358,42 +646,6 @@
         }
 
         /// <summary>
-        /// Creates a fusion flexible layout
-        /// </summary>
-        /// <param name="owner"></param>
-        /// <param name="title"></param>
-        /// <param name="templateName">The name of the template. Consult <see cref="FusionTemplateNames"/> for a list of stock templates</param>
-        /// <returns></returns>
-        public static IApplicationDefinition CreateFlexibleLayout(IServerConnection owner, string title, string templateName)
-        {
-            Check.NotNull(owner, "owner");
-
-            string url = string.Empty;
-
-            int[] services = owner.Capabilities.SupportedServices;
-            if (Array.IndexOf(services, (int)ServiceType.Fusion) >= 0)
-            {
-                IFusionService fsvc = (IFusionService)owner.GetService((int)ServiceType.Fusion);
-                var templates = fsvc.GetApplicationTemplates();
-                foreach (var tpl in templates.TemplateInfo)
-                {
-                    if (tpl.Name.ToUpper().Equals(templateName.ToUpper()))
-                    {
-                        url = tpl.LocationUrl;
-                        continue;
-                    }
-                }
-            }
-
-            if (string.IsNullOrEmpty(url))
-                throw new InvalidOperationException(OSGeo.MapGuide.MaestroAPI.Properties.Resources.TemplateUrlNotFound + templateName);
-
-            var appDef = CreateFlexibleLayout(owner, title);
-            appDef.TemplateUrl = url;
-            return appDef;
-        }
-
-        /// <summary>
         /// Creates the print layout.
         /// </summary>
         /// <param name="owner">The owner.</param>

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -32,6 +32,7 @@
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using OSGeo.MapGuide.MaestroAPI.Serialization;
 using OSGeo.MapGuide.ObjectModels.Common;
+using CS = Topology.CoordinateSystems;
 
 namespace OSGeo.MapGuide.MaestroAPI
 {
@@ -72,12 +73,11 @@
 		protected PlatformConnectionBase()
 		{
             ResourceTypeRegistry.Init();
-
-			m_serializers = new Hashtable();
-			m_validator = new XMLValidator();
-			m_cachedSchemas = new Hashtable();
-
-			m_schemasPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Schemas");
+            
+            m_serializers = new Hashtable();
+            m_validator = new XMLValidator();
+            m_cachedSchemas = new Hashtable();
+            m_schemasPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Schemas");
 		}
 
         #region Serialization plumbing
@@ -1618,6 +1618,20 @@
 
         #region runtime map
         
+        private static string ParseUnit(string wkt)
+        {
+            if (string.IsNullOrEmpty(wkt))
+                return null;
+            
+            int index = wkt.IndexOf("UNIT[\"");
+            if (index >= 0)
+            {
+                int end = wkt.IndexOf("\"", index);
+                return wkt.Substring(index, end - index).ToUpper();
+            }
+            return null;
+        }
+
         public virtual RuntimeMap CreateMap(string runtimeMapResourceId, string baseMapDefinitionId, double metersPerUnit)
         {
             var mdf = (IMapDefinition)GetResource(baseMapDefinitionId);

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -61,6 +61,33 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Select More.
+        /// </summary>
+        internal static string ADF_Flyout_SelectMore {
+            get {
+                return ResourceManager.GetString("ADF_Flyout_SelectMore", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to View.
+        /// </summary>
+        internal static string ADF_Flyout_View {
+            get {
+                return ResourceManager.GetString("ADF_Flyout_View", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom.
+        /// </summary>
+        internal static string ADF_Flyout_Zoom {
+            get {
+                return ResourceManager.GetString("ADF_Flyout_Zoom", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Map with ID {0} does not point to a valid map.
         /// </summary>
         internal static string ADF_MapInvalidError {
@@ -97,6 +124,133 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Create buffers around the selected features.
+        /// </summary>
+        internal static string ADF_Widget_Buffer_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Buffer_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Buffer.
+        /// </summary>
+        internal static string ADF_Widget_Buffer_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Buffer_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Measure distances and areas on the map.
+        /// </summary>
+        internal static string ADF_Widget_Measure_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Measure_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Measure.
+        /// </summary>
+        internal static string ADF_Widget_Measure_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Measure_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Go to next view.
+        /// </summary>
+        internal static string ADF_Widget_NextView_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_NextView_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Next.
+        /// </summary>
+        internal static string ADF_Widget_NextView_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_NextView_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Go to previous view.
+        /// </summary>
+        internal static string ADF_Widget_PreviousView_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_PreviousView_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Previous.
+        /// </summary>
+        internal static string ADF_Widget_PreviousView_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_PreviousView_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom in by a preset increment.
+        /// </summary>
+        internal static string ADF_Widget_ZoomIn_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomIn_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom In.
+        /// </summary>
+        internal static string ADF_Widget_ZoomIn_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomIn_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom out by a preset increment.
+        /// </summary>
+        internal static string ADF_Widget_ZoomOut_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomOut_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom Out.
+        /// </summary>
+        internal static string ADF_Widget_ZoomOut_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomOut_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot;?&gt;
+        ///&lt;ApplicationDefinition xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xsi:noNamespaceSchemaLocation=&quot;ApplicationDefinition-1.0.0.xsd&quot;&gt;
+        ///  &lt;TemplateUrl&gt;fusion/templates/mapguide/slate/index.html&lt;/TemplateUrl&gt;
+        ///  &lt;MapSet&gt;
+        ///    &lt;MapGroup id=&quot;MgMainMapId&quot;&gt;
+        ///      &lt;Map&gt;
+        ///        &lt;Type&gt;MapGuide&lt;/Type&gt;
+        ///        &lt;SingleTile&gt;true&lt;/SingleTile&gt;
+        ///        &lt;Extension&gt;
+        ///          &lt;ResourceId /&gt;
+        ///          &lt;SelectionAsOverlay&gt;true&lt;/SelectionAsOverla [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string BaseTemplate_ApplicationDefinition {
+            get {
+                return ResourceManager.GetString("BaseTemplate_ApplicationDefinition", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Could not create load procedure of type: .
         /// </summary>
         internal static string CannotCreateLoadProcedureSubType {

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2010-11-21 21:03:39 UTC (rev 5396)
@@ -433,4 +433,53 @@
     <value>Layout specifies a start view that is outside the map's initial extents</value>
     <comment>A warning message that is displayed if the layout specifies a start center point that is outside the map's specified extents</comment>
   </data>
+  <data name="ADF_Flyout_SelectMore" xml:space="preserve">
+    <value>Select More</value>
+  </data>
+  <data name="ADF_Flyout_View" xml:space="preserve">
+    <value>View</value>
+  </data>
+  <data name="ADF_Flyout_Zoom" xml:space="preserve">
+    <value>Zoom</value>
+  </data>
+  <data name="ADF_Widget_Buffer_Desc" xml:space="preserve">
+    <value>Create buffers around the selected features</value>
+  </data>
+  <data name="ADF_Widget_Buffer_Label" xml:space="preserve">
+    <value>Buffer</value>
+  </data>
+  <data name="ADF_Widget_Measure_Desc" xml:space="preserve">
+    <value>Measure distances and areas on the map</value>
+  </data>
+  <data name="ADF_Widget_Measure_Label" xml:space="preserve">
+    <value>Measure</value>
+  </data>
+  <data name="ADF_Widget_NextView_Desc" xml:space="preserve">
+    <value>Go to next view</value>
+  </data>
+  <data name="ADF_Widget_NextView_Label" xml:space="preserve">
+    <value>Next</value>
+  </data>
+  <data name="ADF_Widget_PreviousView_Desc" xml:space="preserve">
+    <value>Go to previous view</value>
+  </data>
+  <data name="ADF_Widget_PreviousView_Label" xml:space="preserve">
+    <value>Previous</value>
+  </data>
+  <data name="ADF_Widget_ZoomIn_Desc" xml:space="preserve">
+    <value>Zoom in by a preset increment</value>
+  </data>
+  <data name="ADF_Widget_ZoomIn_Label" xml:space="preserve">
+    <value>Zoom In</value>
+  </data>
+  <data name="ADF_Widget_ZoomOut_Desc" xml:space="preserve">
+    <value>Zoom out by a preset increment</value>
+  </data>
+  <data name="ADF_Widget_ZoomOut_Label" xml:space="preserve">
+    <value>Zoom Out</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="BaseTemplate_ApplicationDefinition" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\BaseTemplate.ApplicationDefinition.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
 </root>
\ No newline at end of file

Added: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resources/BaseTemplate.ApplicationDefinition.xml
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resources/BaseTemplate.ApplicationDefinition.xml	                        (rev 0)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resources/BaseTemplate.ApplicationDefinition.xml	2010-11-21 21:03:39 UTC (rev 5396)
@@ -0,0 +1,1114 @@
+<?xml version="1.0"?>
+<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
+  <TemplateUrl>fusion/templates/mapguide/slate/index.html</TemplateUrl>
+  <MapSet>
+    <MapGroup id="MgMainMapId">
+      <Map>
+        <Type>MapGuide</Type>
+        <SingleTile>true</SingleTile>
+        <Extension>
+          <ResourceId />
+          <SelectionAsOverlay>true</SelectionAsOverlay>
+          <SelectionColor>0x0000FFA0</SelectionColor>
+        </Extension>
+      </Map>
+      <Extension />
+    </MapGroup>
+  </MapSet>
+  <WidgetSet>
+    <Container xsi:type="UiItemContainerType">
+      <Name>Toolbar</Name>
+      <Type>Toolbar</Type>
+      <Position>top</Position>
+      <Extension />
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>RefreshMap</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>SelectRadius</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>SelectPolygon</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ClearSelection</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>BufferPanel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Measure</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>FeatureInfo</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Query</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Theme</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Redline</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Print</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ViewOptions</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>About</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Help</Widget>
+      </Item>
+    </Container>
+    <Container xsi:type="UiItemContainerType">
+      <Name>ToolbarSecondary</Name>
+      <Type>Toolbar</Type>
+      <Position>top</Position>
+      <Extension />
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Select</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Pan</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Zoom</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomIn</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomOut</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>InitialMapView</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomToSelection</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>PreviousView</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>NextView</Widget>
+      </Item>
+    </Container>
+    <Container xsi:type="UiItemContainerType">
+      <Name>ToolbarVertical</Name>
+      <Type>Toolbar</Type>
+      <Position>left</Position>
+      <Extension />
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>SelectNoLabel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>PanNoLabel</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomNoLabel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomInNoLabel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomOutNoLabel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>InitialMapViewNoLabel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomToSelectionNoLabel</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>PreviousViewNoLabel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>NextViewNoLabel</Widget>
+      </Item>
+    </Container>
+    <Container xsi:type="UiItemContainerType">
+      <Name>Statusbar</Name>
+      <Type>Splitterbar</Type>
+      <Position>bottom</Position>
+      <Extension />
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>StatusCoords</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>StatusSelection</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>StatusScale</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>StatusViewSize</Widget>
+      </Item>
+    </Container>
+    <Container xsi:type="UiItemContainerType">
+      <Name>FileMenu</Name>
+      <Type>Toolbar</Type>
+      <Position>top</Position>
+      <Extension />
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>MapMenu</Widget>
+      </Item>
+      <Item xsi:type="FlyoutItemType">
+        <Function>Flyout</Function>
+        <Label>View</Label>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>ShowOverviewMap</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>ShowTaskWindow</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>ShowLegendWindow</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>ShowSelectionWindow</Widget>
+        </Item>
+      </Item>
+    </Container>
+    <Container xsi:type="UiItemContainerType">
+      <Name>MapRightClickMenu</Name>
+      <Type>ContextMenu</Type>
+      <Position>top</Position>
+      <Extension />
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>RefreshMap</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Pan</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Zoom</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomIn</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ZoomOut</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="FlyoutItemType">
+        <Function>Flyout</Function>
+        <Label>Zoom</Label>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>InitialMapView</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>PreviousView</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>NextView</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>ZoomToSelection</Widget>
+        </Item>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Select</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ClearSelection</Widget>
+      </Item>
+      <Item xsi:type="FlyoutItemType">
+        <Function>Flyout</Function>
+        <Label>Select More</Label>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>SelectRadius</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>SelectPolygon</Widget>
+        </Item>
+        <Item xsi:type="WidgetItemType">
+          <Function>Widget</Function>
+          <Widget>SelectWithin</Widget>
+        </Item>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>BufferPanel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Measure</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>FeatureInfo</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Query</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Theme</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Redline</Widget>
+      </Item>
+      <Item xsi:type="SeparatorItemType">
+        <Function>Separator</Function>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>ViewOptions</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Help</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>About</Widget>
+      </Item>
+    </Container>
+    <Container xsi:type="UiItemContainerType">
+      <Name>TaskMenu</Name>
+      <Type>ContextMenu</Type>
+      <Position>top</Position>
+      <Extension />
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>BufferPanel</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Measure</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>FeatureInfo</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Query</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Theme</Widget>
+      </Item>
+      <Item xsi:type="WidgetItemType">
+        <Function>Widget</Function>
+        <Widget>Redline</Widget>
+      </Item>
+    </Container>
+    <MapWidget>
+      <Name>Map</Name>
+      <Type>Map</Type>
+      <Extension>
+        <MenuContainer>MapRightClickMenu</MenuContainer>
+      </Extension>
+      <MapId>MgMainMapId</MapId>
+    </MapWidget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>About</Name>
+      <Type>About</Type>
+      <Location />
+      <Extension>
+        <AboutURL>widgets/About/About.html</AboutURL>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>about</ImageClass>
+      <Label>About</Label>
+      <Tooltip>Click to show information about this application</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget>
+      <Name>ActivityIndicator</Name>
+      <Type>ActivityIndicator</Type>
+      <Location />
+      <Extension>
+        <ElementId />
+      </Extension>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>BasemapSwitcher</Name>
+      <Type>BasemapSwitcher</Type>
+      <Location />
+      <Extension />
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>options</ImageClass>
+      <Label>External Providers</Label>
+      <Tooltip>Click to change the basemap</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>BufferPanel</Name>
+      <Type>BufferPanel</Type>
+      <Extension>
+        <Target>TaskPane</Target>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>buffer</ImageClass>
+      <Label>Buffer</Label>
+      <Tooltip>Click to create a buffer</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ClearSelection</Name>
+      <Type>ClearSelection</Type>
+      <Extension />
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select-clear</ImageClass>
+      <Label>Clear Selection</Label>
+      <Tooltip>Click to clear the current selection</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>PreviousView</Name>
+      <Type>ExtentHistory</Type>
+      <Extension>
+        <Direction>Previous</Direction>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>view-back</ImageClass>
+      <Label>Previous</Label>
+      <Tooltip>Zoom to previous extents</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>NextView</Name>
+      <Type>ExtentHistory</Type>
+      <Extension>
+        <Direction>Next</Direction>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>view-forward</ImageClass>
+      <Label>Next</Label>
+      <Tooltip>Zoom to next extents</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Help</Name>
+      <Type>Help</Type>
+      <Location />
+      <Extension>
+        <Target>HelpWindow</Target>
+        <Url>widgets/Help/Help.html</Url>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>help</ImageClass>
+      <Label>Help</Label>
+      <Tooltip>Click to get help</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>InitialMapView</Name>
+      <Type>InitialMapView</Type>
+      <Location />
+      <Extension>
+        <ViewType>initial</ViewType>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-full</ImageClass>
+      <Label>Zoom Extents</Label>
+      <Tooltip>Click to zoom to the full map extents</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget>
+      <Name>Legend</Name>
+      <Type>Legend</Type>
+      <Location />
+      <Extension>
+        <HideInvisibleLayers>true</HideInvisibleLayers>
+        <ShowRootFolder>false</ShowRootFolder>
+        <DisabledLayerIcon>images/icons/legend-layer.png</DisabledLayerIcon>
+        <RootFolderIcon>images/icons/legend-map.png</RootFolderIcon>
+        <ShowMapFolder>false</ShowMapFolder>
+        <LayerThemeIcon>images/icons/legend-theme.png</LayerThemeIcon>
+        <LayerRasterIcon>images/icons/legend-raster.png</LayerRasterIcon>
+        <LayerInfoIcon>images/icons/tree_layer_info.png</LayerInfoIcon>
+        <LayerDWFIcon>images/icons/legend-DWF.png</LayerDWFIcon>
+        <GroupInfoIcon>images/icons/tree_group_info.png</GroupInfoIcon>
+      </Extension>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>MapMenu</Name>
+      <Type>MapMenu</Type>
+      <Location />
+      <Extension>
+        <Folder />
+      </Extension>
+      <ImageUrl />
+      <ImageClass />
+      <Label>Maps</Label>
+      <Tooltip>Choose a map theme</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget>
+      <Name>Maptip</Name>
+      <Type>Maptip</Type>
+      <Location />
+      <Extension>
+        <Tolerance>2</Tolerance>
+        <Target>MaptipWindow</Target>
+        <WinFeatures>menubar=no,location=no,resizable=no,status=no</WinFeatures>
+        <Delay>350</Delay>
+        <Layer />
+      </Extension>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Measure</Name>
+      <Type>Measure</Type>
+      <Location />
+      <Extension>
+        <DistancePrecision>4</DistancePrecision>
+        <MeasureTooltipContainer>MeasureContainerBox</MeasureTooltipContainer>
+        <MeasureTooltipType>static</MeasureTooltipType>
+        <MeasureTipPositionLeft>15</MeasureTipPositionLeft>
+        <Units>none</Units>
+        <LineStyleWidth>2</LineStyleWidth>
+        <MeasureTipPositionTop>100</MeasureTipPositionTop>
+        <LineStyleColor>rgba(0,0,255,0.3)</LineStyleColor>
+        <FillStyle>rgba(0,0,255, 0.3)</FillStyle>
+        <Target>TaskPane</Target>
+        <AreaPrecision>4</AreaPrecision>
+        <Type>Both</Type>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>measure</ImageClass>
+      <Label>Measure</Label>
+      <Tooltip>Measure distances and areas on the map</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>FeatureInfo</Name>
+      <Type>FeatureInfo</Type>
+      <Location />
+      <Extension>
+        <Target>TaskPane</Target>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>featureinfo</ImageClass>
+      <Label>Feature Info</Label>
+      <Tooltip>Click to display selected feature info</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Query</Name>
+      <Type>Query</Type>
+      <Location />
+      <Extension>
+        <Target>TaskPane</Target>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>query</ImageClass>
+      <Label>Query</Label>
+      <Tooltip>Click to execute a custom query</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Theme</Name>
+      <Type>Theme</Type>
+      <Location />
+      <Extension>
+        <Target>TaskPane</Target>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>theme</ImageClass>
+      <Label>Theme</Label>
+      <Tooltip>Click to create a themed layer</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Redline</Name>
+      <Type>Redline</Type>
+      <Location />
+      <Extension>
+        <FeatureStyle />
+        <Target>TaskPane</Target>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>redline</ImageClass>
+      <Label>Redline</Label>
+      <Tooltip>Click to draw redline features</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget>
+      <Name>Navigator</Name>
+      <Type>Navigator</Type>
+      <Location />
+      <Extension />
+    </Widget>
+    <Widget>
+      <Name>OverviewMap</Name>
+      <Type>OverviewMap</Type>
+      <Location />
+      <Extension>
+        <MinRatio>32</MinRatio>
+        <MapId />
+        <MaxRatio>128</MaxRatio>
+      </Extension>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Pan</Name>
+      <Type>Pan</Type>
+      <Location />
+      <Extension />
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>pan</ImageClass>
+      <Label>Pan</Label>
+      <Tooltip>Click and drag to pan the map</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Print</Name>
+      <Type>Print</Type>
+      <Extension>
+        <ShowPrintUI>true</ShowPrintUI>
+        <ShowNorthArrow>false</ShowNorthArrow>
+        <PageTitle />
+        <ImageBaseUrl />
+        <ShowLegend>false</ShowLegend>
+        <ShowTitle>false</ShowTitle>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>file-print</ImageClass>
+      <Label>Print</Label>
+      <Tooltip>Print the current map view</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>RefreshMap</Name>
+      <Type>RefreshMap</Type>
+      <Location />
+      <Extension />
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>view-refresh</ImageClass>
+      <Label>Refresh</Label>
+      <Tooltip>Click to redraw the map</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>SaveMap</Name>
+      <Type>SaveMap</Type>
+      <Extension>
+        <Format>png</Format>
+        <Scale />
+        <ResourceId />
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>file-save</ImageClass>
+      <Label>Save map</Label>
+      <Tooltip>Click to save the map as an image</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Select</Name>
+      <Type>Select</Type>
+      <Location />
+      <Extension>
+        <Tolerance>3</Tolerance>
+        <SelectionType>INTERSECTS</SelectionType>
+        <QueryActiveLayer>false</QueryActiveLayer>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select</ImageClass>
+      <Label>Select</Label>
+      <Tooltip>Click to select features</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget>
+      <Name>SelectionPanel</Name>
+      <Type>SelectionPanel</Type>
+      <Location />
+      <Extension />
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>SelectPolygon</Name>
+      <Type>SelectPolygon</Type>
+      <Location />
+      <Extension>
+        <Tolerance>3</Tolerance>
+        <SelectionType>INTERSECTS</SelectionType>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select-polygon</ImageClass>
+      <Label>Select Polygon</Label>
+      <Tooltip>Draw a polygon to perform a selection</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>SelectRadius</Name>
+      <Type>SelectRadius</Type>
+      <Extension>
+        <Tolerance>3</Tolerance>
+        <RadiusTooltipType>dynamic</RadiusTooltipType>
+        <RadiusTooltipContainer />
+        <SelectionType>INTERSECTS</SelectionType>
+        <DefaultRadius>20</DefaultRadius>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select-radius</ImageClass>
+      <Label>Select Radius</Label>
+      <Tooltip>Click to select within a radius</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>SelectWithin</Name>
+      <Type>SelectWithin</Type>
+      <Location />
+      <Extension>
+        <Target>TaskPane</Target>
+        <DisableIfSelectionEmpty>true</DisableIfSelectionEmpty>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select-features</ImageClass>
+      <Label>Select within</Label>
+      <Tooltip>Click to select features within this selection</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget>
+      <Name>TaskPane</Name>
+      <Type>TaskPane</Type>
+      <Location />
+      <Extension>
+        <MenuContainer>TaskMenu</MenuContainer>
+        <InitialTask />
+      </Extension>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ViewOptions</Name>
+      <Type>ViewOptions</Type>
+      <Location />
+      <Extension>
+        <DisplayUnits />
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>options</ImageClass>
+      <Label>Options</Label>
+      <Tooltip>Click to change the units displayed</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>Zoom</Name>
+      <Type>Zoom</Type>
+      <Extension>
+        <Tolerance>5</Tolerance>
+        <Factor>2</Factor>
+        <Direction>in</Direction>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-in</ImageClass>
+      <Label>Zoom Rectangle</Label>
+      <Tooltip>Click or click and drag on the map to zoom in</Tooltip>
+      <StatusText>Click or click and drag on the map to zoom in</StatusText>
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ZoomOut</Name>
+      <Type>ZoomOnClick</Type>
+      <Location />
+      <Extension>
+        <Factor>0.5</Factor>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-out-fixed</ImageClass>
+      <Label>Zoom Out</Label>
+      <Tooltip>Zoom out to display a larger area</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ZoomIn</Name>
+      <Type>ZoomOnClick</Type>
+      <Location />
+      <Extension>
+        <Factor>2.0</Factor>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-in-fixed</ImageClass>
+      <Label>Zoom In</Label>
+      <Tooltip>Zoom in to display more detail</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ZoomToSelection</Name>
+      <Type>ZoomToSelection</Type>
+      <Location />
+      <Extension>
+        <MaximumZoomDimension>-1</MaximumZoomDimension>
+        <ZoomFactor>2</ZoomFactor>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select-zoom</ImageClass>
+      <Label>Zoom Selection</Label>
+      <Tooltip>Click to zoom to the selection</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>InitialMapViewNoLabel</Name>
+      <Type>InitialMapView</Type>
+      <Location />
+      <Extension>
+        <ViewType>initial</ViewType>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-full</ImageClass>
+      <Label />
+      <Tooltip>Click to zoom to the full map extents</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>NextViewNoLabel</Name>
+      <Type>ExtentHistory</Type>
+      <Extension>
+        <Direction>Next</Direction>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>view-forward</ImageClass>
+      <Label />
+      <Tooltip>Zoom to next extents</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>PanNoLabel</Name>
+      <Type>Pan</Type>
+      <Location />
+      <Extension />
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>pan</ImageClass>
+      <Label />
+      <Tooltip>Click and drag to pan the map</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>PreviousViewNoLabel</Name>
+      <Type>ExtentHistory</Type>
+      <Extension>
+        <Direction>Previous</Direction>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>view-back</ImageClass>
+      <Label />
+      <Tooltip>Zoom to previous extents</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>SelectNoLabel</Name>
+      <Type>Select</Type>
+      <Location />
+      <Extension>
+        <Tolerance>3</Tolerance>
+        <SelectionType>INTERSECTS</SelectionType>
+        <QueryActiveLayer>false</QueryActiveLayer>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select</ImageClass>
+      <Label />
+      <Tooltip>Click to select features</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ZoomNoLabel</Name>
+      <Type>Zoom</Type>
+      <Extension>
+        <Tolerance>5</Tolerance>
+        <Factor>2</Factor>
+        <Direction>in</Direction>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-in</ImageClass>
+      <Label />
+      <Tooltip>Click or click and drag on the map to zoom in</Tooltip>
+      <StatusText>Click or click and drag on the map to zoom in</StatusText>
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ZoomInNoLabel</Name>
+      <Type>ZoomOnClick</Type>
+      <Location />
+      <Extension>
+        <Factor>2.0</Factor>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-in-fixed</ImageClass>
+      <Label />
+      <Tooltip>Zoom in to display more detail</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ZoomOutNoLabel</Name>
+      <Type>ZoomOnClick</Type>
+      <Location />
+      <Extension>
+        <Factor>0.5</Factor>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>zoom-out-fixed</ImageClass>
+      <Label />
+      <Tooltip>Zoom out to display a larger area</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ZoomToSelectionNoLabel</Name>
+      <Type>ZoomToSelection</Type>
+      <Location />
+      <Extension>
+        <MaximumZoomDimension>-1</MaximumZoomDimension>
+        <ZoomFactor>2</ZoomFactor>
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>select-zoom</ImageClass>
+      <Label />
+      <Tooltip>Click to zoom to the selection</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ShowOverviewMap</Name>
+      <Type>InvokeScript</Type>
+      <Location />
+      <Extension>
+        <Script>showOverviewMap()</Script>
+        <Target />
+      </Extension>
+      <ImageUrl />
+      <ImageClass />
+      <Label>Show Overview Map</Label>
+      <Tooltip>Display the overview map window</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ShowTaskWindow</Name>
+      <Type>InvokeScript</Type>
+      <Location />
+      <Extension>
+        <Script>showTaskPane()</Script>
+        <Target />
+      </Extension>
+      <ImageUrl />
+      <ImageClass />
+      <Label>Show Task Pane</Label>
+      <Tooltip>Display the task pane window</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ShowLegendWindow</Name>
+      <Type>InvokeScript</Type>
+      <Location />
+      <Extension>
+        <Script>showLegend()</Script>
+        <Target />
+      </Extension>
+      <ImageUrl />
+      <ImageClass />
+      <Label>Show Legend</Label>
+      <Tooltip>Display the legend window</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>ShowSelectionWindow</Name>
+      <Type>InvokeScript</Type>
+      <Location />
+      <Extension>
+        <Script>showSelectionPanel()</Script>
+        <Target />
+      </Extension>
+      <ImageUrl />
+      <ImageClass />
+      <Label>Show Selection Panel</Label>
+      <Tooltip>Display the selection window</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget>
+      <Name>StatusCoords</Name>
+      <Type>CursorPosition</Type>
+      <Extension>
+        <Precision>4</Precision>
+        <Template>x: {x}, y: {y}</Template>
+        <Units>dd</Units>
+      </Extension>
+    </Widget>
+    <Widget>
+      <Name>StatusSelection</Name>
+      <Type>SelectionInfo</Type>
+      <Location />
+      <Extension>
+        <EmptyText>No features selected</EmptyText>
+        <Template>{0} feature(s) selected on {1} layer(s)</Template>
+      </Extension>
+    </Widget>
+    <Widget>
+      <Name>StatusScale</Name>
+      <Type>EditableScale</Type>
+      <Extension>
+        <Precision>4</Precision>
+      </Extension>
+    </Widget>
+    <Widget>
+      <Name>StatusViewSize</Name>
+      <Type>ViewSize</Type>
+      <Location />
+      <Extension>
+        <Precision>2</Precision>
+        <Template>{w} x {h} {units}</Template>
+        <Units>Meters</Units>
+      </Extension>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>StatusOverviewMap</Name>
+      <Type>InvokeScript</Type>
+      <Location />
+      <Extension>
+        <Script>showOverviewMap()</Script>
+        <Target />
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>iconNavigator</ImageClass>
+      <Label />
+      <Tooltip>Display the overview map window</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+    <Widget xsi:type="UiWidgetType">
+      <Name>StatusNavigator</Name>
+      <Type>InvokeScript</Type>
+      <Location />
+      <Extension>
+        <Script>showOverviewMap()</Script>
+        <Target />
+      </Extension>
+      <ImageUrl>images/icons.png</ImageUrl>
+      <ImageClass>iconNavigator</ImageClass>
+      <Label />
+      <Tooltip>Display the overview map window</Tooltip>
+      <StatusText />
+      <Disabled>false</Disabled>
+    </Widget>
+  </WidgetSet>
+  <Extension />
+</ApplicationDefinition>
\ No newline at end of file

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpCoordinateSystem.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpCoordinateSystem.cs	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpCoordinateSystem.cs	2010-11-21 21:03:39 UTC (rev 5396)
@@ -17,25 +17,6 @@
 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 // 
 #endregion
-#region Disclaimer / License
-// Copyright (C) 2009, Kenneth Skovhede
-// http://www.hexad.dk, opensource at hexad.dk
-// 
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-// 
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-// 
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-// 
-#endregion
 using System;
 using System.Xml;
 using System.Collections;

Modified: sandbox/maestro-3.0/SDK/SDK.sln
===================================================================
--- sandbox/maestro-3.0/SDK/SDK.sln	2010-11-19 09:36:30 UTC (rev 5395)
+++ sandbox/maestro-3.0/SDK/SDK.sln	2010-11-21 21:03:39 UTC (rev 5396)
@@ -1,6 +1,6 @@
 
 Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
+# Visual C# Express 2008
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.MaestroAPI", "..\OSGeo.MapGuide.MaestroAPI\OSGeo.MapGuide.MaestroAPI.csproj", "{80FA3158-8B5F-48D1-A393-0378AFE48A7E}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.MaestroAPI.Http", "..\OSGeo.MapGuide.MaestroAPI.Http\OSGeo.MapGuide.MaestroAPI.Http.csproj", "{6EF1E775-444B-4E5F-87FB-D687C43A68D7}"
@@ -33,6 +33,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaestroAPITests", "..\MaestroAPITests\MaestroAPITests.csproj", "{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaestroAPITestRunner", "..\MaestroAPITestRunner\MaestroAPITestRunner.csproj", "{50C12B5C-387C-4007-A1D1-CB181CB474CC}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -103,6 +105,10 @@
 		{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}.Release|Any CPU.Build.0 = Release|Any CPU
+		{50C12B5C-387C-4007-A1D1-CB181CB474CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{50C12B5C-387C-4007-A1D1-CB181CB474CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{50C12B5C-387C-4007-A1D1-CB181CB474CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{50C12B5C-387C-4007-A1D1-CB181CB474CC}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE



More information about the mapguide-commits mailing list