[mapguide-commits] r8187 - in trunk/Tools/Maestro: Maestro.AddIn.ExtendedObjectModels/Templates Maestro.AddIn.Local/Services Maestro.AddIn.Scripting/Services Maestro.Base/Commands Maestro.Base/Commands/SiteExplorer Maestro.Base/Commands/Test Maestro.Base/Editor Maestro.Base/Templates Maestro.Base/UI Maestro.Base/UI/Packaging Maestro.Editors Maestro.Editors/Common Maestro.Editors/Diff Maestro.Editors/FeatureSource Maestro.Editors/FeatureSource/CoordSys Maestro.Editors/FeatureSource/Extensions Maestro.Editors/FeatureSource/Preview Maestro.Editors/FeatureSource/Providers Maestro.Editors/FeatureSource/Providers/Gdal Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors Maestro.Editors/FeatureSource/Providers/Rdbms Maestro.Editors/FeatureSource/Providers/Wms Maestro.Editors/Fusion Maestro.Editors/LayerDefinition Maestro.Editors/LayerDefinition/Drawing Maestro.Editors/LayerDefinition/Raster Maestro.Editors/LayerDefinition/Vector Maestro.Editors/LayerDefinition/Vector/GridEditor Maestro.Edi tors/LayerDefinition/Vector/Scales Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors Maestro.Editors/LayerDefinition/Vector/StyleEditors Maestro.Editors/LayerDefinition/Vector/Thematics Maestro.Editors/MapDefinition Maestro.Editors/Migration Maestro.Editors/Preview Maestro.Editors/PrintLayout Maestro.Editors/SymbolDefinition Maestro.Editors/SymbolDefinition/GraphicsEditors Maestro.Editors/WatermarkDefinition Maestro.Editors/WebLayout Maestro.Editors/WebLayout/Commands Maestro.LiveMapEditor MaestroAPITests MaestroFsPreview OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/Capability

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Jun 9 06:09:04 PDT 2014


Author: jng
Date: 2014-06-09 06:09:04 -0700 (Mon, 09 Jun 2014)
New Revision: 8187

Modified:
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer110ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer120ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer130ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer230ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer240ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout110ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout240ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout260ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs
   trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompareResourceCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenResourceCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenSymbolBrowserCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/Test/TestCommands.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/ViewXmlChangesCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/EditorContentBase.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/FeatureSourceEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/UI/DirtyStateConfirmationDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/MonoCompatibleExpressionEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/ResourceDataCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/ResourcePicker.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/SymbolPicker.cs
   trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/PreviewPane.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/SqlQueryCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/GdalProviderCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/DSNCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/UnmanagedCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/MapCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Raster/RasterLayerSettingsSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/GridEditor/RuleGridView.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionListButtons.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ExplodeThemeDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors/ReferenceCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/AreaFeatureStyleEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/FontStyleEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/LineFeatureStyleEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/PointFeatureStyleEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Thematics/ThemeCreator.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/VectorLayerEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Migration/CopyMoveToServerDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Migration/MigrateDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs
   trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/ResourceEditorServiceBase.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/CompoundSymbolDefinitionEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/ExtractSymbolLibraryDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SimpleSymbolReferenceCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkContentCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/InvokeURLCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/SearchCmdCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs
   trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs
   trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IConnectionCapabilities.cs
Log:
More API restructuring:
 - Modify IConnectionCapabilities to include SupportedResourceTypes, which is a list of supported resource types for this current connection.
 - Change ResourcePicker to get its list of available resource types from this capabilities of the server connection. This breaks any code that uses the ResourcePicker and all referenced code has been fixed to use the new constructors.
 - Modify IEditorService to remove various methods and properties which made IEditorService basically a pseudo server connection and replace them with a CurrentConnection property that returns the associated server connection instance. This allows for code to easily access the actual server connection instance from an editor service which is what most code ultimately wants to do anyway. This too broke lots of code using it and all referenced code using this interface has been fixed as well.

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer110ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer110ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer110ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -50,7 +50,7 @@
 
         public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer120ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer120ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer120ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -50,7 +50,7 @@
 
         public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer130ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer130ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer130ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -50,7 +50,7 @@
 
         public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer230ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer230ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer230ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -50,7 +50,7 @@
 
         public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer240ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer240ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer240ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -50,7 +50,7 @@
 
         public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout110ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout110ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout110ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -53,7 +53,7 @@
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
             //This is to just ensure we have a functional WebLayout when it's created
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout240ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout240ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout240ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -53,7 +53,7 @@
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
             //This is to just ensure we have a functional WebLayout when it's created
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout260ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout260ItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout260ItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -53,7 +53,7 @@
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
             //This is to just ensure we have a functional WebLayout when it's created
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -70,7 +70,7 @@
                 mapDef.CoordinateSystem = wkt;
                 mapDef.SetExtents(env.MinX, env.MinY, env.MaxX, env.MaxY);
                 string resId = "Session:" + edSvc.SessionID + "//" + Guid.NewGuid() + "." + res.ResourceType.ToString();
-                edSvc.ResourceService.SetResourceXmlData(resId, ResourceTypeRegistry.Serialize(res));
+                conn.ResourceService.SetResourceXmlData(resId, ResourceTypeRegistry.Serialize(res));
                 mapDef.AddLayer(null, "PreviewLayer", resId);
             }
             else if (res.ResourceType == ResourceTypes.MapDefinition.ToString())
@@ -80,7 +80,7 @@
             else if (res.ResourceType == ResourceTypes.WatermarkDefinition.ToString())
             {
                 string resId = "Session:" + edSvc.SessionID + "//" + Guid.NewGuid() + "." + res.ResourceType.ToString();
-                edSvc.ResourceService.SetResourceXmlData(resId, ResourceTypeRegistry.Serialize(res));
+                conn.ResourceService.SetResourceXmlData(resId, ResourceTypeRegistry.Serialize(res));
 
                 var csFact = new MgCoordinateSystemFactory();
                 var arbXY = csFact.ConvertCoordinateSystemCodeToWkt("XY-M");
@@ -92,7 +92,7 @@
             }
 
             var mapResId = new MgResourceIdentifier("Session:" + edSvc.SessionID + "//" + mapDef.ResourceType.ToString() + "Preview" + Guid.NewGuid() + "." + mapDef.ResourceType.ToString());
-            edSvc.ResourceService.SetResourceXmlData(mapResId.ToString(), ResourceTypeRegistry.Serialize(mapDef));
+            conn.ResourceService.SetResourceXmlData(mapResId.ToString(), ResourceTypeRegistry.Serialize(mapDef));
 
             //MgdMap map = new MgdMap(mapResId);
 

Modified: trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -167,7 +167,7 @@
         {
             Func<string> picker = () =>
             {
-                using (var diag = new ResourcePicker(conn.ResourceService, resourceType, ResourcePickerMode.OpenResource))
+                using (var diag = new ResourcePicker(conn, resourceType, ResourcePickerMode.OpenResource))
                 {
                     if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                     {
@@ -198,7 +198,7 @@
         {
             Func<string> picker = () =>
             {
-                using (var diag = new ResourcePicker(conn.ResourceService, resourceType, ResourcePickerMode.SaveResource))
+                using (var diag = new ResourcePicker(conn, resourceType, ResourcePickerMode.SaveResource))
                 {
                     if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                     {
@@ -228,7 +228,7 @@
         {
             Func<string> picker = () =>
             {
-                using (var diag = new ResourcePicker(conn.ResourceService, ResourcePickerMode.OpenFolder))
+                using (var diag = new ResourcePicker(conn, ResourcePickerMode.OpenFolder))
                 {
                     if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                     {

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -41,7 +41,7 @@
             
             if (ed != null)
             {
-                using (var picker = new ResourcePicker(conn.ResourceService, ed.Resource.ResourceType, ResourcePickerMode.SaveResource))
+                using (var picker = new ResourcePicker(conn, ed.Resource.ResourceType, ResourcePickerMode.SaveResource))
                 {
                     if (!string.IsNullOrEmpty(ed.EditorService.SuggestedSaveFolder))
                         picker.SetStartingPoint(ed.EditorService.SuggestedSaveFolder);

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompareResourceCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompareResourceCommand.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompareResourceCommand.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -39,7 +39,7 @@
             var items = siteExp.SelectedItems;
             if (items.Length == 1)
             {
-                using (var diag = new CompareResourceDialog(conn.ResourceService))
+                using (var diag = new CompareResourceDialog(conn))
                 {
                     diag.Source = items[0].ResourceId;
                     diag.ShowDialog();

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -76,7 +76,7 @@
 
         private static void DoRepointResource(Workbench wb, IServerConnection conn, ResourceIdentifier resId)
         {
-            var diag = new RepointerDialog(resId, conn.ResourceService);
+            var diag = new RepointerDialog(resId, conn);
             if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 string srcId = diag.Source;

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenResourceCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenResourceCommand.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenResourceCommand.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -35,7 +35,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn.ResourceService, ResourcePickerMode.OpenResource);
+            var picker = new ResourcePicker(conn, ResourcePickerMode.OpenResource);
             if (picker.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
             {
                 MessageService.ShowMessage(picker.ResourceID);
@@ -56,7 +56,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn.ResourceService, ResourcePickerMode.OpenResource);
+            var picker = new ResourcePicker(conn, ResourcePickerMode.OpenResource);
             picker.SetStartingPoint("Library://Samples/Sheboygan/"); //NOXLATE
             if (picker.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
             {
@@ -78,7 +78,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn.ResourceService, ResourcePickerMode.OpenFolder);
+            var picker = new ResourcePicker(conn, ResourcePickerMode.OpenFolder);
             if (picker.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
             {
                 MessageService.ShowMessage(picker.ResourceID);
@@ -100,7 +100,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn.ResourceService, OSGeo.MapGuide.MaestroAPI.ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource);
+            var picker = new ResourcePicker(conn, OSGeo.MapGuide.MaestroAPI.ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource);
             if (picker.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
             {
                 MessageService.ShowMessage(picker.ResourceID);

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenSymbolBrowserCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenSymbolBrowserCommand.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenSymbolBrowserCommand.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -37,7 +37,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource);
+            var picker = new ResourcePicker(conn, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource);
             if (picker.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
             {
                 var browser = new SymbolPicker(picker.ResourceID, conn);

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/Test/TestCommands.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/Test/TestCommands.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/Test/TestCommands.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -36,7 +36,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn.ResourceService, ResourcePickerMode.SaveResource);
+            var picker = new ResourcePicker(conn, ResourcePickerMode.SaveResource);
             if (picker.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
             {
                 MessageService.ShowMessage(picker.ResourceID);
@@ -57,7 +57,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.SaveResource);
+            var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.SaveResource);
             if (picker.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
             {
                 MessageService.ShowMessage(picker.ResourceID);

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/ViewXmlChangesCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/ViewXmlChangesCommand.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/ViewXmlChangesCommand.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -48,7 +48,7 @@
             try
             {
                 ed.SyncSessionCopy();
-                var set = XmlCompareUtil.PrepareForComparison(edSvc.ResourceService,
+                var set = XmlCompareUtil.PrepareForComparison(edSvc.CurrentConnection.ResourceService,
                                                               edSvc.ResourceID,
                                                               edSvc.EditedResourceID);
                 sLF = set.Source;

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/EditorContentBase.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/EditorContentBase.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/EditorContentBase.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -235,7 +235,8 @@
         /// </summary>
         protected virtual ICollection<ValidationIssue> ValidateEditedResource() 
         {
-            var context = new ResourceValidationContext(_svc.ResourceService, _svc.FeatureService);
+            var conn = _svc.CurrentConnection;
+            var context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
             //Don't recurse as we only want to validate the current resource
             var issues = ResourceValidatorSet.Validate(context, this.Resource, false);
             var set = new ValidationResultSet(issues);

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/FeatureSourceEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/FeatureSourceEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/FeatureSourceEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -77,19 +77,20 @@
         protected override void OnBeforeSave(object sender, CancelEventArgs e)
         {
             List<string> affectedMapDefinitions = new List<string>();
-            var refs = _edsvc.ResourceService.EnumerateResourceReferences(_edsvc.ResourceID);
+            var resSvc = _edsvc.CurrentConnection.ResourceService;
+            var refs = resSvc.EnumerateResourceReferences(_edsvc.ResourceID);
             foreach (var r in refs.ResourceId)
             {
                 ResourceIdentifier rid = new ResourceIdentifier(r);
                 if (rid.ResourceType == OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString())
                 {
-                    var lrefs = _edsvc.ResourceService.EnumerateResourceReferences(r);
+                    var lrefs = resSvc.EnumerateResourceReferences(r);
                     foreach (var lr in lrefs.ResourceId)
                     {
                         ResourceIdentifier rid2 = new ResourceIdentifier(lr);
                         if (rid2.ResourceType == OSGeo.MapGuide.MaestroAPI.ResourceTypes.MapDefinition.ToString())
                         {
-                            var mdf = (IMapDefinition)_edsvc.ResourceService.GetResource(lr);
+                            var mdf = (IMapDefinition)resSvc.GetResource(lr);
                             if (mdf.BaseMap != null)
                             {
                                 foreach (var blg in mdf.BaseMap.BaseMapLayerGroup)

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -58,9 +58,9 @@
             //Only available on MGOS 2.2 and above
             this.LocalPreviewEnabled = service.SiteVersion >= new Version(2, 2);
             _fs = (IFeatureSource)service.GetEditedResource();
-            _caps = service.FeatureService.GetProviderCapabilities(_fs.Provider);
-            _fsvc = service.FeatureService;
-            _rsvc = service.ResourceService;
+            _fsvc = service.CurrentConnection.FeatureService;
+            _caps = _fsvc.GetProviderCapabilities(_fs.Provider);
+            _rsvc = service.CurrentConnection.ResourceService;
             _edsvc = service;
             _edsvc.RegisterCustomNotifier(this);
             this.ConfigEnabled = _caps.Connection.SupportsConfiguration;

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -106,13 +106,14 @@
             }
 
             List<string> affectedMapDefinitions = new List<string>();
-            var refs = _edsvc.ResourceService.EnumerateResourceReferences(_edsvc.ResourceID);
+            var resSvc = _edsvc.CurrentConnection.ResourceService;
+            var refs = resSvc.EnumerateResourceReferences(_edsvc.ResourceID);
             foreach (var r in refs.ResourceId)
             {
                 var resId = new ResourceIdentifier(r);
                 if (resId.ResourceType == OSGeo.MapGuide.MaestroAPI.ResourceTypes.MapDefinition.ToString())
                 {
-                    var mdf = (IMapDefinition)_edsvc.ResourceService.GetResource(r);
+                    var mdf = (IMapDefinition)resSvc.GetResource(r);
                     if (mdf.BaseMap != null)
                     {
                         foreach (var blg in mdf.BaseMap.BaseMapLayerGroup)

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -109,7 +109,8 @@
                 try
                 {
                     var res = ResourceTypeRegistry.Deserialize(editor.XmlContent);
-                    var context = new ResourceValidationContext(_edSvc.ResourceService, _edSvc.FeatureService);
+                    var conn = _edSvc.CurrentConnection;
+                    var context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
                     //We don't care about dependents, we just want to validate *this* resource
                     var resIssues = ResourceValidatorSet.Validate(context, res, false);
                     set.AddIssues(resIssues);
@@ -154,11 +155,12 @@
             //Save the current resource to another session copy
             string resId = "Session:" + this.EditorService.SessionID + "//" + Guid.NewGuid() + "." + this.Resource.ResourceType.ToString(); //NOXLATE
             string xml = this.XmlContent;
+            var resSvc = this.EditorService.CurrentConnection.ResourceService;
             try
             {
                 using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
                 {
-                    this.EditorService.ResourceService.SetResourceXmlData(resId, ms);
+                    resSvc.SetResourceXmlData(resId, ms);
                 }
             }
             catch (Exception ex)
@@ -167,7 +169,7 @@
             }
 
             //Copy any resource data
-            var previewCopy = this.EditorService.ResourceService.GetResource(resId);
+            var previewCopy = resSvc.GetResource(resId);
             this.Resource.CopyResourceDataTo(previewCopy);
 
             var conn = previewCopy.CurrentConnection;
@@ -184,7 +186,7 @@
             {
                 using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
                 {
-                    _edSvc.ResourceService.SetResourceXmlData(_edSvc.EditedResourceID, ms);
+                    _edSvc.CurrentConnection.ResourceService.SetResourceXmlData(_edSvc.EditedResourceID, ms);
                 }
             }
             catch (Exception ex)
@@ -212,7 +214,7 @@
             if (MessageService.AskQuestion(Strings.ConfirmReloadXmlFromSource))
             {
                 var resId = this.EditorService.ResourceID;
-                using (var stream = this.EditorService.ResourceService.GetResourceXmlData(resId))
+                using (var stream = this.EditorService.CurrentConnection.ResourceService.GetResourceXmlData(resId))
                 {
                     using (var sr = new StreamReader(stream))
                     {

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -52,7 +52,7 @@
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
             //This is to just ensure we have a functional template when it's created
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -43,7 +43,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.DrawingSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.DrawingSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -51,7 +51,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -43,7 +43,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -43,7 +43,7 @@
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
             //This is to just ensure we have a functional WebLayout when it's created
-            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(conn, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Base/UI/DirtyStateConfirmationDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/DirtyStateConfirmationDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/UI/DirtyStateConfirmationDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -69,7 +69,7 @@
             try
             {
                 _edSvc.SyncSessionCopy();
-                var set = XmlCompareUtil.PrepareForComparison(_edSvc.ResourceService,
+                var set = XmlCompareUtil.PrepareForComparison(_edSvc.CurrentConnection.ResourceService,
                                                               _edSvc.ResourceID,
                                                               _edSvc.EditedResourceID);
                 sLF = set.Source;

Modified: trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -87,7 +87,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(SelectedConnection.ResourceService, ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(SelectedConnection, ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -69,7 +69,7 @@
             var caps = _conn.Capabilities;
             foreach (var rt in SiteResourceType.All())
             {
-                if (caps.IsSupportedResourceType(rt))
+                if (caps.IsSupportedResourceType(rt.ToString()))
                 {
                     chkAllowedTypes.Items.Add(rt, true);
                 }
@@ -163,7 +163,7 @@
 
         private void BrowseResourcePath_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourcePickerMode.OpenFolder))
+            using (var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenFolder))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -224,7 +224,7 @@
 
         private void btnBrowseRestorePath_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourcePickerMode.OpenFolder))
+            using (var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenFolder))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -182,7 +182,7 @@
             {
                 using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
                 {
-                    _svc.ResourceService.SetResourceXmlData(_svc.EditedResourceID, ms);
+                    _svc.CurrentConnection.ResourceService.SetResourceXmlData(_svc.EditedResourceID, ms);
                 }
                 return true;
             }

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -285,7 +285,7 @@
                 ColumnValue.Tag = null;
                 try
                 {
-                    using (var rdr = _edSvc.FeatureService.AggregateQueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new System.Collections.Specialized.NameValueCollection() { 
+                    using (var rdr = _edSvc.CurrentConnection.FeatureService.AggregateQueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new System.Collections.Specialized.NameValueCollection() { 
                             { "UNIQ_VALS", expr } //NOXLATE
                         }))
                     {
@@ -330,7 +330,7 @@
                         try
                         {
                             retry = false;
-                            using (var rd = _edSvc.FeatureService.QueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new string[] { ColumnName.Text }))
+                            using (var rd = _edSvc.CurrentConnection.FeatureService.QueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new string[] { ColumnName.Text }))
                             {
                                 while (rd.ReadNext())
                                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/MonoCompatibleExpressionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/MonoCompatibleExpressionEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/MonoCompatibleExpressionEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -986,7 +986,7 @@
                 ColumnValue.Tag = null;
                 try
                 {
-                    using (var rdr = _edSvc.FeatureService.AggregateQueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new System.Collections.Specialized.NameValueCollection() { 
+                    using (var rdr = _edSvc.CurrentConnection.FeatureService.AggregateQueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new System.Collections.Specialized.NameValueCollection() { 
                             { "UNIQ_VALS", expr }
                         }))
                     {
@@ -1037,7 +1037,7 @@
                         try
                         {
                             retry = false;
-                            using (var rd = _edSvc.FeatureService.QueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new string[] { ColumnName.Text }))
+                            using (var rd = _edSvc.CurrentConnection.FeatureService.QueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new string[] { ColumnName.Text }))
                             {
                                 while (rd.ReadNext())
                                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -45,21 +45,21 @@
             InitializeComponent();
         }
 
-        private IResourceService _resSvc;
+        private IServerConnection _conn;
 
         /// <summary>
         /// Constructor
         /// </summary>
         /// <param name="resId">The given resource, whose dependencies we want to re-point</param>
-        /// <param name="resSvc">The resource service</param>
-        public RepointerDialog(ResourceIdentifier resId, IResourceService resSvc)
+        /// <param name="edSvc">The editor service</param>
+        public RepointerDialog(ResourceIdentifier resId, IServerConnection conn)
             : this()
         {
-            _resSvc = resSvc;
+            _conn = conn;
             txtSource.Text = resId.ToString();
             this.ResourceType = resId.ResourceType;
 
-            var dependents = resSvc.EnumerateResourceReferences(resId.ToString());
+            var dependents = conn.ResourceService.EnumerateResourceReferences(resId.ToString());
 
             lstAffectedResources.DataSource = dependents.ResourceId;
         }
@@ -97,7 +97,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_resSvc, this.ResourceType, ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, this.ResourceType, ResourcePickerMode.OpenResource))
             {
                 if (string.IsNullOrEmpty(LastSelectedFolder.FolderId))
                     picker.SetStartingPoint(ResourceIdentifier.GetParentFolder(this.Source));

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ResourceDataCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ResourceDataCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ResourceDataCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -149,7 +149,7 @@
 
         private void LoadResourceData()
         {
-            var list = _edSvc.ResourceService.EnumerateResourceData(_edSvc.EditedResourceID);
+            var list = _edSvc.CurrentConnection.ResourceService.EnumerateResourceData(_edSvc.EditedResourceID);
             _data = list.ResourceData;
 
             BindResourceList();

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ResourcePicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ResourcePicker.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ResourcePicker.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -46,22 +46,6 @@
         private ResourcePicker()
         {
             InitializeComponent();
-            _resTypes = new string[] 
-            {
-                ResourceTypes.ApplicationDefinition.ToString(),
-                ResourceTypes.DrawingSource.ToString(),
-                ResourceTypes.FeatureSource.ToString(),
-                ResourceTypes.Folder.ToString(),
-                ResourceTypes.LayerDefinition.ToString(),
-                ResourceTypes.LoadProcedure.ToString(),
-                ResourceTypes.MapDefinition.ToString(),
-                ResourceTypes.PrintLayout.ToString(),
-                ResourceTypes.SymbolDefinition.ToString(),
-                ResourceTypes.SymbolLibrary.ToString(),
-                ResourceTypes.WebLayout.ToString(),
-                ResourceTypes.WatermarkDefinition.ToString()
-            };
-            cmbResourceFilter.DataSource = _resTypes;
             RepositoryIcons.PopulateImageList(resImageList);
             RepositoryIcons.PopulateImageList(folderImageList);
         }
@@ -75,19 +59,81 @@
         /// folder selection is desired, set <see cref="SelectFoldersOnly"/> to true before
         /// showing the dialog
         /// </summary>
-        /// <param name="resSvc">The res SVC.</param>
-        /// <param name="mode">The mode.</param>
-        public ResourcePicker(IResourceService resSvc, ResourcePickerMode mode)
+        /// <remarks>
+        /// The list of allowed resource types will be inferred from the capabilities of the given connection instance
+        /// </remarks>
+        /// <param name="conn">The server connection</param>
+        /// <param name="mode">The mode that the resource picker will be used in</param>
+        public ResourcePicker(IServerConnection conn, ResourcePickerMode mode)
+            : this(conn.ResourceService, mode, conn.Capabilities.SupportedResourceTypes)
+        { }
+
+        /// <summary>
+        /// Constructs a new instance. Use this overload to select any resource type. If only
+        /// folder selection is desired, set <see cref="SelectFoldersOnly"/> to true before
+        /// showing the dialog
+        /// </summary>
+        /// <remarks>
+        /// Use this overload if you need to present a resource picker with resource types not currently known or supported
+        /// by the Maestro API
+        /// </remarks>
+        /// <param name="resSvc">The resource service</param>
+        /// <param name="mode">The mode that the resource picker will be used in</param>
+        /// <param name="allowedResourceTypes">The array of allowed resource types</param>
+        public ResourcePicker(IResourceService resSvc, ResourcePickerMode mode, string[] allowedResourceTypes)
             : this()
         {
             _resSvc = resSvc;
-            repoView.Init(resSvc, true, false);
+            _resTypes = allowedResourceTypes;
+            cmbResourceFilter.DataSource = _resTypes;
+            repoView.Init(_resSvc, true, false);
             repoView.ItemSelected += OnFolderSelected;
             this.UseFilter = true;
             this.Mode = mode;
             SetStartingPoint(LastSelectedFolder.FolderId);
         }
 
+        /// <summary>
+        /// Constructs a new instance. Use this overload to select any resource type. If only
+        /// folder selection is desired, set <see cref="SelectFoldersOnly"/> to true before
+        /// showing the dialog
+        /// </summary>
+        /// <remarks>
+        /// The list of allowed resource types will be inferred from the capabilities of the given connection instance
+        /// </remarks>
+        /// <param name="conn">The server connection</param>
+        /// <param name="resTypeFilter">The resource type to filter on</param>
+        /// <param name="mode">The mode that the resource picker will be used in</param>
+        public ResourcePicker(IServerConnection conn, string resTypeFilter, ResourcePickerMode mode)
+            : this(conn.ResourceService, resTypeFilter, mode, conn.Capabilities.SupportedResourceTypes)
+        { }
+
+        /// <summary>
+        /// Constructs a new instance. Use this overload to select only resources of a specific type.
+        /// You cannot select folders in this mode. Attempting to set <see cref="SelectFoldersOnly"/> to
+        /// true will throw an <see cref="InvalidOperationException"/>
+        /// </summary>
+        /// <remarks>
+        /// Use this overload if you need to present a resource picker with resource types not currently known or supported
+        /// by the Maestro API
+        /// </remarks>
+        /// <param name="resSvc">The resource service.</param>
+        /// <param name="resTypeFilter">The resource type to filter on</param>
+        /// <param name="mode">The mode that the resource picker will be used in</param>
+        /// <param name="allowedResourceTypes">The array of allowed resource types</param>
+        public ResourcePicker(IResourceService resSvc, string resTypeFilter, ResourcePickerMode mode, string[] allowedResourceTypes)
+            : this(resSvc, mode, allowedResourceTypes)
+        {
+            if (mode == ResourcePickerMode.OpenFolder)
+                throw new InvalidOperationException(string.Format(Strings.ModeNotAllowed, mode));
+
+            this.Filter = resTypeFilter;
+            this.UseFilter = true;
+
+            _resourceMode = true;
+            cmbResourceFilter.Enabled = false;
+        }
+
         void OnFolderSelected(object sender, EventArgs e)
         {
             UpdateDocumentList();
@@ -153,27 +199,6 @@
         }
 
         /// <summary>
-        /// Constructs a new instance. Use this overload to select only resources of a specific type.
-        /// You cannot select folders in this mode. Attempting to set <see cref="SelectFoldersOnly"/> to
-        /// true will throw an <see cref="InvalidOperationException"/>
-        /// </summary>
-        /// <param name="resSvc">The resource service.</param>
-        /// <param name="resTypeFilter">The resource type to filter on.</param>
-        /// <param name="mode">The mode.</param>
-        public ResourcePicker(IResourceService resSvc, string resTypeFilter, ResourcePickerMode mode)
-            : this(resSvc, mode)
-        {
-            if (mode == ResourcePickerMode.OpenFolder)
-                throw new InvalidOperationException(string.Format(Strings.ModeNotAllowed, mode));
-
-            this.Filter = resTypeFilter;
-            this.UseFilter = true;
-
-            _resourceMode = true;
-            cmbResourceFilter.Enabled = false;
-        }
-
-        /// <summary>
         /// Gets or sets the resource filter. If a filter value is specified, browsing
         /// is locked to that particular resource type, otherwise all resource type can be
         /// selected

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/SymbolPicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/SymbolPicker.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/SymbolPicker.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -227,7 +227,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -43,16 +43,16 @@
             InitializeComponent();
         }
 
-        private IResourceService _resSvc;
+        private IServerConnection _conn;
 
         /// <summary>
         /// Creates a new instance of CompareResourceDialog
         /// </summary>
         /// <param name="resSvc">The resource service</param>
-        public CompareResourceDialog(IResourceService resSvc)
+        public CompareResourceDialog(IServerConnection conn)
             : this()
         {
-            _resSvc = resSvc;
+            _conn = conn;
         }
 
         /// <summary>
@@ -102,7 +102,7 @@
 
             if (bValid)
             {
-                var set = XmlCompareUtil.PrepareForComparison(_resSvc,
+                var set = XmlCompareUtil.PrepareForComparison(_conn.ResourceService,
                                                               this.Source,
                                                               this.Target);
 
@@ -122,7 +122,7 @@
 
         private void btnSource_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_resSvc, ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
@@ -141,7 +141,7 @@
 
             var resType = ResourceIdentifier.GetResourceTypeAsString(this.Source);
 
-            using (var picker = new ResourcePicker(_resSvc, resType, ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, resType, ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(ResourceIdentifier.GetParentFolder(this.Source));
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -56,7 +56,7 @@
             : this()
         {
             _ed = ed;
-            var list = _ed.FeatureService.GetSpatialContextInfo(_ed.EditedResourceID, false);
+            var list = _ed.CurrentConnection.FeatureService.GetSpatialContextInfo(_ed.EditedResourceID, false);
             foreach (var sc in list.SpatialContext)
             {
                 cmbName.Items.Add(sc.Name);

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -139,7 +139,7 @@
 
         private void btnFeatureSource_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
@@ -151,7 +151,7 @@
 
         private void btnCreateTarget_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourcePickerMode.OpenFolder))
+            using (var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenFolder))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -89,7 +89,7 @@
             if (!string.IsNullOrEmpty(resId))
             {
                 txtFeatureSource.Text = resId;
-                _secondaryClasses = _edSvc.FeatureService.GetClassNames(txtFeatureSource.Text, null);
+                _secondaryClasses = _edSvc.CurrentConnection.FeatureService.GetClassNames(txtFeatureSource.Text, null);
                 //Invalidate existing secondary class
                 txtSecondaryClass.Text = string.Empty;
                 _secondaryClass = null;
@@ -135,7 +135,7 @@
             //Init selected classes
             if (!string.IsNullOrEmpty(_rel.ResourceId))
             {
-                _secondaryClasses = _edSvc.FeatureService.GetClassNames(_rel.ResourceId, null);
+                _secondaryClasses = _edSvc.CurrentConnection.FeatureService.GetClassNames(_rel.ResourceId, null);
 
                 if (!string.IsNullOrEmpty(_rel.AttributeClass))
                 {
@@ -236,8 +236,9 @@
         {
             if (_primaryClass != null && _secondaryClass != null)
             {
-                var pc = _edSvc.FeatureService.GetClassDefinition(_primaryFeatureSource, _primaryClass);
-                var sc = _edSvc.FeatureService.GetClassDefinition(_rel.ResourceId, _secondaryClass);
+                var featSvc = _edSvc.CurrentConnection.FeatureService;
+                var pc = featSvc.GetClassDefinition(_primaryFeatureSource, _primaryClass);
+                var sc = featSvc.GetClassDefinition(_rel.ResourceId, _secondaryClass);
                 
                 var dlg = new SelectJoinKeyDialog(pc, sc);
                 if (dlg.ShowDialog() == DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -124,7 +124,7 @@
             trvSchema.Nodes.Clear();
 
             BusyWaitDialog.Run(Strings.FetchingSchemaNames, () => {
-                return _edSvc.FeatureService.GetSchemas(currentFsId);
+                return _edSvc.CurrentConnection.FeatureService.GetSchemas(currentFsId);
             }, (res, ex) => {
                 if (ex != null)
                 {
@@ -382,7 +382,7 @@
 
                 string schemaName = schTag.SchemaName;
                 BusyWaitDialog.Run(Strings.FetchingClassNames, () => {
-                    return _edSvc.FeatureService.GetClassNames(currentFsId, schemaName);
+                    return _edSvc.CurrentConnection.FeatureService.GetClassNames(currentFsId, schemaName);
                 }, (res, ex) => {
                     if (ex != null)
                     {
@@ -414,7 +414,7 @@
 
                 string classNameQualified = clsTag.QualifiedName;
                 BusyWaitDialog.Run(Strings.FetchingClassDefinition, () => {
-                    return _edSvc.FeatureService.GetClassDefinition(currentFsId, classNameQualified);
+                    return _edSvc.CurrentConnection.FeatureService.GetClassDefinition(currentFsId, classNameQualified);
                 }, (res, ex) => {
                     if (ex != null)
                     {

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/PreviewPane.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/PreviewPane.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/PreviewPane.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -53,7 +53,7 @@
             _fsId = fsId;
             _mode = mode;
             _cls = cls;
-            _featSvc = edSvc.FeatureService;
+            _featSvc = edSvc.CurrentConnection.FeatureService;
 
             IQueryControl ctrl = null;
             switch (_mode)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/SqlQueryCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/SqlQueryCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/SqlQueryCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -49,7 +49,7 @@
 
         public IReader ExecuteQuery()
         {
-            return _edSvc.FeatureService.ExecuteSqlQuery(_fsId, txtSql.Text);
+            return _edSvc.CurrentConnection.FeatureService.ExecuteSqlQuery(_fsId, txtSql.Text);
         }
 
         public Control Content

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -73,7 +73,7 @@
         /// <returns></returns>
         public IReader ExecuteQuery()
         {
-            return _edSvc.FeatureService.QueryFeatureSource(_fsId, _cls.QualifiedName, txtFilter.Text, GetProperties(), GetComputedColumns());
+            return _edSvc.CurrentConnection.FeatureService.QueryFeatureSource(_fsId, _cls.QualifiedName, txtFilter.Text, GetProperties(), GetComputedColumns());
         }
 
         private NameValueCollection GetComputedColumns()

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -72,7 +72,7 @@
 
         private void btnBrowseAlias_Click(object sender, EventArgs e)
         {
-            using (var picker = new UnmanagedFileBrowser(_service.ResourceService))
+            using (var picker = new UnmanagedFileBrowser(_service.CurrentConnection.ResourceService))
             {
                 picker.Extensions = GetUnmanagedFileExtensions();
                 picker.SelectFoldersOnly = false;
@@ -85,7 +85,7 @@
 
         private void btnBrowseAliasFolder_Click(object sender, EventArgs e)
         {
-            using (var picker = new UnmanagedFileBrowser(_service.ResourceService))
+            using (var picker = new UnmanagedFileBrowser(_service.CurrentConnection.ResourceService))
             {
                 picker.SelectFoldersOnly = true;
                 if (picker.ShowDialog() == DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -375,7 +375,7 @@
 
         private void browseAliasedFileToolStripMenuItem_Click(object sender, EventArgs e)
         {
-            using (var picker = new UnmanagedFileBrowser(_service.ResourceService))
+            using (var picker = new UnmanagedFileBrowser(_service.CurrentConnection.ResourceService))
             {
                 picker.AllowMultipleSelection = true;
                 if (picker.ShowDialog() == DialogResult.OK)
@@ -387,7 +387,7 @@
 
         private void browseAliasedFolderToolStripMenuItem_Click(object sender, EventArgs e)
         {
-            using (var picker = new UnmanagedFileBrowser(_service.ResourceService))
+            using (var picker = new UnmanagedFileBrowser(_service.CurrentConnection.ResourceService))
             {
                 picker.AllowMultipleSelection = false;
                 picker.SelectFoldersOnly = true;
@@ -400,7 +400,7 @@
                         folder = folder.Replace("%MG_DATA_PATH_ALIAS[", "[") //NOXLATE
                                        .Replace("]%", "]"); //NOXLATE
                     }
-                    var list = _service.ResourceService.EnumerateUnmanagedData(folder, string.Empty, false, UnmanagedDataTypes.Files);
+                    var list = _service.CurrentConnection.ResourceService.EnumerateUnmanagedData(folder, string.Empty, false, UnmanagedDataTypes.Files);
                     var extensions = new List<string>(new string[] { 
                         ".png", //NOXLATE
                         ".jpg", //NOXLATE

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/GdalProviderCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/GdalProviderCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/GdalProviderCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -60,7 +60,7 @@
                 _service = service;
                 _fs = (IFeatureSource)_service.GetEditedResource();
                 
-                var provInfo = _service.FeatureService.GetFeatureProvider("OSGeo.Gdal"); //NOXLATE
+                var provInfo = _service.CurrentConnection.FeatureService.GetFeatureProvider("OSGeo.Gdal"); //NOXLATE
                 foreach (var prop in provInfo.ConnectionProperties)
                 {
                     if (prop.Name == "ResamplingMethod") //NOXLATE

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -80,7 +80,7 @@
         {
             grdConnectionParameters.Rows.Clear();
             grdConnectionParameters.Columns.Clear();
-            var prov = _service.FeatureService.GetFeatureProvider(_fs.Provider);
+            var prov = _service.CurrentConnection.FeatureService.GetFeatureProvider(_fs.Provider);
 
             var colName = new DataGridViewColumn();
             colName.Name = "COL_NAME"; //NOXLATE
@@ -191,16 +191,17 @@
             var param = GetConnectionParameters();
 
             var cloneFs = (IFeatureSource)_fs.Clone();
-            _service.ResourceService.SaveResourceAs(cloneFs, "Session:" + _service.SessionID + "//" + Guid.NewGuid().ToString() + ".FeatureSource"); //NOXLATE
+            var resSvc = _service.CurrentConnection.ResourceService;
+            resSvc.SaveResourceAs(cloneFs, "Session:" + _service.SessionID + "//" + Guid.NewGuid().ToString() + ".FeatureSource"); //NOXLATE
             
             cloneFs.ClearConnectionProperties();
             foreach (var key in param.AllKeys)
             {
                 cloneFs.SetConnectionProperty(key, param[key]);
             }
-            _service.ResourceService.SaveResource(cloneFs);
+            resSvc.SaveResource(cloneFs);
 
-            string msg = _service.FeatureService.TestConnection(cloneFs.ResourceID);
+            string msg = _service.CurrentConnection.FeatureService.TestConnection(cloneFs.ResourceID);
 
             if (string.IsNullOrEmpty(msg))
                 msg = Strings.TestConnectionNoErrors;
@@ -228,7 +229,7 @@
                     }
                     else
                     {
-                        values.AddRange(_service.FeatureService.GetConnectionPropertyValues(txtProvider.Text, prop, GetPartialConnectionString()));
+                        values.AddRange(_service.CurrentConnection.FeatureService.GetConnectionPropertyValues(txtProvider.Text, prop, GetPartialConnectionString()));
                     }
                 }
             }
@@ -264,7 +265,7 @@
                 var p = cell.Tag as OSGeo.MapGuide.ObjectModels.Common.FeatureProviderRegistryFeatureProviderConnectionProperty;
                 if (p != null && p.Enumerable)
                 {
-                    var list = _service.FeatureService.EnumerateDataStores(txtProvider.Text, GetPartialConnectionString());
+                    var list = _service.CurrentConnection.FeatureService.EnumerateDataStores(txtProvider.Text, GetPartialConnectionString());
                     foreach(var ds in list.DataStore)
                     {
                         values.Add(ds.Name);
@@ -320,7 +321,7 @@
 
             var cell = grdConnectionParameters.SelectedCells[0];
 
-            using (var dlg = new UnmanagedFileBrowser(_service.ResourceService))
+            using (var dlg = new UnmanagedFileBrowser(_service.CurrentConnection.ResourceService))
             {
                 if (dlg.ShowDialog() == DialogResult.OK)
                 {
@@ -336,7 +337,7 @@
 
             var cell = grdConnectionParameters.SelectedCells[0];
 
-            using (var dlg = new UnmanagedFileBrowser(_service.ResourceService))
+            using (var dlg = new UnmanagedFileBrowser(_service.CurrentConnection.ResourceService))
             {
                 dlg.SelectFoldersOnly = true;
                 if (dlg.ShowDialog() == DialogResult.OK)
@@ -379,7 +380,7 @@
 
         private void lnkSetCredentials_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
         {
-            var prov = _service.FeatureService.GetFeatureProvider(_fs.Provider);
+            var prov = _service.CurrentConnection.FeatureService.GetFeatureProvider(_fs.Provider);
             var connProps = new List<string>();
             foreach (var p in prov.ConnectionProperties)
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/DSNCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/DSNCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/DSNCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -47,7 +47,7 @@
         {
             service.RegisterCustomNotifier(this);
             _fs = (IFeatureSource)service.GetEditedResource();
-            _dsnNames = service.FeatureService.GetConnectionPropertyValues("OSGeo.ODBC", "DataSourceName", string.Empty); //NOXLATE
+            _dsnNames = service.CurrentConnection.FeatureService.GetConnectionPropertyValues("OSGeo.ODBC", "DataSourceName", string.Empty); //NOXLATE
         }
 
         void OnConnectionChanged()

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/UnmanagedCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/UnmanagedCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/UnmanagedCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -43,7 +43,7 @@
         public override void Bind(IEditorService service)
         {
             service.RegisterCustomNotifier(this);
-            _resSvc = service.ResourceService;
+            _resSvc = service.CurrentConnection.ResourceService;
         }
 
         public Control Content

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -222,7 +222,7 @@
         {
             try
             {
-                var dstore = _service.FeatureService.EnumerateDataStores(this.Provider, GetPartialConnectionStringForDataStoreEnumeration());
+                var dstore = _service.CurrentConnection.FeatureService.EnumerateDataStores(this.Provider, GetPartialConnectionStringForDataStoreEnumeration());
                 var values = ConvertToArray(dstore);
                 string item = GenericItemSelectionDialog.SelectItem(Strings.TextSelectDataStore, Strings.TextSelectDataStore, values);
                 if (item != null)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -258,7 +258,7 @@
         {
             try
             {
-                _config = (WmsConfigurationDocument)_service.FeatureService.GetSchemaMapping("OSGeo.WMS", _fs.ConnectionString); //NOXLATE
+                _config = (WmsConfigurationDocument)_service.CurrentConnection.FeatureService.GetSchemaMapping("OSGeo.WMS", _fs.ConnectionString); //NOXLATE
                 string defaultScName = _config.GetDefaultSpatialContext(_fs);
                 _config.EnsureRasterProperties(defaultScName);
                 _config.EnsureConsistency();

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/MapCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/MapCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/MapCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -369,7 +369,7 @@
 
         private void btnBrowseMdf_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edsvc.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edsvc.CurrentConnection, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -179,7 +179,7 @@
 
         private void btnAddMap_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edsvc.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edsvc.CurrentConnection, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -42,30 +42,10 @@
         /// </summary>
         string PreviewLocale { get; set; }
         /// <summary>
-        /// Indicates if a specified custom command is supported and can be created
+        /// Gets the connection instance associated with this editor service
         /// </summary>
-        /// <param name="cmdType"></param>
-        /// <returns></returns>
-        bool SupportsCommand(CommandType cmdType);
+        IServerConnection CurrentConnection { get; }
         /// <summary>
-        /// Create a custom command
-        /// </summary>
-        /// <param name="cmdType"></param>
-        /// <returns></returns>
-        ICommand CreateCommand(CommandType cmdType);
-        /// <summary>
-        /// Gets the associated feature service
-        /// </summary>
-        IFeatureService FeatureService { get; }
-        /// <summary>
-        /// Gets the associated resource service
-        /// </summary>
-        IResourceService ResourceService { get; }
-        /// <summary>
-        /// Gets the associated drawing service
-        /// </summary>
-        IDrawingService DrawingService { get; }
-        /// <summary>
         /// Gets the session id
         /// </summary>
         string SessionID { get; }

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -29,6 +29,7 @@
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.MaestroAPI.Services;
 
 namespace Maestro.Editors.LayerDefinition.Drawing
 {
@@ -114,7 +115,8 @@
         private void PopulateSheets()
         {
             _sheets.Clear();
-            var sheets = _service.DrawingService.EnumerateDrawingSections(_dlayer.ResourceId);
+            var drawSvc = (IDrawingService)_service.CurrentConnection.GetService((int)ServiceType.Drawing);
+            var sheets = drawSvc.EnumerateDrawingSections(_dlayer.ResourceId);
             foreach (var sht in sheets.Section)
             {
                 _sheets.Add(sht);
@@ -134,7 +136,8 @@
         {
             chkListDwfLayers.Items.Clear();
 
-            var layers = _service.DrawingService.EnumerateDrawingLayers(_dlayer.ResourceId, _dlayer.Sheet);
+            var drawSvc = (IDrawingService)_service.CurrentConnection.GetService((int)ServiceType.Drawing);
+            var layers = drawSvc.EnumerateDrawingLayers(_dlayer.ResourceId, _dlayer.Sheet);
             if (string.IsNullOrEmpty(_dlayer.LayerFilter)) //All layers
             {
                 foreach (var lyr in layers)
@@ -203,7 +206,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_service.ResourceService,
+            using (var picker = new ResourcePicker(_service.CurrentConnection,
                                                    OSGeo.MapGuide.MaestroAPI.ResourceTypes.DrawingSource.ToString(), 
                                                    ResourcePickerMode.OpenResource))
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -44,10 +44,10 @@
             if (service.IsNew)
             {
                 //Let's try to auto-assign a feature class
-                string[] classNames = _edsvc.FeatureService.GetClassNames(_vl.ResourceId, null);
+                string[] classNames = _edsvc.CurrentConnection.FeatureService.GetClassNames(_vl.ResourceId, null);
                 if (classNames.Length == 1) //Only one class in this Feature Source
                 {
-                    var clsDef = _edsvc.FeatureService.GetClassDefinition(_vl.ResourceId, classNames[0]);
+                    var clsDef = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(_vl.ResourceId, classNames[0]);
                     if (!string.IsNullOrEmpty(clsDef.DefaultGeometryPropertyName)) //It has a default geometry
                     {
                         _vl.FeatureName = classNames[0];
@@ -85,12 +85,12 @@
             if (_vl == null || string.IsNullOrEmpty(_vl.FeatureName))
                 return;
 
-            if (_edsvc.ResourceService.ResourceExists(_vl.ResourceId))
+            if (_edsvc.CurrentConnection.ResourceService.ResourceExists(_vl.ResourceId))
             {
                 ClassDefinition cls = null;
                 try
                 {
-                    cls = _edsvc.FeatureService.GetClassDefinition(_vl.ResourceId, _vl.FeatureName);
+                    cls = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(_vl.ResourceId, _vl.FeatureName);
                 }
                 catch
                 {
@@ -122,7 +122,7 @@
             else
             {
                 MessageBox.Show(string.Format(Strings.PromptRepairBrokenFeatureSource, _vl.ResourceId));
-                using (var picker = new ResourcePicker(_edsvc.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+                using (var picker = new ResourcePicker(_edsvc.CurrentConnection, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
                 {
                     if (picker.ShowDialog() == DialogResult.OK)
                     {

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Raster/RasterLayerSettingsSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Raster/RasterLayerSettingsSectionCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Raster/RasterLayerSettingsSectionCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -86,7 +86,7 @@
         protected override void OnLoad(EventArgs e)
         {
             if (_cachedDesc == null)
-                _cachedDesc = _edsvc.FeatureService.DescribeFeatureSource(txtFeatureSource.Text);
+                _cachedDesc = _edsvc.CurrentConnection.FeatureService.DescribeFeatureSource(txtFeatureSource.Text);
 
             //Init cached schemas and selected class
             if (!string.IsNullOrEmpty(txtFeatureClass.Text))
@@ -105,7 +105,7 @@
 
         private void btnBrowseFeatureSource_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edsvc.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edsvc.CurrentConnection, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -219,7 +219,7 @@
         private IFeatureSource GetFeatureSource()
         {
             if (_cachedFs == null)
-                _cachedFs = (IFeatureSource)_edsvc.ResourceService.GetResource(txtFeatureSource.Text);
+                _cachedFs = (IFeatureSource)_edsvc.CurrentConnection.ResourceService.GetResource(txtFeatureSource.Text);
 
             return _cachedFs;
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/GridEditor/RuleGridView.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/GridEditor/RuleGridView.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/GridEditor/RuleGridView.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -724,7 +724,7 @@
             if (_layerClass == null) 
             {
                 IVectorLayerDefinition vl = (IVectorLayerDefinition)_editedLayer.SubLayer;
-                _layerClass = _edSvc.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
+                _layerClass = _edSvc.CurrentConnection.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
             }
             return _layerClass;
         }
@@ -742,7 +742,7 @@
             if (_providerName == null)
             {
                 IVectorLayerDefinition vl = (IVectorLayerDefinition)_editedLayer.SubLayer;
-                IFeatureSource fs = (IFeatureSource)_edSvc.ResourceService.GetResource(vl.ResourceId);
+                IFeatureSource fs = (IFeatureSource)_edSvc.CurrentConnection.ResourceService.GetResource(vl.ResourceId);
                 _providerName = fs.Provider;
             }
             return _providerName;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionListButtons.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionListButtons.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionListButtons.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -193,7 +193,7 @@
                     MessageBox.Show(Strings.NoFeatureClassAssigned);
                     return;
                 }
-                var cls = m_owner.Editor.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
+                var cls = m_owner.Editor.CurrentConnection.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
                 if (cls == null)
                 {
                     MessageBox.Show(string.Format(Strings.FeatureClassNotFound, vl.FeatureName));

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ExplodeThemeDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ExplodeThemeDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ExplodeThemeDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -87,7 +87,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_editor.ResourceService, ResourcePickerMode.OpenFolder))
+            using (var picker = new ResourcePicker(_editor.CurrentConnection, ResourcePickerMode.OpenFolder))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors/ReferenceCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors/ReferenceCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors/ReferenceCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -35,20 +35,20 @@
     [ToolboxItem(false)]
     internal partial class ReferenceCtrl : UserControl
     {
-        private IResourceService _resSvc;
+        private IEditorService _edSvc;
         private ISymbolInstanceReferenceLibrary _libRef;
 
-        public ReferenceCtrl(ISymbolInstanceReferenceLibrary libRef, IResourceService resSvc)
+        public ReferenceCtrl(ISymbolInstanceReferenceLibrary libRef, IEditorService edSvc)
         {
             InitializeComponent();
             _libRef = libRef;
-            _resSvc = resSvc;
+            _edSvc = edSvc;
             TextBoxBinder.BindText(txtResourceId, _libRef, "ResourceId");
         }
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_resSvc,
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection,
                                                    ResourceTypes.SymbolDefinition.ToString(), 
                                                    ResourcePickerMode.OpenResource))
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -248,7 +248,7 @@
 
         private void referenceToolStripMenuItem_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService, ResourceTypes.SymbolDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.SymbolDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -335,7 +335,7 @@
             ISymbolDefinitionBase sym = null;
             if (symRef.Reference.Type == SymbolInstanceType.Reference)
             {
-                sym = (ISymbolDefinitionBase)_edSvc.ResourceService.GetResource(((ISymbolInstanceReferenceLibrary)symRef.Reference).ResourceId);
+                sym = (ISymbolDefinitionBase)_edSvc.CurrentConnection.ResourceService.GetResource(((ISymbolInstanceReferenceLibrary)symRef.Reference).ResourceId);
             }
             else if (symRef.Reference.Type == SymbolInstanceType.Inline)
             {
@@ -409,7 +409,7 @@
         {
             var it = lstInstances.SelectedItems[0];
             ISymbolInstance symRef = (ISymbolInstance)it.Tag;
-            var c = CreateSymbolDefinitionEditor(symRef, _edSvc.ResourceService);
+            var c = CreateSymbolDefinitionEditor(symRef);
             c.Dock = DockStyle.Fill;
             using (var ed = new EditorTemplateForm())
             {
@@ -674,12 +674,12 @@
             btnPropertyInfo.Enabled = btnEditProperty.Enabled = btnDeleteProperty.Enabled = (grdOverrides.SelectedRows.Count == 1);
         }
 
-        private Control CreateSymbolDefinitionEditor(ISymbolInstance symRef, IResourceService resSvc)
+        private Control CreateSymbolDefinitionEditor(ISymbolInstance symRef)
         {
             Check.NotNull(symRef, "symRef"); //NOXLATE
             if (symRef.Reference.Type == SymbolInstanceType.Reference)
             {
-                return new ReferenceCtrl((ISymbolInstanceReferenceLibrary)symRef.Reference, resSvc);
+                return new ReferenceCtrl((ISymbolInstanceReferenceLibrary)symRef.Reference, _edSvc);
             }
             else
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/AreaFeatureStyleEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/AreaFeatureStyleEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/AreaFeatureStyleEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -64,7 +64,7 @@
             m_schema = schema;
 
             _factory = (ILayerElementFactory)editor.GetEditedResource();
-            var fs = (IFeatureSource)m_editor.ResourceService.GetResource(featureSource);
+            var fs = (IFeatureSource)m_editor.CurrentConnection.ResourceService.GetResource(featureSource);
 
             m_providername = fs.Provider;
             m_featureSource = featureSource;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/FontStyleEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/FontStyleEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/FontStyleEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -56,7 +56,7 @@
             m_editor = editor;
             m_schema = schema;
 
-            var fs = (IFeatureSource)editor.ResourceService.GetResource(featureSource);
+            var fs = (IFeatureSource)editor.CurrentConnection.ResourceService.GetResource(featureSource);
 
             _factory = (ILayerElementFactory)editor.GetEditedResource();
 

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/LineFeatureStyleEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/LineFeatureStyleEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/LineFeatureStyleEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -93,7 +93,7 @@
 
             _factory = (ILayerElementFactory)editor.GetEditedResource();
 
-            var fs = (IFeatureSource)editor.ResourceService.GetResource(featureSource);
+            var fs = (IFeatureSource)editor.CurrentConnection.ResourceService.GetResource(featureSource);
 
             m_providername = fs.Provider;
             m_featureSource = featureSource;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/PointFeatureStyleEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/PointFeatureStyleEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/PointFeatureStyleEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -138,7 +138,7 @@
             m_schema = schema;
 
             _factory = (ILayerElementFactory)editor.GetEditedResource();
-            var fs = (IFeatureSource)editor.ResourceService.GetResource(featureSource);
+            var fs = (IFeatureSource)editor.CurrentConnection.ResourceService.GetResource(featureSource);
 
             m_providername = fs.Provider;
             m_featureSource = featureSource;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Thematics/ThemeCreator.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Thematics/ThemeCreator.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Thematics/ThemeCreator.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -305,7 +305,7 @@
                             //Or it is FDO expression sugar to work around the fact there is no distinct
                             //flag in the SELECTAGGREGATES operation that's exposed over HTTP. Either
                             //case, try this method first.
-                            using (var rd = m_editor.FeatureService.AggregateQueryFeatureSource(
+                            using (var rd = m_editor.CurrentConnection.FeatureService.AggregateQueryFeatureSource(
                                                     fsId,
                                                     m_featureClass.QualifiedName,
                                                     filter,
@@ -330,7 +330,7 @@
                         catch
                         {
 
-                            using (var rd = m_editor.FeatureService.QueryFeatureSource(fsId, m_featureClass.QualifiedName, filter, new string[] { col.Name }))
+                            using (var rd = m_editor.CurrentConnection.FeatureService.QueryFeatureSource(fsId, m_featureClass.QualifiedName, filter, new string[] { col.Name }))
                             {
                                 while (rd.ReadNext() && m_values.Count < MAX_NUMERIC_THEME_RULES) //No more than 100.000 records in memory
                                 {
@@ -1066,7 +1066,7 @@
                 if (bSetFill)
                     break;
 
-                var symRef = GetSymbolFromReference(m_editor.ResourceService, symInst.Reference);
+                var symRef = GetSymbolFromReference(m_editor.CurrentConnection.ResourceService, symInst.Reference);
                 var simpleSym = symRef as ISimpleSymbolDefinition;
                 if (simpleSym == null)
                     throw new NotSupportedException(Strings.CannotCreateThemeFromCompoundSymbolInstance);
@@ -1215,7 +1215,7 @@
                 if (source.HasValue)
                     break;
 
-                var symRef = GetSymbolFromReference(m_editor.ResourceService, symInst.Reference);
+                var symRef = GetSymbolFromReference(m_editor.CurrentConnection.ResourceService, symInst.Reference);
                 var simpleSym = symRef as ISimpleSymbolDefinition;
                 if (simpleSym == null)
                     throw new NotSupportedException(Strings.CannotCreateThemeFromCompoundSymbolInstance);
@@ -1298,7 +1298,7 @@
                     if (source.HasValue)
                         break;
 
-                    var symRef = GetSymbolFromReference(m_editor.ResourceService, symInst.Reference);
+                    var symRef = GetSymbolFromReference(m_editor.CurrentConnection.ResourceService, symInst.Reference);
                     var simpleSym = symRef as ISimpleSymbolDefinition;
                     if (simpleSym == null)
                         throw new NotSupportedException(Strings.CannotCreateThemeFromCompoundSymbolInstance);
@@ -1587,7 +1587,7 @@
 
         private void btnBrowseFeatureSource_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(m_editor.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(m_editor.CurrentConnection, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
@@ -1608,7 +1608,7 @@
         {
             if (!string.IsNullOrEmpty(txtFeatureSource.Text))
             {
-                var names = m_editor.FeatureService.GetClassNames(txtFeatureSource.Text, null);
+                var names = m_editor.CurrentConnection.FeatureService.GetClassNames(txtFeatureSource.Text, null);
                 if (names.Length > 0)
                 {
                     cmbFeatureClass.DataSource = names;
@@ -1630,7 +1630,7 @@
             if (cmbFeatureClass.SelectedItem != null)
             {
                 var className = cmbFeatureClass.SelectedItem.ToString();
-                var clsDef = m_editor.FeatureService.GetClassDefinition(txtFeatureSource.Text, className);
+                var clsDef = m_editor.CurrentConnection.FeatureService.GetClassDefinition(txtFeatureSource.Text, className);
 
                 var keyPropNames = new List<string>();
                 var valuePropNames = new List<string>();
@@ -1667,7 +1667,7 @@
             BusyWaitDialog.Run(Strings.ComputingThemeParameters, 
             () => { //Worker method
                 List<LookupPair> res = new List<LookupPair>();
-                using (var reader = m_editor.FeatureService.QueryFeatureSource(fsId, className, filter, new string[] { key, value }))
+                using (var reader = m_editor.CurrentConnection.FeatureService.QueryFeatureSource(fsId, className, filter, new string[] { key, value }))
                 {
                     while(reader.ReadNext())
                     {
@@ -1735,8 +1735,9 @@
         {
             string fsId = txtFeatureSource.Text;
             string className = cmbFeatureClass.SelectedItem.ToString();
-            IFeatureSource fs = (IFeatureSource)m_editor.ResourceService.GetResource(fsId);
-            ClassDefinition clsDef = m_editor.FeatureService.GetClassDefinition(fsId, className);
+            var conn = m_editor.CurrentConnection;
+            IFeatureSource fs = (IFeatureSource)conn.ResourceService.GetResource(fsId);
+            ClassDefinition clsDef = conn.FeatureService.GetClassDefinition(fsId, className);
             string expr = m_editor.EditExpression(txtFilter.Text, clsDef, fs.Provider, fsId, false);
             if (expr != null)
                 txtFilter.Text = expr;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -70,7 +70,7 @@
                 if (string.IsNullOrEmpty(txtFeatureClass.Text) || string.IsNullOrEmpty(txtGeometry.Text))
                 {
                     TryFillUIFromNewFeatureSource(_vl.ResourceId);
-                    if (!_edsvc.ResourceService.ResourceExists(_vl.ResourceId))
+                    if (!_edsvc.CurrentConnection.ResourceService.ResourceExists(_vl.ResourceId))
                     {
                         errorProvider.SetError(txtFeatureSource, Strings.LayerEditorFeatureSourceNotFound);
                         MessageBox.Show(Strings.LayerEditorHasErrors);
@@ -84,7 +84,7 @@
                     string geometry = txtGeometry.Text;
                     BusyWaitDialog.Run(null, () => {
                         var errors = new List<string>();
-                        if (!_edsvc.ResourceService.ResourceExists(_vl.ResourceId))
+                        if (!_edsvc.CurrentConnection.ResourceService.ResourceExists(_vl.ResourceId))
                         {
                             errors.Add(Strings.LayerEditorFeatureSourceNotFound);
                         }
@@ -93,7 +93,7 @@
                             ClassDefinition clsDef = null;
                             try
                             {
-                                clsDef = _edsvc.FeatureService.GetClassDefinition(_vl.ResourceId, featureClass);
+                                clsDef = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(_vl.ResourceId, featureClass);
                             }
                             catch
                             {
@@ -187,7 +187,7 @@
                 ClassDefinition cls = null;
                 try
                 {
-                    cls = _edsvc.FeatureService.GetClassDefinition(txtFeatureSource.Text, txtFeatureClass.Text);
+                    cls = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(txtFeatureSource.Text, txtFeatureClass.Text);
                 }
                 catch { }
                 if (cls != null)
@@ -223,7 +223,7 @@
             if (!string.IsNullOrEmpty(txtFeatureClass.Text))
             {
                 //This feature source must have at least one class definition with a geometry property
-                ClassDefinition clsDef = _edsvc.FeatureService.GetClassDefinition(txtFeatureSource.Text, txtFeatureClass.Text);
+                ClassDefinition clsDef = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(txtFeatureSource.Text, txtFeatureClass.Text);
                 if (clsDef == null)
                 {
                     MessageBox.Show(string.Format(Strings.InvalidFeatureSourceNoClasses, txtFeatureSource.Text));
@@ -269,7 +269,7 @@
 
         private void btnBrowseFeatureSource_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edsvc.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edsvc.CurrentConnection, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -294,7 +294,7 @@
                 txtGeometry.Text = string.Empty;
 
                 //But if this is a single-class FS, let's try to auto-fill this stuff
-                string[] names = _edsvc.FeatureService.GetClassNames(fsId, null);
+                string[] names = _edsvc.CurrentConnection.FeatureService.GetClassNames(fsId, null);
                 if (names.Length == 1)
                     txtFeatureClass.Text = names[0];
 
@@ -302,7 +302,7 @@
                 _vl.ResourceId = fsId;
                 if (names.Length == 1)
                 {
-                    ClassDefinition clsDef = _edsvc.FeatureService.GetClassDefinition(fsId, names[0]);
+                    ClassDefinition clsDef = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(fsId, names[0]);
                     SetFeatureClass(clsDef);
                 }
             }
@@ -331,7 +331,7 @@
         private IFeatureSource GetFeatureSource()
         {
             if (_cachedFs == null)
-                _cachedFs = (IFeatureSource)_edsvc.ResourceService.GetResource(txtFeatureSource.Text);
+                _cachedFs = (IFeatureSource)_edsvc.CurrentConnection.ResourceService.GetResource(txtFeatureSource.Text);
 
             return _cachedFs;
         }
@@ -380,11 +380,12 @@
 
         private void btnBrowseSchema_Click(object sender, EventArgs e)
         {
-            var list = _edsvc.FeatureService.GetClassNames(txtFeatureSource.Text, null);
+            var featSvc = _edsvc.CurrentConnection.FeatureService;
+            var list = featSvc.GetClassNames(txtFeatureSource.Text, null);
             var item = GenericItemSelectionDialog.SelectItem(null, null, list);
             if (item != null)
             {
-                var cls = _edsvc.FeatureService.GetClassDefinition(txtFeatureSource.Text, item);
+                var cls = featSvc.GetClassDefinition(txtFeatureSource.Text, item);
                 SetFeatureClass(cls);
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/VectorLayerEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/VectorLayerEditorCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/VectorLayerEditorCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -94,7 +94,7 @@
 
         internal string EditExpression(string expr, bool attachStylizationFunctions)
         {
-            var fs = (IFeatureSource)_edsvc.ResourceService.GetResource(_vl.ResourceId);
+            var fs = (IFeatureSource)_edsvc.CurrentConnection.ResourceService.GetResource(_vl.ResourceId);
 
             return _edsvc.EditExpression(expr, fs.GetClass(_vl.FeatureName), fs.Provider, _vl.ResourceId, attachStylizationFunctions);
         }
@@ -118,7 +118,7 @@
 
         internal string GetFdoProvider()
         {
-            var fs = (IFeatureSource)_edsvc.ResourceService.GetResource(_vl.ResourceId);
+            var fs = (IFeatureSource)_edsvc.CurrentConnection.ResourceService.GetResource(_vl.ResourceId);
             return fs.Provider;
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -42,14 +42,12 @@
         }
 
         public event EventHandler LayerChanged;
-        private IResourceService _resSvc;
         private IEditorService _edSvc;
 
-        public LayerPropertiesCtrl(IMapLayer layer, IResourceService resSvc, IEditorService edSvc)
+        public LayerPropertiesCtrl(IMapLayer layer, IEditorService edSvc)
             : this()
         {
             layer.PropertyChanged += WeakEventHandler.Wrap<PropertyChangedEventHandler>(OnLayerChanged, (eh) => layer.PropertyChanged -= eh);
-            _resSvc = resSvc;
             _edSvc = edSvc;
 
             TextBoxBinder.BindText(txtResourceId, layer, "ResourceId");
@@ -57,11 +55,10 @@
             TextBoxBinder.BindText(txtLegendLabel, layer, "LegendLabel");
         }
 
-        public LayerPropertiesCtrl(IBaseMapLayer layer, IResourceService resSvc, IEditorService edSvc)
+        public LayerPropertiesCtrl(IBaseMapLayer layer, IEditorService edSvc)
             : this()
         {
             layer.PropertyChanged += WeakEventHandler.Wrap<PropertyChangedEventHandler>(OnLayerChanged, (eh) => layer.PropertyChanged -= eh);
-            _resSvc = resSvc;
             _edSvc = edSvc;
 
             TextBoxBinder.BindText(txtResourceId, layer, "ResourceId");
@@ -78,7 +75,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_resSvc, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -116,7 +116,7 @@
             _shadowCopy = (IMapDefinition)service.GetEditedResource();
             _mapSvc = (IMappingService)_shadowCopy.CurrentConnection.GetService((int)ServiceType.Mapping);
             _rtMap = _mapSvc.CreateMap(_shadowCopy);
-            repoView.Init(service.ResourceService, new string[] {
+            repoView.Init(service.CurrentConnection.ResourceService, new string[] {
                 ResourceTypes.LayerDefinition.ToString(),
                 ResourceTypes.FeatureSource.ToString()
             }, new string[] {
@@ -178,7 +178,7 @@
             var item = repoView.SelectedItem;
             if (item != null && item.ResourceType == ResourceTypes.LayerDefinition.ToString())
             {
-                var layer = _mapSvc.CreateMapLayer(_rtMap, ((ILayerDefinition)this.EditorService.ResourceService.GetResource(item.ResourceId)));
+                var layer = _mapSvc.CreateMapLayer(_rtMap, ((ILayerDefinition)this.EditorService.CurrentConnection.ResourceService.GetResource(item.ResourceId)));
                 layer.Name = LiveMapEditorLegend.GenerateUniqueName(ResourceIdentifier.GetName(item.ResourceId), _rtMap.Layers);
                 layer.LegendLabel = ResourceIdentifier.GetName(item.ResourceId);
                 layer.Visible = true;

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -111,7 +111,7 @@
             var map = this.Viewer.GetMap();
             if (map != null)
             {
-                using (var picker = new ResourcePicker(map.CurrentConnection.ResourceService, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
+                using (var picker = new ResourcePicker(map.CurrentConnection, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
                 {
                     if (picker.ShowDialog() == DialogResult.OK)
                     {
@@ -139,7 +139,7 @@
                     var grp = node.Tag as GroupNodeMetadata;
                     if (grp != null)
                     {
-                        using (var picker = new ResourcePicker(map.CurrentConnection.ResourceService, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
+                        using (var picker = new ResourcePicker(map.CurrentConnection, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
                         {
                             if (picker.ShowDialog() == DialogResult.OK)
                             {

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -462,7 +462,7 @@
 
             commCtrl.SelectedObject = new BaseLayerItemDesigner(layer);
 
-            var item = new LayerPropertiesCtrl(layer.Tag, _edSvc.ResourceService, _edSvc);
+            var item = new LayerPropertiesCtrl(layer.Tag, _edSvc);
             //item.LayerChanged += (s, evt) => { OnResourceChanged(); };
             item.LayerChanged += WeakEventHandler.Wrap((s, evt) => OnResourceChanged(), (eh) => item.LayerChanged -= eh);
             item.Dock = DockStyle.Top;
@@ -484,7 +484,7 @@
 
             commCtrl.SelectedObject = new LayerItemDesigner(layer);
 
-            var item = new LayerPropertiesCtrl(layer.Tag, _edSvc.ResourceService, _edSvc);
+            var item = new LayerPropertiesCtrl(layer.Tag, _edSvc);
             //item.LayerChanged += (s, evt) => { OnResourceChanged(); };
             item.LayerChanged += WeakEventHandler.Wrap((s, evt) => OnResourceChanged(), (eh) => item.LayerChanged -= eh);
             item.Dock = DockStyle.Top;
@@ -656,7 +656,7 @@
 
         private void btnGRPAddLayer_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -786,7 +786,7 @@
 
         private void btnDLAddLayer_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -1113,7 +1113,7 @@
 
         private void btnAddBaseLayer_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.LayerDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/Migration/CopyMoveToServerDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Migration/CopyMoveToServerDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Migration/CopyMoveToServerDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -71,7 +71,7 @@
 
         private void btnAddResource_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_source.ResourceService, ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_source, ResourcePickerMode.OpenResource))
             {
                 if (!string.IsNullOrEmpty(_lastSourceFolder))
                     picker.SetStartingPoint(_lastSourceFolder);
@@ -90,7 +90,7 @@
 
         private void btnAddFolder_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_source.ResourceService, ResourcePickerMode.OpenFolder))
+            using (var picker = new ResourcePicker(_source, ResourcePickerMode.OpenFolder))
             {
                 if (!string.IsNullOrEmpty(_lastSourceFolder))
                     picker.SetStartingPoint(_lastSourceFolder);
@@ -194,7 +194,7 @@
 
         private void btnBrowseTarget_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_target.ResourceService, ResourcePickerMode.OpenFolder))
+            using (var picker = new ResourcePicker(_target, ResourcePickerMode.OpenFolder))
             {
                 if (!string.IsNullOrEmpty(_lastTargetFolder))
                     picker.SetStartingPoint(_lastTargetFolder);

Modified: trunk/Tools/Maestro/Maestro.Editors/Migration/MigrateDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Migration/MigrateDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Migration/MigrateDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -123,7 +123,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_source.ResourceService, ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_source, ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -91,9 +91,10 @@
                 //Save the current resource to another session copy
                 string resId = "Session:" + edSvc.SessionID + "//" + res.ResourceType.ToString() + "Preview" + Guid.NewGuid() + "." + res.ResourceType.ToString(); //NOXLATE
 
-                edSvc.ResourceService.SaveResourceAs(res, resId);
-                edSvc.ResourceService.CopyResource(res.ResourceID, resId, true);
-                var previewCopy = edSvc.ResourceService.GetResource(resId);
+                var resSvc = edSvc.CurrentConnection.ResourceService;
+                resSvc.SaveResourceAs(res, resId);
+                resSvc.CopyResource(res.ResourceID, resId, true);
+                var previewCopy = resSvc.GetResource(resId);
 
                 if (previewCopy.ResourceType == ResourceTypes.SymbolDefinition.ToString() && conn.SiteVersion >= new Version(2, 0))
                 {   

Modified: trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -117,7 +117,7 @@
 
         private void btnBrowseSymbolLibrary_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/ResourceEditorServiceBase.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/ResourceEditorServiceBase.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/ResourceEditorServiceBase.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -95,7 +95,7 @@
         public string EditExpression(string currentExpr, ClassDefinition classDef, string providerName, string featureSourceId, bool attachStylizationFunctions)
         {
             var ed = FdoExpressionEditorFactory.Create(); new ExpressionEditor();
-            var caps = this.FeatureService.GetProviderCapabilities(providerName);
+            var caps = _conn.FeatureService.GetProviderCapabilities(providerName);
             ed.Initialize(this, caps, classDef, featureSourceId, attachStylizationFunctions);
             ed.Expression = currentExpr;
             if (ed.ShowDialog() == System.Windows.Forms.DialogResult.OK)
@@ -105,6 +105,11 @@
             return null;
         }
 
+        public IServerConnection CurrentConnection
+        {
+            get { return _conn; }
+        }
+
         /// <summary>
         /// Initiates the editing process. The resource to be edited is copied to the session repository and
         /// a deserialized version is returned from this copy. Subsequent calls will return the same reference
@@ -191,7 +196,7 @@
         /// <returns></returns>
         public string SelectAnyResource()
         {
-            var picker = new ResourcePicker(_conn.ResourceService, ResourcePickerMode.OpenResource);
+            var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenResource);
             if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 return picker.ResourceID;
@@ -206,7 +211,7 @@
         /// <returns></returns>
         public string SelectResource(string resType)
         {
-            var picker = new ResourcePicker(_conn.ResourceService, resType, ResourcePickerMode.OpenResource);
+            var picker = new ResourcePicker(_conn, resType, ResourcePickerMode.OpenResource);
             if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 return picker.ResourceID;
@@ -220,7 +225,7 @@
         /// <returns></returns>
         public string SelectFolder()
         {
-            var picker = new ResourcePicker(_conn.ResourceService, ResourcePickerMode.OpenFolder);
+            var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenFolder);
             if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 return picker.ResourceID;
@@ -347,22 +352,6 @@
         public event System.ComponentModel.CancelEventHandler BeforeSave;
 
         /// <summary>
-        /// Gets the associated feature service
-        /// </summary>
-        public IFeatureService FeatureService
-        {
-            get { return _conn.FeatureService; }
-        }
-
-        /// <summary>
-        /// Gets the associated resource service
-        /// </summary>
-        public IResourceService ResourceService
-        {
-            get { return _conn.ResourceService; }
-        }
-
-        /// <summary>
         /// Invokes a prompt to select the coordinate system
         /// </summary>
         /// <returns></returns>
@@ -376,16 +365,7 @@
             return string.Empty;
         }
 
-
         /// <summary>
-        /// Gets the associated drawing service
-        /// </summary>
-        public IDrawingService DrawingService
-        {
-            get { return (IDrawingService)_conn.GetService((int)ServiceType.Drawing); }
-        }
-
-        /// <summary>
         /// Forces the the <see cref="DirtyStateChanged"/> event. Normally the databinding
         /// system should auto-flag dirty state, only call this if you don't utilise this
         /// databinding system.
@@ -405,26 +385,6 @@
         }
 
         /// <summary>
-        /// Indicates if a specified custom command is supported and can be created
-        /// </summary>
-        /// <param name="cmdType"></param>
-        /// <returns></returns>
-        public bool SupportsCommand(OSGeo.MapGuide.MaestroAPI.Commands.CommandType cmdType)
-        {
-            return Array.IndexOf(_conn.Capabilities.SupportedCommands, (int)cmdType) >= 0;
-        }
-
-        /// <summary>
-        /// Create a custom command
-        /// </summary>
-        /// <param name="cmdType"></param>
-        /// <returns></returns>
-        public OSGeo.MapGuide.MaestroAPI.Commands.ICommand CreateCommand(OSGeo.MapGuide.MaestroAPI.Commands.CommandType cmdType)
-        {
-            return _conn.CreateCommand((int)cmdType);
-        }
-
-        /// <summary>
         /// Raises a request to refresh the Site Explorer
         /// </summary>
         public abstract void RequestRefresh();
@@ -461,7 +421,7 @@
             {
                 using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
                 {
-                    this.ResourceService.SetResourceXmlData(_editCopy.ResourceID, ms);
+                    _conn.ResourceService.SetResourceXmlData(_editCopy.ResourceID, ms);
                 }
             }
             catch (Exception ex)

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/CompoundSymbolDefinitionEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/CompoundSymbolDefinitionEditorCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/CompoundSymbolDefinitionEditorCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -127,7 +127,7 @@
 
         private void symbolReferenceToolStripMenuItem_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService,
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection,
                                                    ResourceTypes.SymbolDefinition.ToString(),
                                                    ResourcePickerMode.OpenResource))
             {
@@ -168,7 +168,7 @@
                     }
                     else if (symRef.Type == SimpleSymbolReferenceType.Library)
                     {
-                        var ctrl = new SimpleSymbolReferenceCtrl(_edSvc.ResourceService, (ISimpleSymbolLibraryReference)symRef);
+                        var ctrl = new SimpleSymbolReferenceCtrl(_edSvc, (ISimpleSymbolLibraryReference)symRef);
                         ctrl.Dock = DockStyle.Fill;
                         splitContainer1.Panel2.Controls.Add(ctrl);
                     }

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/ExtractSymbolLibraryDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/ExtractSymbolLibraryDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/ExtractSymbolLibraryDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -80,7 +80,7 @@
 
         private void btnSource_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, ResourceTypes.SymbolLibrary.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -141,7 +141,7 @@
 
         private void btnTarget_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourcePickerMode.OpenFolder))
+            using (var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenFolder))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -42,17 +42,17 @@
         private IImageReference _imageRef;
         private IInlineImage _imageInline;
         private EditorBindableCollapsiblePanel _ed;
-        private IResourceService _resSvc;
+        private IServerConnection _conn;
 
         private bool _init = false;
 
-        public ImageDialog(EditorBindableCollapsiblePanel parent, IResourceService resSvc, ISimpleSymbolDefinition ssd, IImageGraphic image)
+        public ImageDialog(EditorBindableCollapsiblePanel parent, IServerConnection conn, ISimpleSymbolDefinition ssd, IImageGraphic image)
         {
             InitializeComponent();
             _ed = parent;
             _ssd = ssd;
             _image = image;
-            _resSvc = resSvc;
+            _conn = conn;
             try
             {
                 _init = true;
@@ -204,7 +204,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_resSvc, ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -220,13 +220,13 @@
             if (string.IsNullOrEmpty(resourceId))
                 resourceId = _ssd.ResourceID;
 
-            if (!_resSvc.ResourceExists(resourceId))
+            if (!_conn.ResourceService.ResourceExists(resourceId))
             {
                 MessageBox.Show(Strings.ResourceDoesntExist);
                 return;
             }
 
-            var resData = _resSvc.EnumerateResourceData(resourceId);
+            var resData = _conn.ResourceService.EnumerateResourceData(resourceId);
             var items = new List<string>();
             foreach (var rd in resData.ResourceData)
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SimpleSymbolReferenceCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SimpleSymbolReferenceCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SimpleSymbolReferenceCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -35,15 +35,15 @@
     [ToolboxItem(false)]
     internal partial class SimpleSymbolReferenceCtrl : UserControl
     {
-        private IResourceService _resSvc;
+        private IEditorService _edSvc;
         private IResourceIdReference _symRef;
 
         private bool _init = false;
 
-        public SimpleSymbolReferenceCtrl(IResourceService resSvc, IResourceIdReference symRef)
+        public SimpleSymbolReferenceCtrl(IEditorService edSvc, IResourceIdReference symRef)
         {
             InitializeComponent();
-            _resSvc = resSvc;
+            _edSvc = edSvc;
             _symRef = symRef;
 
             try
@@ -59,7 +59,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_resSvc,
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection,
                                                    ResourceTypes.SymbolDefinition.ToString(),
                                                    ResourcePickerMode.OpenResource))
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -39,31 +39,11 @@
             this.PreviewLocale = "en"; //NOXLATE
         }
 
-        public bool SupportsCommand(CommandType cmdType)
+        public IServerConnection CurrentConnection
         {
-            return _inner.SupportsCommand(cmdType);
+            get { return _inner.CurrentConnection; }
         }
 
-        public ICommand CreateCommand(CommandType cmdType)
-        {
-            return _inner.CreateCommand(cmdType);
-        }
-
-        public IFeatureService FeatureService
-        {
-            get { return _inner.FeatureService; }
-        }
-
-        public IResourceService ResourceService
-        {
-            get { return _inner.ResourceService; }
-        }
-
-        public IDrawingService DrawingService
-        {
-            get { return _inner.DrawingService; }
-        }
-
         public string SessionID
         {
             get { return _inner.SessionID; }

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -100,7 +100,7 @@
             var img = _sym.CreateImageGraphics();
             AddGraphicsItem(img);
             _sym.AddGraphics(img);
-            new ImageDialog(this, _sym.CurrentConnection.ResourceService, _sym, img).ShowDialog();
+            new ImageDialog(this, _sym.CurrentConnection, _sym, img).ShowDialog();
         }
 
         private void lstGraphics_SelectedIndexChanged(object sender, EventArgs e)
@@ -129,7 +129,7 @@
                 }
                 else if (img != null)
                 {
-                    new ImageDialog(this, _sym.CurrentConnection.ResourceService, _sym, img).ShowDialog();
+                    new ImageDialog(this, _sym.CurrentConnection, _sym, img).ShowDialog();
                 }
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -58,12 +58,12 @@
 
         private void btnAdd_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService, ResourceTypes.WatermarkDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.WatermarkDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
                     LastSelectedFolder.FolderId = picker.SelectedFolder;
-                    var wdf = (IWatermarkDefinition)_edSvc.ResourceService.GetResource(picker.ResourceID);
+                    var wdf = (IWatermarkDefinition)_edSvc.CurrentConnection.ResourceService.GetResource(picker.ResourceID);
                     //var wm = wdf.CreateInstance();
                     var wm = _watermarks.AddWatermark(wdf);
                     var diag = new WatermarkInstanceEditorDialog(_edSvc, wm);

Modified: trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkContentCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkContentCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkContentCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -130,7 +130,7 @@
 
         private void btnEditImage_Click(object sender, EventArgs e)
         {
-            var diag = new ImageDialog(this, _edSvc.ResourceService, _sym, _image);
+            var diag = new ImageDialog(this, _edSvc.CurrentConnection, _sym, _image);
             diag.ShowDialog(this);
             OnResourceChanged();
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -126,7 +126,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService, ResourceTypes.WatermarkDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.WatermarkDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/InvokeURLCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/InvokeURLCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/InvokeURLCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -114,7 +114,7 @@
                 return;
             }
 
-            var mdf = (IMapDefinition)_edsvc.ResourceService.GetResource(wl.Map.ResourceId);
+            var mdf = (IMapDefinition)_edsvc.CurrentConnection.ResourceService.GetResource(wl.Map.ResourceId);
             List<string> layers = new List<string>();
             foreach (var lyr in mdf.MapLayer)
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/SearchCmdCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/SearchCmdCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/WebLayout/Commands/SearchCmdCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -153,7 +153,7 @@
 
         private void LoadLayers()
         {
-            var map = (IMapDefinition)_edsvc.ResourceService.GetResource(_wl.Map.ResourceId);
+            var map = (IMapDefinition)_edsvc.CurrentConnection.ResourceService.GetResource(_wl.Map.ResourceId);
 
             _layers = new List<IMapLayer>(map.MapLayer);
         }
@@ -170,10 +170,11 @@
         {
             if (txtLayer.Tag != null)
             {
-                var ldf = (ILayerDefinition)_edsvc.ResourceService.GetResource(txtLayer.Tag.ToString());
+                var resSvc = _edsvc.CurrentConnection.ResourceService;
+                var ldf = (ILayerDefinition)resSvc.GetResource(txtLayer.Tag.ToString());
                 var vl = (IVectorLayerDefinition)ldf.SubLayer;
 
-                var fs = (IFeatureSource)_edsvc.ResourceService.GetResource(vl.ResourceId);
+                var fs = (IFeatureSource)resSvc.GetResource(vl.ResourceId);
 
                 string expr = _edsvc.EditExpression(txtFilter.Text, _cls, fs.Provider, vl.ResourceId, false);
                 if (expr != null)
@@ -193,10 +194,11 @@
             {
                 _columns.Clear();
 
-                var ldf = (ILayerDefinition)_edsvc.ResourceService.GetResource(txtLayer.Tag.ToString());
+                var conn = _edsvc.CurrentConnection;
+                var ldf = (ILayerDefinition)conn.ResourceService.GetResource(txtLayer.Tag.ToString());
                 var vl = (IVectorLayerDefinition)ldf.SubLayer;
 
-                _cls = _edsvc.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
+                _cls = conn.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
 
                 COL_PROPERTY.DisplayMember = "Name";
                 COL_PROPERTY.DataSource = _cls.Properties;

Modified: trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -228,7 +228,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edsvc.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edsvc.CurrentConnection, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -201,7 +201,7 @@
         {
             ClearExistingEditor();
 
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_conn, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
@@ -229,7 +229,7 @@
 
         private void DoSaveAs()
         {
-            using (var picker = new ResourcePicker(_conn.ResourceService, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.SaveResource))
+            using (var picker = new ResourcePicker(_conn, ResourceTypes.MapDefinition.ToString(), ResourcePickerMode.SaveResource))
             {
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -169,13 +169,13 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                if (rt != ResourceTypes.ApplicationDefinition && rt != ResourceTypes.SymbolDefinition)
-                    Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
-                else
-                    Assert.IsFalse(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.ApplicationDefinition.ToString()), ResourceTypes.ApplicationDefinition.ToString());
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.SymbolDefinition.ToString()), ResourceTypes.SymbolDefinition.ToString());
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.WatermarkDefinition.ToString()), ResourceTypes.WatermarkDefinition.ToString());
         }
 
         [Test]
@@ -306,13 +306,13 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                if (rt != ResourceTypes.ApplicationDefinition && rt != ResourceTypes.SymbolDefinition)
-                    Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
-                else
-                    Assert.IsFalse(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.ApplicationDefinition.ToString()), ResourceTypes.ApplicationDefinition.ToString());
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.SymbolDefinition.ToString()), ResourceTypes.SymbolDefinition.ToString());
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.WatermarkDefinition.ToString()), ResourceTypes.WatermarkDefinition.ToString());
         }
 
         [Test]
@@ -436,13 +436,12 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                if (rt != ResourceTypes.ApplicationDefinition)
-                    Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
-                else
-                    Assert.IsFalse(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.ApplicationDefinition.ToString()), ResourceTypes.ApplicationDefinition.ToString());
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.WatermarkDefinition.ToString()), ResourceTypes.WatermarkDefinition.ToString());
         }
 
         [Test]
@@ -559,10 +558,11 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.WatermarkDefinition.ToString()), ResourceTypes.WatermarkDefinition.ToString());
         }
 
         [Test]
@@ -679,10 +679,11 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.WatermarkDefinition.ToString()), ResourceTypes.WatermarkDefinition.ToString());
         }
 
         [Test]
@@ -799,10 +800,11 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
+            Assert.IsFalse(caps.IsSupportedResourceType(ResourceTypes.WatermarkDefinition.ToString()), ResourceTypes.WatermarkDefinition.ToString());
         }
 
         [Test]
@@ -925,9 +927,9 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
         }
 
@@ -1051,9 +1053,9 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
         }
 
@@ -1177,9 +1179,9 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
         }
 
@@ -1303,9 +1305,9 @@
                 }
             }
 
-            foreach (ResourceTypes rt in Enum.GetValues(typeof(ResourceTypes)))
+            foreach (string rt in caps.SupportedResourceTypes)
             {
-                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt.ToString());
+                Assert.IsTrue(caps.IsSupportedResourceType(rt), rt);
             }
         }
     }

Modified: trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs
===================================================================
--- trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -50,7 +50,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            using (var picker = new ResourcePicker(_edSvc.ResourceService, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
+            using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)
                 {
@@ -73,8 +73,9 @@
 
         private void InitPreview()
         {
-            _fs = (IFeatureSource)_edSvc.ResourceService.GetResource(this.FeatureSourceID);
-            var caps = _edSvc.FeatureService.GetProviderCapabilities(_fs.Provider);
+            var conn = _edSvc.CurrentConnection;
+            _fs = (IFeatureSource)conn.ResourceService.GetResource(this.FeatureSourceID);
+            var caps = conn.FeatureService.GetProviderCapabilities(_fs.Provider);
             localFsPreviewCtrl.SupportsSQL = caps.Connection.SupportsSQL;
             localFsPreviewCtrl.ReloadTree(this.FeatureSourceID, caps);
         }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -19,6 +19,7 @@
 #endregion
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text;
 using OSGeo.MapGuide.MaestroAPI.Services;
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
@@ -31,6 +32,25 @@
     public abstract class ConnectionCapabilities : IConnectionCapabilities
     {
         /// <summary>
+        /// Resource types supported on *all* versions of MapGuide
+        /// </summary>
+        static string [] _defaultResTypes = new string[] 
+        {
+            //ResourceTypes.RuntimeMap.ToString(),
+            //ResourceTypes.Selection.ToString(),
+            //ResourceTypes.Folder.ToString(),
+
+            ResourceTypes.DrawingSource.ToString(),
+            ResourceTypes.FeatureSource.ToString(),
+            ResourceTypes.LayerDefinition.ToString(),
+            ResourceTypes.LoadProcedure.ToString(),
+            ResourceTypes.MapDefinition.ToString(),
+            ResourceTypes.PrintLayout.ToString(),
+            ResourceTypes.SymbolLibrary.ToString(),
+            ResourceTypes.WebLayout.ToString()
+        };
+
+        /// <summary>
         /// The parent connection
         /// </summary>
         protected IServerConnection _parent;
@@ -259,30 +279,11 @@
         public virtual bool IsSupportedResourceType(string resourceType)
         {
             Check.NotEmpty(resourceType, "resourceType"); //NOXLATE
-            var ver = _parent.SiteVersion;
-            var rt = (ResourceTypes)Enum.Parse(typeof(ResourceTypes), resourceType);
-            switch (rt)
-            {
-                case ResourceTypes.ApplicationDefinition: //Introduced in 2.0.0
-                    return (ver >= new Version(2, 0));
-                case ResourceTypes.SymbolDefinition: //Introduced in 1.2.0
-                    return (ver >= new Version(1, 2));
-            }
 
-            return true;
+            return Array.IndexOf(this.SupportedResourceTypes, resourceType) >= 0;
         }
 
         /// <summary>
-        /// Indicates if this current connection supports the specified resource type
-        /// </summary>
-        /// <param name="resType"></param>
-        /// <returns></returns>
-        public bool IsSupportedResourceType(ResourceTypes resType)
-        {
-            return IsSupportedResourceType(resType.ToString());
-        }
-
-        /// <summary>
         /// Gets whether this connection supports publishing resources for WFS
         /// </summary>
         public virtual bool SupportsWfsPublishing
@@ -321,5 +322,27 @@
         {
             get { return true; }
         }
+
+        /// <summary>
+        /// Gets the array of supported resource types
+        /// </summary>
+        public string[] SupportedResourceTypes
+        {
+            get 
+            {
+                var ver = _parent.SiteVersion;
+                var types = new HashSet<string>(_defaultResTypes);
+
+                if (ver >= new Version(1, 2))
+                    types.Add(ResourceTypes.SymbolDefinition.ToString());
+                if (ver >= new Version(2, 0))
+                    types.Add(ResourceTypes.ApplicationDefinition.ToString());
+                if (ver >= new Version(2, 3))
+                    types.Add(ResourceTypes.WatermarkDefinition.ToString());
+
+                //When new types are introduced to MapGuide and we wish to add such support, put the new types here
+                return types.OrderBy(x => x).ToArray();
+            }
+        }
     }
 }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IConnectionCapabilities.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IConnectionCapabilities.cs	2014-06-09 11:02:12 UTC (rev 8186)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IConnectionCapabilities.cs	2014-06-09 13:09:04 UTC (rev 8187)
@@ -89,10 +89,8 @@
         bool IsSupportedResourceType(string resType);
 
         /// <summary>
-        /// Indicates if this current connection supports the specified resource type
+        /// Gets the array of supported resource types
         /// </summary>
-        /// <param name="resType"></param>
-        /// <returns></returns>
-        bool IsSupportedResourceType(ResourceTypes resType);
+        string[] SupportedResourceTypes { get; }
     }
 }



More information about the mapguide-commits mailing list