[mapguide-commits] r8468 - in trunk/Tools/Maestro: . Maestro Maestro.AddIn.ExtendedObjectModels Maestro.AddIn.ExtendedObjectModels/Commands Maestro.AddIn.ExtendedObjectModels/Editor Maestro.AddIn.ExtendedObjectModels/Templates Maestro.AddIn.Local Maestro.AddIn.Local/Services Maestro.AddIn.Scripting Maestro.AddIn.Scripting/Services Maestro.Base Maestro.Base/Commands Maestro.Base/Commands/SiteExplorer Maestro.Base/Commands/Test Maestro.Base/Editor Maestro.Base/Services Maestro.Base/Services/DragDropHandlers Maestro.Base/Templates Maestro.Base/UI Maestro.Base/UI/Packaging Maestro.Editors Maestro.Editors/Common Maestro.Editors/Diff Maestro.Editors/DrawingSource Maestro.Editors/FeatureSource Maestro.Editors/FeatureSource/Extensions Maestro.Editors/FeatureSource/Providers Maestro.Editors/FeatureSource/Providers/Gdal Maestro.Editors/FeatureSource/Providers/Odbc Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors Maestro.Editors/FeatureSource/Providers/Rdbms Maestro.Editors/FeatureSource/P roviders/SQLite Maestro.Editors/FeatureSource/Providers/Sdf Maestro.Editors/FeatureSource/Providers/Shp Maestro.Editors/FeatureSource/Providers/Wms Maestro.Editors/Fusion Maestro.Editors/Fusion/MapEditors Maestro.Editors/Generic Maestro.Editors/LayerDefinition Maestro.Editors/LayerDefinition/Drawing Maestro.Editors/LayerDefinition/Raster Maestro.Editors/LayerDefinition/Vector Maestro.Editors/LayerDefinition/Vector/GridEditor Maestro.Editors/LayerDefinition/Vector/Scales Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors Maestro.Editors/LayerDefinition/Vector/StyleEditors Maestro.Editors/LayerDefinition/Vector/Thematics Maestro.Editors/LoadProcedure Maestro.Editors/MapDefinition Maestro.Editors/Packaging Maestro.Editors/Preview Maestro.Editors/PrintLayout Maestro.Editors/SymbolDefinition Maestro.Editors/WatermarkDefinition Maestro.Editors/WebLayout Maestro.LiveMapEditor Maestro.MapViewer Maestro.Packaging MaestroAPITestRunner MaestroAPITests MaestroFsPreview MgCooker OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/Capability OSGeo.MapGuide.MaestroAPI/Commands OSGeo.MapGuide.MaestroAPI/CoordinateSystem OSGeo.MapGuide.MaestroAPI/CrossConnection OSGeo.MapGuide.MaestroAPI/Mapping OSGeo.MapGuide.MaestroAPI/Resource OSGeo.MapGuide.MaestroAPI/Resource/Conversion OSGeo.MapGuide.MaestroAPI/Resource/Preview OSGeo.MapGuide.MaestroAPI/Resource/Validation OSGeo.MapGuide.MaestroAPI/Schema OSGeo.MapGuide.MaestroAPI/SchemaOverrides OSGeo.MapGuide.MaestroAPI/Services OSGeo.MapGuide.MaestroAPI/Tile OSGeo.MapGuide.MaestroAPI.Http OSGeo.MapGuide.MaestroAPI.Http/Commands OSGeo.MapGuide.MaestroAPI.Local OSGeo.MapGuide.MaestroAPI.Native OSGeo.MapGuide.MaestroAPI.Native/Commands OSGeo.MapGuide.ObjectModel.Tests OSGeo.MapGuide.ObjectModels OSGeo.MapGuide.ObjectModels/WebLayout/v1_1_0 OSGeo.MapGuide.ObjectModels/WebLayout/v2_4_0 OSGeo.MapGuide.ObjectModels/WebLayout/v2_6_0 RtMapInspector

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sat Dec 27 07:14:41 PST 2014


Author: jng
Date: 2014-12-27 07:14:41 -0800 (Sat, 27 Dec 2014)
New Revision: 8468

Added:
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ExtensionMethods.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ResourceTests.cs
Removed:
   trunk/Tools/Maestro/ExtendedModels/
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Check.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResource.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IVersionedEntity.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceContentVersionChecker.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceIdentifier.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/IFdoSerializable.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/XmlNamespaces.cs
Modified:
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Commands/StartupCommand.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Editor/EditorFactories.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Maestro.AddIn.ExtendedObjectModels.csproj
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition230ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition240ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition110ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition240ItemTemplate.cs
   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/WatermarkDefinition230ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WatermarkDefinition240ItemTemplate.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/Maestro.AddIn.Local.csproj
   trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs
   trunk/Tools/Maestro/Maestro.AddIn.Scripting/Maestro.AddIn.Scripting.csproj
   trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DeleteSelectedItemsCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ExtractSymbolsCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/GetLayerSpatialContextCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/PurgeFeatureSourceCacheCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ShowSpatialContextsCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/TestResourceCompatibilityCommand.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/TranslateLayoutCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.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/FusionEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/IEditorViewContent.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/MapDefinitionEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/WatermarkDefinitionEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj
   trunk/Tools/Maestro/Maestro.Base/Services/ClipboardService.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/DrawingSourceItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/FeatureSourceItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/ItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/MapDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/PrintLayoutItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/SymbolDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ProfilingDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryTreeModel.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryView.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/Common/XmlContentErrorDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Diff/XmlCompareUtil.cs
   trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.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/Gdal/SingleFileCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/OdbcProviderCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/ConnectionStringCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/SQLite/SQLiteFileCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsProviderCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/SpatialContextsDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/FusionWidgetEditorMap.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/MapEditors/MapGuideEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorCtrl.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/ConditionList.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/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/LoadProcedure/LoadProcedureEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ExtentCalculationDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorDrawOrder.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorRepositoryView.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapSettingsSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ScaleListGenerator.cs
   trunk/Tools/Maestro/Maestro.Editors/Packaging/PackageEditorDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs
   trunk/Tools/Maestro/Maestro.Editors/Preview/IResourcePreviewer.cs
   trunk/Tools/Maestro/Maestro.Editors/Preview/LocalMapPreviewer.cs
   trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewEngine.cs
   trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewFactory.cs
   trunk/Tools/Maestro/Maestro.Editors/Preview/StubPreviewer.cs
   trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/PrintLayout/PrintCustomLogosSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/RepositoryHandle.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/SimpleSymbolReferenceCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolField.cs
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.LiveMapEditor/Maestro.LiveMapEditor.csproj
   trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs
   trunk/Tools/Maestro/Maestro.LiveMapEditor/MapSettingsDialog.cs
   trunk/Tools/Maestro/Maestro.LiveMapEditor/Program.cs
   trunk/Tools/Maestro/Maestro.MapViewer/Maestro.MapViewer.csproj
   trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj
   trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs
   trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs
   trunk/Tools/Maestro/Maestro/Maestro_All.sln
   trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner.csproj
   trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner64.csproj
   trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs
   trunk/Tools/Maestro/MaestroAPITests/ConnectionTestBase.cs
   trunk/Tools/Maestro/MaestroAPITests/HttpSiteTests.cs
   trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj
   trunk/Tools/Maestro/MaestroAPITests/ObjectTests.cs
   trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs
   trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs
   trunk/Tools/Maestro/MaestroAPITests/ValidationTests.cs
   trunk/Tools/Maestro/MaestroFsPreview/MaestroFsPreview.csproj
   trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs
   trunk/Tools/Maestro/MgCooker/MgCooker.csproj
   trunk/Tools/Maestro/MgCooker/Program.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpGetResourceContents.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpResourcePreviewUrlGenerator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalCapabilities.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalConnection.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/OSGeo.MapGuide.MaestroAPI.Local.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/Commands/LocalGetResourceContents.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeConnection.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/OSGeo.MapGuide.MaestroAPI.Native32-2.2.0.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/IGetResourceContents.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoreTypes.cd
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CredentialWriter.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ImageSymbolConverter.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/IResourcePreviewUrlGenerator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/ResourcePreviewUrlGenerator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ApplicationDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLayerDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLoadProcedureValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseSymbolDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/PrintLayoutValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorLoader.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolLibraryValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationResultSet.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSchema.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/ConfigurationDocument.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsConfigurationDocument.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsLayerDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Services/IResourceService.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.Designer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.resx
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/WeakEventHandler.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/XmlValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ApplicationDefinitionTests.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/DrawingSourceTests.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/FeatureSourceTests.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ObjectFactoryTests.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Check.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Strings.Designer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Strings.resx
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Utility.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v1_1_0/WebLayoutImpl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_4_0/WebLayoutImpl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_6_0/WebLayoutImpl.cs
   trunk/Tools/Maestro/RtMapInspector/RtMapInspector.csproj
Log:
#2513: This mega submission finalizes the divorce proceedings of the ObjectModel classes from the Maestro API into its own separate library:
 - Remove the various extended object model projects as they have now all been unified under the new ObjectModels library
 - Remove duplicate classes in the Maestro API that have been moved to the ObjectModels library
 - Update MaestroAPI to reference the ObjectModels assembly and all consumers of the MaestroAPI to also reference the ObjectModels assembly
 - Parameterize the various resource validators to allow plugging in a specific resource version. Previously each extended object model would define their own validator, but these validators did nothing besides declaring that it was for validating this version of the given resource. Version >= 1.0.0 resource validators are now registered as part of the stock validator set.
 - Fix an assortment of code breakages
   - Update IResource references to new namespace
   - Import new namespaces of relocated classes
   - Update usages of ResourceTypeRegistry to use ObjectFactory (which internally delegates to ResourceTypeRegistry). ObjectFactory is now the one-stop shop for creation and XML serialization of resource objects.
   - Update usages within various Editor UI components that previously assumed an IServerConnection instance was available on the IResource instance being edited 
   - Move various Create* methods in the old ObjectFactory that take an IServerConnection (to determine the most recent resource version) to the MaestroAPI Utility class
   - Move various helper extension methods into a centralized source file location.
      - Update various extension methods that previously assumed the IResource had an IServerConnection to now accept an IServerConnection instance as part of its parameters. Update various consuming code to use this new pattern.
 - Move some unit tests from the Maestro API test suite into the ObjectModels test suite

Modified: trunk/Tools/Maestro/Maestro/Maestro_All.sln
===================================================================
--- trunk/Tools/Maestro/Maestro/Maestro_All.sln	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro/Maestro_All.sln	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,17 +20,9 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maestro.AddIn.ExtendedObjectModels", "..\Maestro.AddIn.ExtendedObjectModels\Maestro.AddIn.ExtendedObjectModels.csproj", "{32BA7DF6-1AFA-441D-9231-5624C5920706}"
 	ProjectSection(ProjectDependencies) = postProject
-		{B3A2B816-9F41-4857-A111-09D2DF2550D6} = {B3A2B816-9F41-4857-A111-09D2DF2550D6}
-		{D525B343-66D6-4D6B-9A55-78A173D94A51} = {D525B343-66D6-4D6B-9A55-78A173D94A51}
 		{CFD19053-2172-41D3-8460-0FD2123A1E88} = {CFD19053-2172-41D3-8460-0FD2123A1E88}
 		{80FA3158-8B5F-48D1-A393-0378AFE48A7E} = {80FA3158-8B5F-48D1-A393-0378AFE48A7E}
-		{BF6E996E-27AF-44CD-B3CF-A40874E15B2E} = {BF6E996E-27AF-44CD-B3CF-A40874E15B2E}
-		{EDDB0F74-6FE7-4969-80B0-817A629722CD} = {EDDB0F74-6FE7-4969-80B0-817A629722CD}
-		{B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585} = {B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585}
-		{B2A1F69E-52AA-42A2-8DED-89ADB9B14A38} = {B2A1F69E-52AA-42A2-8DED-89ADB9B14A38}
-		{0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2} = {0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2}
 		{5AD2CDBA-952E-4148-98A1-31D2E0D540D5} = {5AD2CDBA-952E-4148-98A1-31D2E0D540D5}
-		{AC5068F6-CFBE-4BCD-B68B-062725E424D4} = {AC5068F6-CFBE-4BCD-B68B-062725E424D4}
 	EndProjectSection
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MgCooker", "..\MgCooker\MgCooker.csproj", "{C7DCF771-5982-4859-A17F-01126E6F9BA6}"
@@ -53,39 +45,10 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.MaestroAPI.Http", "..\OSGeo.MapGuide.MaestroAPI.Http\OSGeo.MapGuide.MaestroAPI.Http.csproj", "{6EF1E775-444B-4E5F-87FB-D687C43A68D7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.LayerDefinition-1.1.0", "..\ExtendedModels\LayerDefinition-1.1.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-1.1.0.csproj", "{B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.LayerDefinition-1.2.0", "..\ExtendedModels\LayerDefinition-1.2.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-1.2.0.csproj", "{EDDB0F74-6FE7-4969-80B0-817A629722CD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.LayerDefinition-1.3.0", "..\ExtendedModels\LayerDefinition-1.3.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-1.3.0.csproj", "{AC5068F6-CFBE-4BCD-B68B-062725E424D4}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.LoadProcedure-1.1.0", "..\ExtendedModels\LoadProcedure-1.1.0\OSGeo.MapGuide.ObjectModels.LoadProcedure-1.1.0.csproj", "{B2A1F69E-52AA-42A2-8DED-89ADB9B14A38}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.LoadProcedure-2.2.0", "..\ExtendedModels\LoadProcedure-2.2.0\OSGeo.MapGuide.ObjectModels.LoadProcedure-2.2.0.csproj", "{D525B343-66D6-4D6B-9A55-78A173D94A51}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.SymbolDefinition-1.1.0", "..\ExtendedModels\SymbolDefinition-1.1.0\OSGeo.MapGuide.ObjectModels.SymbolDefinition-1.1.0.csproj", "{BF6E996E-27AF-44CD-B3CF-A40874E15B2E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.WebLayout-1.1.0", "..\ExtendedModels\WebLayout-1.1.0\OSGeo.MapGuide.ObjectModels.WebLayout-1.1.0.csproj", "{0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaestroAPITests", "..\MaestroAPITests\MaestroAPITests.csproj", "{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaestroAPITestRunner", "..\MaestroAPITestRunner\MaestroAPITestRunner.csproj", "{50C12B5C-387C-4007-A1D1-CB181CB474CC}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.LayerDefinition-2.3.0", "..\ExtendedModels\LayerDefinition-2.3.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-2.3.0.csproj", "{F976A709-D9DB-407E-A4CD-2CEA31C6B1D9}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.MapDefinition-2.3.0", "..\ExtendedModels\MapDefinition-2.3.0\OSGeo.MapGuide.ObjectModels.MapDefinition-2.3.0.csproj", "{C8DB3E77-3AF4-471D-A214-69DBEB32750E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.WatermarkDefinition-2.3.0", "..\ExtendedModels\WatermarkDefinition-2.3.0\OSGeo.MapGuide.ObjectModels.WatermarkDefinition-2.3.0.csproj", "{F84E21EE-360C-46EC-BD01-E66F8D9F5B3E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ExtendedObjectModels", "..\OSGeo.MapGuide.ExtendedObjectModels\OSGeo.MapGuide.ExtendedObjectModels.csproj", "{B3A2B816-9F41-4857-A111-09D2DF2550D6}"
-	ProjectSection(ProjectDependencies) = postProject
-		{C0CA5D05-72C0-4F22-8618-B31BF0FFA190} = {C0CA5D05-72C0-4F22-8618-B31BF0FFA190}
-		{222CB020-5336-47D7-9BB9-A22D18953C80} = {222CB020-5336-47D7-9BB9-A22D18953C80}
-		{16E6B250-C805-4C31-9A7D-F56A0051EC93} = {16E6B250-C805-4C31-9A7D-F56A0051EC93}
-		{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0} = {E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}
-		{BEC17FD3-2ADB-4154-934D-494313C588EE} = {BEC17FD3-2ADB-4154-934D-494313C588EE}
-	EndProjectSection
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.MaestroAPI.Local", "..\OSGeo.MapGuide.MaestroAPI.Local\OSGeo.MapGuide.MaestroAPI.Local.csproj", "{3DDF6501-0148-474C-8674-7C7DA49C7F02}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maestro.AddIn.Local", "..\Maestro.AddIn.Local\Maestro.AddIn.Local.csproj", "{2419F940-BFB7-4F3F-B5DA-1052EB4706E5}"
@@ -100,26 +63,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.MaestroAPI.Native32-2.2.0", "..\OSGeo.MapGuide.MaestroAPI.Native\OSGeo.MapGuide.MaestroAPI.Native32-2.2.0.csproj", "{F4420153-9DF3-4407-AD65-E8ABED2B6E25}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.WebLayout-2.4.0", "..\ExtendedModels\WebLayout-2.4.0\OSGeo.MapGuide.ObjectModels.WebLayout-2.4.0.csproj", "{BEC17FD3-2ADB-4154-934D-494313C588EE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.LayerDefinition-2.4.0", "..\ExtendedModels\LayerDefinition-2.4.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-2.4.0.csproj", "{16E6B250-C805-4C31-9A7D-F56A0051EC93}"
-	ProjectSection(ProjectDependencies) = postProject
-		{222CB020-5336-47D7-9BB9-A22D18953C80} = {222CB020-5336-47D7-9BB9-A22D18953C80}
-		{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0} = {E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.MapDefinition-2.4.0", "..\ExtendedModels\MapDefinition-2.4.0\OSGeo.MapGuide.ObjectModels.MapDefinition-2.4.0.csproj", "{C0CA5D05-72C0-4F22-8618-B31BF0FFA190}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0} = {E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.SymbolDefinition-2.4.0", "..\ExtendedModels\SymbolDefinition-2.4.0\OSGeo.MapGuide.ObjectModels.SymbolDefinition-2.4.0.csproj", "{222CB020-5336-47D7-9BB9-A22D18953C80}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.WatermarkDefinition-2.4.0", "..\ExtendedModels\WatermarkDefinition-2.4.0\OSGeo.MapGuide.ObjectModels.WatermarkDefinition-2.4.0.csproj", "{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}"
-	ProjectSection(ProjectDependencies) = postProject
-		{222CB020-5336-47D7-9BB9-A22D18953C80} = {222CB020-5336-47D7-9BB9-A22D18953C80}
-	EndProjectSection
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maestro.AddIn.FdoToolbox", "..\Maestro.AddIn.FdoToolbox\Maestro.AddIn.FdoToolbox.csproj", "{8787FF3F-552F-46BE-B9D7-548B6162B079}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RtMapInspector", "..\RtMapInspector\RtMapInspector.csproj", "{E204559D-EE92-4792-96E2-06F45654FAFC}"
@@ -136,7 +79,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProviderTemplate", "..\ProviderTemplate\ProviderTemplate.csproj", "{EDDBBE17-E9A9-43FB-99FE-38DD8E10607A}"
 	ProjectSection(ProjectDependencies) = postProject
-		{B3A2B816-9F41-4857-A111-09D2DF2550D6} = {B3A2B816-9F41-4857-A111-09D2DF2550D6}
 		{D24F724A-1CBF-4EB6-A48B-92C08353C4CC} = {D24F724A-1CBF-4EB6-A48B-92C08353C4CC}
 		{F4420153-9DF3-4407-AD65-E8ABED2B6E25} = {F4420153-9DF3-4407-AD65-E8ABED2B6E25}
 		{80FA3158-8B5F-48D1-A393-0378AFE48A7E} = {80FA3158-8B5F-48D1-A393-0378AFE48A7E}
@@ -158,8 +100,6 @@
 		.nuget\packages.config = .nuget\packages.config
 	EndProjectSection
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels.WebLayout-2.6.0", "..\ExtendedModels\WebLayout-2.6.0\OSGeo.MapGuide.ObjectModels.WebLayout-2.6.0.csproj", "{829D2A4E-7DBC-48AD-9CF9-12ACFBF943A6}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MpuCalc", "..\MpuCalc\MpuCalc.csproj", "{43B01C27-E0D2-439B-83ED-8C814ED1526A}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.ObjectModels", "..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj", "{48C5EB23-45AE-4C4C-8FAB-635428AE8CA1}"
@@ -228,34 +168,6 @@
 		{6EF1E775-444B-4E5F-87FB-D687C43A68D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6EF1E775-444B-4E5F-87FB-D687C43A68D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6EF1E775-444B-4E5F-87FB-D687C43A68D7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585}.Release|Any CPU.Build.0 = Release|Any CPU
-		{EDDB0F74-6FE7-4969-80B0-817A629722CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{EDDB0F74-6FE7-4969-80B0-817A629722CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{EDDB0F74-6FE7-4969-80B0-817A629722CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{EDDB0F74-6FE7-4969-80B0-817A629722CD}.Release|Any CPU.Build.0 = Release|Any CPU
-		{AC5068F6-CFBE-4BCD-B68B-062725E424D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{AC5068F6-CFBE-4BCD-B68B-062725E424D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{AC5068F6-CFBE-4BCD-B68B-062725E424D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{AC5068F6-CFBE-4BCD-B68B-062725E424D4}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B2A1F69E-52AA-42A2-8DED-89ADB9B14A38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B2A1F69E-52AA-42A2-8DED-89ADB9B14A38}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B2A1F69E-52AA-42A2-8DED-89ADB9B14A38}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B2A1F69E-52AA-42A2-8DED-89ADB9B14A38}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D525B343-66D6-4D6B-9A55-78A173D94A51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D525B343-66D6-4D6B-9A55-78A173D94A51}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D525B343-66D6-4D6B-9A55-78A173D94A51}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D525B343-66D6-4D6B-9A55-78A173D94A51}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BF6E996E-27AF-44CD-B3CF-A40874E15B2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BF6E996E-27AF-44CD-B3CF-A40874E15B2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BF6E996E-27AF-44CD-B3CF-A40874E15B2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BF6E996E-27AF-44CD-B3CF-A40874E15B2E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2}.Release|Any CPU.Build.0 = Release|Any CPU
 		{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{351D49A3-2E4A-4EC3-AFC2-D56598F44F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -264,22 +176,6 @@
 		{50C12B5C-387C-4007-A1D1-CB181CB474CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{50C12B5C-387C-4007-A1D1-CB181CB474CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{50C12B5C-387C-4007-A1D1-CB181CB474CC}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F976A709-D9DB-407E-A4CD-2CEA31C6B1D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{F976A709-D9DB-407E-A4CD-2CEA31C6B1D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F976A709-D9DB-407E-A4CD-2CEA31C6B1D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{F976A709-D9DB-407E-A4CD-2CEA31C6B1D9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C8DB3E77-3AF4-471D-A214-69DBEB32750E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{C8DB3E77-3AF4-471D-A214-69DBEB32750E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C8DB3E77-3AF4-471D-A214-69DBEB32750E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C8DB3E77-3AF4-471D-A214-69DBEB32750E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F84E21EE-360C-46EC-BD01-E66F8D9F5B3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{F84E21EE-360C-46EC-BD01-E66F8D9F5B3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F84E21EE-360C-46EC-BD01-E66F8D9F5B3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{F84E21EE-360C-46EC-BD01-E66F8D9F5B3E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B3A2B816-9F41-4857-A111-09D2DF2550D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B3A2B816-9F41-4857-A111-09D2DF2550D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B3A2B816-9F41-4857-A111-09D2DF2550D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B3A2B816-9F41-4857-A111-09D2DF2550D6}.Release|Any CPU.Build.0 = Release|Any CPU
 		{3DDF6501-0148-474C-8674-7C7DA49C7F02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3DDF6501-0148-474C-8674-7C7DA49C7F02}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{3DDF6501-0148-474C-8674-7C7DA49C7F02}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -300,26 +196,6 @@
 		{F4420153-9DF3-4407-AD65-E8ABED2B6E25}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{F4420153-9DF3-4407-AD65-E8ABED2B6E25}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F4420153-9DF3-4407-AD65-E8ABED2B6E25}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BEC17FD3-2ADB-4154-934D-494313C588EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BEC17FD3-2ADB-4154-934D-494313C588EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BEC17FD3-2ADB-4154-934D-494313C588EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BEC17FD3-2ADB-4154-934D-494313C588EE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{16E6B250-C805-4C31-9A7D-F56A0051EC93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{16E6B250-C805-4C31-9A7D-F56A0051EC93}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{16E6B250-C805-4C31-9A7D-F56A0051EC93}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{16E6B250-C805-4C31-9A7D-F56A0051EC93}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C0CA5D05-72C0-4F22-8618-B31BF0FFA190}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{C0CA5D05-72C0-4F22-8618-B31BF0FFA190}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C0CA5D05-72C0-4F22-8618-B31BF0FFA190}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C0CA5D05-72C0-4F22-8618-B31BF0FFA190}.Release|Any CPU.Build.0 = Release|Any CPU
-		{222CB020-5336-47D7-9BB9-A22D18953C80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{222CB020-5336-47D7-9BB9-A22D18953C80}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{222CB020-5336-47D7-9BB9-A22D18953C80}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{222CB020-5336-47D7-9BB9-A22D18953C80}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E367FE8E-E46F-4DA0-86CE-E6F37E78DEE0}.Release|Any CPU.Build.0 = Release|Any CPU
 		{8787FF3F-552F-46BE-B9D7-548B6162B079}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8787FF3F-552F-46BE-B9D7-548B6162B079}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{8787FF3F-552F-46BE-B9D7-548B6162B079}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -360,10 +236,6 @@
 		{AA5EF530-B95C-4C8F-BE9F-52C225613DF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{AA5EF530-B95C-4C8F-BE9F-52C225613DF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{AA5EF530-B95C-4C8F-BE9F-52C225613DF9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{829D2A4E-7DBC-48AD-9CF9-12ACFBF943A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{829D2A4E-7DBC-48AD-9CF9-12ACFBF943A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{829D2A4E-7DBC-48AD-9CF9-12ACFBF943A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{829D2A4E-7DBC-48AD-9CF9-12ACFBF943A6}.Release|Any CPU.Build.0 = Release|Any CPU
 		{43B01C27-E0D2-439B-83ED-8C814ED1526A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{43B01C27-E0D2-439B-83ED-8C814ED1526A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{43B01C27-E0D2-439B-83ED-8C814ED1526A}.Release|Any CPU.ActiveCfg = Release|Any CPU

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Commands/StartupCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Commands/StartupCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Commands/StartupCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,7 +21,6 @@
 #endregion Disclaimer / License
 
 using ICSharpCode.Core;
-using OSGeo.MapGuide.ExtendedObjectModels;
 
 namespace Maestro.AddIn.ExtendedObjectModels.Commands
 {
@@ -29,7 +28,7 @@
     {
         public override void Run()
         {
-            ModelSetup.Initialize();
+            
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Editor/EditorFactories.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Editor/EditorFactories.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Editor/EditorFactories.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Base.Editor;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.AddIn.ExtendedObjectModels.Editor
 {
@@ -31,7 +32,7 @@
 
         public WebLayout110EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString(), "1.1.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.WebLayout.ToString(), "1.1.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -46,7 +47,7 @@
 
         public WebLayout240EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString(), "2.4.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.WebLayout.ToString(), "2.4.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -61,7 +62,7 @@
 
         public WebLayout260EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString(), "2.6.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.WebLayout.ToString(), "2.6.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -76,7 +77,7 @@
 
         public LayerDefinition110EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString(), "1.1.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.1.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -92,7 +93,7 @@
 
         public LayerDefinition120EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString(), "1.2.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.2.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -108,7 +109,7 @@
 
         public LayerDefinition130EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString(), "1.3.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.3.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -124,7 +125,7 @@
 
         public LayerDefinition230EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString(), "2.3.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "2.3.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -140,7 +141,7 @@
 
         public LayerDefinition240EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString(), "2.4.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "2.4.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -156,7 +157,7 @@
 
         public MapDefinition230EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.MapDefinition.ToString(), "2.3.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), "2.3.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -172,7 +173,7 @@
 
         public MapDefinition240EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.MapDefinition.ToString(), "2.4.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), "2.4.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -188,7 +189,7 @@
 
         public WatermarkDefinition230EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.WatermarkDefinition.ToString(), "2.3.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.WatermarkDefinition.ToString(), "2.3.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -204,7 +205,7 @@
 
         public WatermarkDefinition240EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.WatermarkDefinition.ToString(), "2.4.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.WatermarkDefinition.ToString(), "2.4.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -220,7 +221,7 @@
 
         public LoadProcedure110EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LoadProcedure.ToString(), "1.1.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LoadProcedure.ToString(), "1.1.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -236,7 +237,7 @@
 
         public LoadProcedure220EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LoadProcedure.ToString(), "2.2.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LoadProcedure.ToString(), "2.2.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -252,7 +253,7 @@
 
         public SymbolDefinition110EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.SymbolDefinition.ToString(), "1.1.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.SymbolDefinition.ToString(), "1.1.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -267,7 +268,7 @@
 
         public SymbolDefinition240EditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.SymbolDefinition.ToString(), "2.4.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.SymbolDefinition.ToString(), "2.4.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Maestro.AddIn.ExtendedObjectModels.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Maestro.AddIn.ExtendedObjectModels.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Maestro.AddIn.ExtendedObjectModels.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -125,16 +125,17 @@
       <Name>Maestro.Shared.UI</Name>
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\OSGeo.MapGuide.ExtendedObjectModels\OSGeo.MapGuide.ExtendedObjectModels.csproj">
-      <Project>{B3A2B816-9F41-4857-A111-09D2DF2550D6}</Project>
-      <Name>OSGeo.MapGuide.ExtendedObjectModels</Name>
-      <Private>False</Private>
-    </ProjectReference>
     <ProjectReference Include="..\OSGeo.MapGuide.MaestroAPI\OSGeo.MapGuide.MaestroAPI.csproj">
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+      <EmbedInteropTypes>False</EmbedInteropTypes>
+      <Private>False</Private>
+    </ProjectReference>
     <ProjectReference Include="..\Thirdparty\SharpDevelop\ICSharpCode.Core\ICSharpCode.Core.csproj">
       <Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
       <Name>ICSharpCode.Core</Name>

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition230ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition230ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition230ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -47,9 +47,9 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            return ObjectFactory.CreateMapDefinition(conn, new Version(2, 3, 0), string.Empty);
+            return ObjectFactory.CreateMapDefinition(new Version(2, 3, 0), string.Empty);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition240ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition240ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/MapDefinition240ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -47,9 +47,9 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            return ObjectFactory.CreateMapDefinition(conn, new Version(2, 4, 0), string.Empty);
+            return ObjectFactory.CreateMapDefinition(new Version(2, 4, 0), string.Empty);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -60,7 +60,7 @@
                              string.Format(OSGeo.MapGuide.MaestroAPI.Strings.GenericFilter, OSGeo.MapGuide.MaestroAPI.Strings.PickSqlite, "slt"); //NOXLATE
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sqlite, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(LoadType.Sqlite, dlg.FileNames);
                     if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
                     {
                         proc.SubType.RootPath = startPoint;

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition110ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition110ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition110ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -50,7 +50,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateSimpleSymbol(conn, new Version(1, 1, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
+            return ObjectFactory.CreateSimpleSymbol(new Version(1, 1, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
         }
     }
 
@@ -75,7 +75,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateCompoundSymbol(conn, new Version(1, 1, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
+            return ObjectFactory.CreateCompoundSymbol(new Version(1, 1, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition240ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition240ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SymbolDefinition240ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -50,7 +50,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateSimpleSymbol(conn, new Version(2, 4, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
+            return ObjectFactory.CreateSimpleSymbol(new Version(2, 4, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
         }
     }
 
@@ -75,7 +75,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateCompoundSymbol(conn, new Version(2, 4, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
+            return ObjectFactory.CreateCompoundSymbol(new Version(2, 4, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer110ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer110ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer110ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -49,14 +49,14 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
             using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 1, 0));
+                    var lyr = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 1, 0));
                     var vl = (IVectorLayerDefinition)lyr.SubLayer;
                     vl.ResourceId = picker.ResourceID;
                     //Stub these for now, validation will ensure this never makes it

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer120ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer120ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer120ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -49,14 +49,14 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
             using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 2, 0));
+                    var lyr = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 2, 0));
                     var vl = (IVectorLayerDefinition)lyr.SubLayer;
                     vl.ResourceId = picker.ResourceID;
                     //Stub these for now, validation will ensure this never makes it

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer130ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer130ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer130ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -49,14 +49,14 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
             using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 3, 0));
+                    var lyr = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 3, 0));
                     var vl = (IVectorLayerDefinition)lyr.SubLayer;
                     vl.ResourceId = picker.ResourceID;
                     //Stub these for now, validation will ensure this never makes it

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer230ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer230ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer230ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -49,14 +49,14 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
             using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(2, 3, 0));
+                    var lyr = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(2, 3, 0));
                     var vl = (IVectorLayerDefinition)lyr.SubLayer;
                     vl.ResourceId = picker.ResourceID;
                     //Stub these for now, validation will ensure this never makes it

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer240ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer240ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/VectorLayer240ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -49,14 +49,14 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
             using (var picker = new ResourcePicker(conn, ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource))
             {
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(2, 4, 0));
+                    var lyr = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(2, 4, 0));
                     var vl = (IVectorLayerDefinition)lyr.SubLayer;
                     vl.ResourceId = picker.ResourceID;
                     //Stub these for now, validation will ensure this never makes it

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WatermarkDefinition230ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WatermarkDefinition230ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WatermarkDefinition230ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -48,9 +48,9 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            return ObjectFactory.CreateWatermark(conn, SymbolDefinitionType.Simple, new Version(2, 3, 0));
+            return ObjectFactory.CreateWatermark(SymbolDefinitionType.Simple, new Version(2, 3, 0));
         }
     }
 
@@ -73,9 +73,9 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            return ObjectFactory.CreateWatermark(conn, SymbolDefinitionType.Compound, new Version(2, 3, 0));
+            return ObjectFactory.CreateWatermark(SymbolDefinitionType.Compound, new Version(2, 3, 0));
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WatermarkDefinition240ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WatermarkDefinition240ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WatermarkDefinition240ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -48,9 +48,9 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            return ObjectFactory.CreateWatermark(conn, SymbolDefinitionType.Simple, new Version(2, 4, 0));
+            return ObjectFactory.CreateWatermark(SymbolDefinitionType.Simple, new Version(2, 4, 0));
         }
     }
 
@@ -73,9 +73,9 @@
             }
         }
 
-        public override OSGeo.MapGuide.MaestroAPI.Resource.IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
+        public override IResource CreateItem(string startPoint, OSGeo.MapGuide.MaestroAPI.IServerConnection conn)
         {
-            return ObjectFactory.CreateWatermark(conn, SymbolDefinitionType.Compound, new Version(2, 4, 0));
+            return ObjectFactory.CreateWatermark(SymbolDefinitionType.Compound, new Version(2, 4, 0));
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout110ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout110ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout110ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -57,7 +57,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 1, 0), string.Empty);
+                    var wl = ObjectFactory.CreateWebLayout(new Version(1, 1, 0), string.Empty);
                     wl.Map.ResourceId = picker.ResourceID;
                     return wl;
                 }

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout240ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout240ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout240ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -57,7 +57,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var wl = ObjectFactory.CreateWebLayout(conn, new Version(2, 4, 0), string.Empty);
+                    var wl = ObjectFactory.CreateWebLayout(new Version(2, 4, 0), string.Empty);
                     wl.Map.ResourceId = picker.ResourceID;
                     return wl;
                 }

Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout260ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout260ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/WebLayout260ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -57,7 +57,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var wl = ObjectFactory.CreateWebLayout(conn, new Version(2, 6, 0), string.Empty);
+                    var wl = ObjectFactory.CreateWebLayout(new Version(2, 6, 0), string.Empty);
                     wl.Map.ResourceId = picker.ResourceID;
                     return wl;
                 }

Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/Maestro.AddIn.Local.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Local/Maestro.AddIn.Local.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.Local/Maestro.AddIn.Local.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -146,6 +146,11 @@
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+      <Private>False</Private>
+    </ProjectReference>
     <ProjectReference Include="..\Thirdparty\SharpDevelop\ICSharpCode.Core\ICSharpCode.Core.csproj">
       <Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
       <Name>ICSharpCode.Core</Name>

Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.Local/Services/LocalPreviewer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -35,7 +35,7 @@
 {
     public class LocalPreviewer : IResourcePreviewer
     {
-        public bool IsPreviewable(OSGeo.MapGuide.MaestroAPI.Resource.IResource res)
+        public bool IsPreviewable(IResource res, IServerConnection conn)
         {
             var rt = res.ResourceType;
             return (rt == ResourceTypes.LayerDefinition.ToString() ||
@@ -56,20 +56,20 @@
         public void Preview(IResource res, IEditorService edSvc, string locale)
         {
             IMapDefinition mapDef = null;
-            var conn = res.CurrentConnection;
+            var conn = edSvc.CurrentConnection;
 
             if (res.ResourceType == ResourceTypes.LayerDefinition.ToString())
             {
                 var ldf = (ILayerDefinition)res;
                 string wkt;
-                var env = ldf.GetSpatialExtent(true, out wkt);
+                var env = ldf.GetSpatialExtent(conn, true, out wkt);
                 if (env == null)
                     throw new ApplicationException(Strings.CouldNotComputeExtentsForPreview);
-                mapDef = ObjectFactory.CreateMapDefinition(conn, "Preview");
+                mapDef = Utility.CreateMapDefinition(conn, "Preview");
                 mapDef.CoordinateSystem = wkt;
                 mapDef.SetExtents(env.MinX, env.MinY, env.MaxX, env.MaxY);
                 string resId = "Session:" + edSvc.SessionID + "//" + Guid.NewGuid() + "." + res.ResourceType.ToString();
-                conn.ResourceService.SetResourceXmlData(resId, ResourceTypeRegistry.Serialize(res));
+                conn.ResourceService.SetResourceXmlData(resId, ObjectFactory.Serialize(res));
                 mapDef.AddLayer(null, "PreviewLayer", resId);
             }
             else if (res.ResourceType == ResourceTypes.MapDefinition.ToString())
@@ -79,11 +79,11 @@
             else if (res.ResourceType == ResourceTypes.WatermarkDefinition.ToString())
             {
                 string resId = "Session:" + edSvc.SessionID + "//" + Guid.NewGuid() + "." + res.ResourceType.ToString();
-                conn.ResourceService.SetResourceXmlData(resId, ResourceTypeRegistry.Serialize(res));
+                conn.ResourceService.SetResourceXmlData(resId, ObjectFactory.Serialize(res));
 
                 var csFact = new MgCoordinateSystemFactory();
                 var arbXY = csFact.ConvertCoordinateSystemCodeToWkt("XY-M");
-                mapDef = ObjectFactory.CreateMapDefinition(conn, new Version(2, 3, 0), "Preview");
+                mapDef = ObjectFactory.CreateMapDefinition(new Version(2, 3, 0), "Preview");
                 mapDef.CoordinateSystem = arbXY;
                 mapDef.SetExtents(-100000, -100000, 100000, 100000);
                 var wm = ((IMapDefinition2)mapDef).AddWatermark(((IWatermarkDefinition)res));
@@ -91,7 +91,7 @@
             }
 
             var mapResId = new MgResourceIdentifier("Session:" + edSvc.SessionID + "//" + mapDef.ResourceType.ToString() + "Preview" + Guid.NewGuid() + "." + mapDef.ResourceType.ToString());
-            conn.ResourceService.SetResourceXmlData(mapResId.ToString(), ResourceTypeRegistry.Serialize(mapDef));
+            conn.ResourceService.SetResourceXmlData(mapResId.ToString(), ObjectFactory.Serialize(mapDef));
 
             //MgdMap map = new MgdMap(mapResId);
 

Modified: trunk/Tools/Maestro/Maestro.AddIn.Scripting/Maestro.AddIn.Scripting.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Scripting/Maestro.AddIn.Scripting.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.Scripting/Maestro.AddIn.Scripting.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -134,6 +134,11 @@
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+      <Private>False</Private>
+    </ProjectReference>
     <ProjectReference Include="..\Thirdparty\SharpDevelop\ICSharpCode.Core\ICSharpCode.Core.csproj">
       <Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
       <Name>ICSharpCode.Core</Name>

Modified: trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -29,6 +29,7 @@
 using Maestro.Editors.Preview;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.IO;
 using System.Linq;
@@ -90,7 +91,7 @@
         public string GetResourceXml(IServerConnection conn, string resourceId)
         {
             var res = conn.ResourceService.GetResource(resourceId);
-            return ResourceTypeRegistry.SerializeAsString(res);
+            return ObjectFactory.SerializeAsString(res);
         }
 
         /// <summary>
@@ -280,7 +281,7 @@
                 IEditorViewContent openEd = null;
                 foreach (var ed in omgr.OpenEditors)
                 {
-                    if (ed.Resource.CurrentConnection == conn && ed.EditorService.ResourceID == resourceId)
+                    if (ed.EditorService.CurrentConnection == conn && ed.EditorService.ResourceID == resourceId)
                     {
                         openEd = ed;
                         break;

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using Maestro.Base.UI;
 using Maestro.Editors;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Linq;

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SaveResourceAsCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using Maestro.Editors.Generic;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 
 namespace Maestro.Base.Commands
@@ -38,7 +39,7 @@
             var exp = wb.ActiveSiteExplorer;
             var omgr = ServiceRegistry.GetService<OpenResourceManager>();
             var ed = wb.ActiveDocumentView as IEditorViewContent;
-            var conn = ed.EditorService.GetEditedResource().CurrentConnection;
+            var conn = ed.EditorService.CurrentConnection;
 
             if (ed != null)
             {

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DeleteSelectedItemsCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DeleteSelectedItemsCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DeleteSelectedItemsCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 using System.Linq;
 

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Base.Services;
 using Maestro.Base.UI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 
 namespace Maestro.Base.Commands.SiteExplorer

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ExtractSymbolsCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ExtractSymbolsCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ExtractSymbolsCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource.Conversion;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 using System.ComponentModel;
 

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/GetLayerSpatialContextCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/GetLayerSpatialContextCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/GetLayerSpatialContextCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using Maestro.Editors.FeatureSource;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;
@@ -83,7 +84,7 @@
                                     if (ltype == LayerType.Vector ||
                                         ltype == LayerType.Raster)
                                     {
-                                        var sc = ldf.GetSpatialContext();
+                                        var sc = ldf.GetSpatialContext(conn);
                                         if (sc == null)
                                         {
                                             if (ltype == LayerType.Vector)

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/PurgeFeatureSourceCacheCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/PurgeFeatureSourceCacheCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/PurgeFeatureSourceCacheCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using ICSharpCode.Core;
 using Maestro.Base.Services;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 
 namespace Maestro.Base.Commands.SiteExplorer

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 
 namespace Maestro.Base.Commands.SiteExplorer

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RepointCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.IO;
 using System.Xml;
 

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ShowSpatialContextsCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ShowSpatialContextsCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ShowSpatialContextsCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Base.Services;
 using Maestro.Editors.FeatureSource;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Base.Commands.SiteExplorer
 {

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/TestResourceCompatibilityCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/TestResourceCompatibilityCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/TestResourceCompatibilityCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -27,6 +27,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Capability;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenResourceCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenResourceCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenResourceCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using ICSharpCode.Core;
 using Maestro.Base.Services;
 using Maestro.Editors.Generic;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Base.Commands.Test
 {
@@ -99,7 +100,7 @@
             var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = mgr.GetConnection(exp.ConnectionName);
 
-            var picker = new ResourcePicker(conn, OSGeo.MapGuide.MaestroAPI.ResourceTypes.FeatureSource.ToString(), ResourcePickerMode.OpenResource);
+            var picker = new ResourcePicker(conn, 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-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/Test/OpenSymbolBrowserCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using Maestro.Editors.Common;
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Base.Commands.Test
 {

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/Test/TestCommands.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/Test/TestCommands.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/Test/TestCommands.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Base.Services;
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Base.Commands.Test
 {

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/TranslateLayoutCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/TranslateLayoutCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/TranslateLayoutCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using ICSharpCode.Core;
 using Maestro.Base.Editor;
 using Maestro.Base.UI;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 using System.IO;
 using System.Text;
@@ -40,16 +41,16 @@
             if (ed != null)
             {
                 var rt = ed.EditorService.GetEditedResource().ResourceType;
-                if (rt == OSGeo.MapGuide.MaestroAPI.ResourceTypes.ApplicationDefinition.ToString() ||
-                    rt == OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString())
+                if (rt == ResourceTypes.ApplicationDefinition.ToString() ||
+                    rt == ResourceTypes.WebLayout.ToString())
                 {
                     var doc = new XmlDocument();
                     doc.LoadXml(ed.GetXmlContent());
 
                     List<string> tags = new List<string>();
-                    if (rt == OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString())
+                    if (rt == ResourceTypes.WebLayout.ToString())
                         tags.AddRange(new string[] { "Title", "Tooltip", "Description", "Label", "Prompt" }); //NOXLATE
-                    else if (rt == OSGeo.MapGuide.MaestroAPI.ResourceTypes.ApplicationDefinition.ToString())
+                    else if (rt == ResourceTypes.ApplicationDefinition.ToString())
                         tags.AddRange(new string[] { "Title", "Label", "Tooltip", "StatusText", "EmptyText" }); //NOXLATE
                     var diag = new LabelLocalizationDialog(doc, tags.ToArray());
                     if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -28,6 +28,7 @@
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Resource.Validation;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;
@@ -68,7 +69,7 @@
             }
 
             worker.ReportProgress(0);
-            var context = new ResourceValidationContext(_conn.ResourceService, _conn.FeatureService);
+            var context = new ResourceValidationContext(_conn);
 
             var set = new ValidationResultSet();
             int i = 0;
@@ -150,7 +151,7 @@
 
             if (ed != null)
             {
-                _conn = ed.EditorService.GetEditedResource().CurrentConnection;
+                _conn = ed.EditorService.CurrentConnection;
 
                 var xed = ed as XmlEditor;
                 if (xed != null)

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/EditorContentBase.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/EditorContentBase.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/EditorContentBase.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -30,6 +30,7 @@
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Resource.Conversion;
 using OSGeo.MapGuide.MaestroAPI.Resource.Validation;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -94,7 +95,7 @@
                     _svc.BeforeSave -= OnBeforeSave;
 
                     var res = _svc.GetEditedResource();
-                    res.CurrentConnection.SessionIDChanged -= OnSessionIdChanged;
+                    _svc.CurrentConnection.SessionIDChanged -= OnSessionIdChanged;
                 }
 
                 _svc = value;
@@ -105,7 +106,7 @@
 
                 {
                     var res = _svc.GetEditedResource();
-                    var conn = res.CurrentConnection;
+                    var conn = _svc.CurrentConnection;
                     conn.SessionIDChanged += WeakEventHandler.Wrap(OnSessionIdChanged, (eh) => conn.SessionIDChanged -= eh);
                 }
 
@@ -134,7 +135,7 @@
         /// <returns></returns>
         public virtual string GetXmlContent()
         {
-            using (var sr = new System.IO.StreamReader(ResourceTypeRegistry.Serialize(this.Resource)))
+            using (var sr = new System.IO.StreamReader(ObjectFactory.Serialize(this.Resource)))
             {
                 return sr.ReadToEnd();
             }
@@ -236,7 +237,7 @@
         protected virtual ICollection<ValidationIssue> ValidateEditedResource()
         {
             var conn = _svc.CurrentConnection;
-            var context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            var context = new ResourceValidationContext(conn);
             //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);
@@ -252,7 +253,7 @@
 
         private string GetTooltip(string item)
         {
-            return string.Format(Strings.EditorTitleTemplate, item, Environment.NewLine, this.Resource.CurrentConnection.DisplayName, this.Resource.ResourceVersion);
+            return string.Format(Strings.EditorTitleTemplate, item, Environment.NewLine, this.EditorService.CurrentConnection.DisplayName, this.Resource.ResourceVersion);
         }
 
         private void UpdateTitle()
@@ -303,8 +304,8 @@
                 var res = this.Resource;
                 if (res != null)
                 {
-                    var type = res.CurrentConnection.ProviderName;
-                    return ResourcePreviewerFactory.IsPreviewable(type, res);
+                    var conn = this.EditorService.CurrentConnection;
+                    return ResourcePreviewerFactory.IsPreviewable(conn, res);
                 }
                 return false;
             }
@@ -369,7 +370,7 @@
         /// </summary>
         public virtual void Preview()
         {
-            var conn = this.Resource.CurrentConnection;
+            var conn = this.EditorService.CurrentConnection;
             _svc.PrePreviewProcess();
             var previewer = ResourcePreviewerFactory.GetPreviewer(conn.ProviderName);
             if (previewer != null)
@@ -406,7 +407,7 @@
         private void btnUpgrade_Click(object sender, EventArgs e)
         {
             var res = _svc.GetEditedResource();
-            var conn = res.CurrentConnection;
+            var conn = _svc.CurrentConnection;
             var ver = conn.Capabilities.GetMaxSupportedResourceVersion(res.ResourceType);
 
             using (new WaitCursor(this))
@@ -414,7 +415,7 @@
                 var conv = new ResourceObjectConverter();
                 var res2 = conv.Convert(res, ver);
 
-                using (var stream = ResourceTypeRegistry.Serialize(res2))
+                using (var stream = ObjectFactory.Serialize(res2))
                 {
                     using (var sr = new StreamReader(stream))
                     {
@@ -442,7 +443,7 @@
                 var omgr = ServiceRegistry.GetService<OpenResourceManager>();
                 var res = this.EditorService.GetEditedResource();
                 var origResId = this.EditorService.ResourceID;
-                var conn = res.CurrentConnection;
+                var conn = this.EditorService.CurrentConnection;
                 var wb = Workbench.Instance;
                 this.Close();
                 omgr.Open(origResId, conn, false, wb.ActiveSiteExplorer);

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/FeatureSourceEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/FeatureSourceEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/FeatureSourceEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Editors;
 using Maestro.Editors.FeatureSource;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System;
 using System.Collections.Generic;
@@ -83,13 +84,13 @@
             foreach (var r in refs.ResourceId)
             {
                 ResourceIdentifier rid = new ResourceIdentifier(r);
-                if (rid.ResourceType == OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString())
+                if (rid.ResourceType == ResourceTypes.LayerDefinition.ToString())
                 {
                     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())
+                        if (rid2.ResourceType == ResourceTypes.MapDefinition.ToString())
                         {
                             var mdf = (IMapDefinition)resSvc.GetResource(lr);
                             if (mdf.BaseMap != null)

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/FsEditorOptionPanel.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -112,20 +112,20 @@
 
         private void btnEditConfiguration_Click(object sender, EventArgs e)
         {
-            var content = _fs.GetConfigurationContent();
+            var content = _fs.GetConfigurationContent(_edsvc.CurrentConnection);
             var dlg = new XmlEditorDialog(_edsvc);
             dlg.XmlContent = content;
             if (dlg.ShowDialog() == DialogResult.OK)
             {
                 content = dlg.XmlContent;
-                _fs.SetConfigurationContent(content);
+                _fs.SetConfigurationContent(_edsvc.CurrentConnection, content);
                 OnResourceChanged();
             }
         }
 
         private void btnSpatialContexts_Click(object sender, EventArgs e)
         {
-            new SpatialContextsDialog(_fs).ShowDialog();
+            new SpatialContextsDialog(_fs.ResourceID, _edsvc.CurrentConnection.FeatureService).ShowDialog();
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/FusionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/FusionEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/FusionEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors;
 using Maestro.Editors.Fusion;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Drawing;
 using System.Windows.Forms;
 

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Base.Editor
 {
@@ -52,7 +53,7 @@
 
         public FusionEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.ApplicationDefinition.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.ApplicationDefinition.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -67,7 +68,7 @@
 
         public DrawingSourceEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.DrawingSource.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.DrawingSource.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -82,7 +83,7 @@
 
         public FeatureSourceEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.FeatureSource.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.FeatureSource.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -97,7 +98,7 @@
 
         public LayerDefinitionEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LayerDefinition.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -112,7 +113,7 @@
 
         public LoadProcedureEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LoadProcedure.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.LoadProcedure.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -127,7 +128,7 @@
 
         public MapDefinitionEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.MapDefinition.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -142,7 +143,7 @@
 
         public PrintLayoutEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.PrintLayout.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.PrintLayout.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -157,7 +158,7 @@
 
         public SymbolDefinitionEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.SymbolDefinition.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.SymbolDefinition.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()
@@ -172,7 +173,7 @@
 
         public WebLayoutEditorFactory()
         {
-            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString(), "1.0.0"); //NOXLATE
+            this.ResourceTypeAndVersion = new ResourceTypeDescriptor(ResourceTypes.WebLayout.ToString(), "1.0.0"); //NOXLATE
         }
 
         public IEditorViewContent Create()

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/IEditorViewContent.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/IEditorViewContent.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/IEditorViewContent.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 
 namespace Maestro.Base.Editor

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Editors;
 using Maestro.Editors.LayerDefinition;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System;
@@ -110,7 +111,7 @@
             foreach (var r in refs.ResourceId)
             {
                 var resId = new ResourceIdentifier(r);
-                if (resId.ResourceType == OSGeo.MapGuide.MaestroAPI.ResourceTypes.MapDefinition.ToString())
+                if (resId.ResourceType == ResourceTypes.MapDefinition.ToString())
                 {
                     var mdf = (IMapDefinition)resSvc.GetResource(r);
                     if (mdf.BaseMap != null)

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/MapDefinitionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/MapDefinitionEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/MapDefinitionEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Editors;
 using Maestro.Editors.MapDefinition;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System.ComponentModel;
 using System.Drawing;

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -62,12 +62,12 @@
 
         public override void RequestRefresh()
         {
-            _siteExp.RefreshModel(_editCopy.CurrentConnection.DisplayName);
+            _siteExp.RefreshModel(_conn.DisplayName);
         }
 
         public override void RequestRefresh(string folderId)
         {
-            _siteExp.RefreshModel(_editCopy.CurrentConnection.DisplayName, folderId);
+            _siteExp.RefreshModel(_conn.DisplayName, folderId);
         }
 
         public override void OpenResource(string resourceId)

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/WatermarkDefinitionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/WatermarkDefinitionEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/WatermarkDefinitionEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors;
 using Maestro.Editors.WatermarkDefinition;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Drawing;
 using System.Windows.Forms;
 

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -29,6 +29,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Resource.Validation;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -104,9 +105,9 @@
 
                 try
                 {
-                    var res = ResourceTypeRegistry.Deserialize(editor.XmlContent);
+                    var res = ObjectFactory.DeserializeXml(editor.XmlContent);
                     var conn = _edSvc.CurrentConnection;
-                    var context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+                    var context = new ResourceValidationContext(conn);
                     //We don't care about dependents, we just want to validate *this* resource
                     var resIssues = ResourceValidatorSet.Validate(context, res, false);
                     set.AddIssues(resIssues);
@@ -166,9 +167,8 @@
 
             //Copy any resource data
             var previewCopy = resSvc.GetResource(resId);
-            this.Resource.CopyResourceDataTo(previewCopy);
-
-            var conn = previewCopy.CurrentConnection;
+            var conn = _edSvc.CurrentConnection;
+            this.Resource.CopyResourceDataTo(conn, previewCopy);
             var previewer = ResourcePreviewerFactory.GetPreviewer(conn.ProviderName);
             if (previewer != null)
                 previewer.Preview(previewCopy, this.EditorService);

Modified: trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -683,6 +683,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
     <ProjectReference Include="..\Thirdparty\SharpDevelop\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj">
       <Project>{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}</Project>
       <Name>ICSharpCode.Core.WinForms</Name>

Modified: trunk/Tools/Maestro/Maestro.Base/Services/ClipboardService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/ClipboardService.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Services/ClipboardService.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Base.UI;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Base.Services
 {
@@ -60,7 +61,7 @@
         /// <param name="item"></param>
         public void Put(object item)
         {
-            Check.NotNull(item, "item");
+            Check.ArgumentNotNull(item, "item"); //NOXLATE
             lock (_clipLock)
             {
                 _item = item;

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -45,7 +45,7 @@
             {
                 var wb = Workbench.Instance;
                 var exp = wb.ActiveSiteExplorer;
-                var ds = ObjectFactory.CreateDrawingSource(conn);
+                var ds = ObjectFactory.CreateDrawingSource();
 
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
@@ -64,12 +64,12 @@
 
                 using (var stream = File.Open(file, FileMode.Open))
                 {
-                    ds.SetResourceData(fileName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
+                    conn.ResourceService.SetResourceData(ds.ResourceID, fileName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
                 }
 
-                ds.RegenerateSheetList();
+                ds.RegenerateSheetList(conn);
                 conn.ResourceService.SaveResource(ds); //Need to re-save for the next call to work
-                ds.UpdateExtents();
+                ds.UpdateExtents(conn);
 
                 return true;
             }

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -44,7 +44,7 @@
             {
                 var wb = Workbench.Instance;
                 var exp = wb.ActiveSiteExplorer;
-                var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF"); //NOXLATE
+                var fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF"); //NOXLATE
 
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
@@ -61,7 +61,7 @@
 
                 using (var stream = File.Open(file, FileMode.Open))
                 {
-                    fs.SetResourceData(fileName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
+                    conn.ResourceService.SetResourceData(fs.ResourceID, fileName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
                 }
 
                 return true;

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -44,7 +44,7 @@
             {
                 var wb = Workbench.Instance;
                 var exp = wb.ActiveSiteExplorer;
-                var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SHP"); //NOXLATE
+                var fs = ObjectFactory.CreateFeatureSource("OSGeo.SHP"); //NOXLATE
 
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
@@ -77,7 +77,7 @@
                         using (var stream = File.Open(fn, FileMode.Open))
                         {
                             string dataName = Path.GetFileName(fn);
-                            fs.SetResourceData(dataName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
+                            conn.ResourceService.SetResourceData(fs.ResourceID, dataName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
                         }
                     }
                 }

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -44,7 +44,7 @@
             {
                 var wb = Workbench.Instance;
                 var exp = wb.ActiveSiteExplorer;
-                var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SQLite"); //NOXLATE
+                var fs = ObjectFactory.CreateFeatureSource("OSGeo.SQLite"); //NOXLATE
 
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
@@ -61,7 +61,7 @@
 
                 using (var stream = File.Open(file, FileMode.Open))
                 {
-                    fs.SetResourceData(fileName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
+                    conn.ResourceService.SetResourceData(fs.ResourceID, fileName, OSGeo.MapGuide.ObjectModels.Common.ResourceDataType.File, stream);
                 }
 
                 return true;

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.IO;
 using System.Text;
@@ -49,7 +50,7 @@
                 try
                 {
                     //The easiest way to tell if this XML file is legit
-                    var res = ResourceTypeRegistry.Deserialize(xml);
+                    var res = ObjectFactory.DeserializeXml(xml);
                     string resId = folderId + name + "." + res.ResourceType.ToString(); //NOXLATE
                     while (conn.ResourceService.ResourceExists(resId))
                     {

Modified: trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/ApplicationDefinitionItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -57,7 +57,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var flex = ObjectFactory.CreateFlexibleLayout(conn, FusionTemplateNames.Slate);
+                    var flex = Utility.CreateFlexibleLayout(conn, FusionTemplateNames.Slate);
                     var grp = flex.MapSet.GetGroupAt(0);
                     var map = grp.GetMapAt(0);
 

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/DrawingLayerDefinitionItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -49,7 +49,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var ldf = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Drawing, new Version(1, 0, 0));
+                    var ldf = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Drawing, new Version(1, 0, 0));
                     ldf.SubLayer.ResourceId = picker.ResourceID;
                     var dl = ((IDrawingLayerDefinition)ldf.SubLayer);
                     dl.LayerFilter = string.Empty;

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/DrawingSourceItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/DrawingSourceItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/DrawingSourceItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -40,7 +40,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateDrawingSource(conn);
+            return ObjectFactory.CreateDrawingSource();
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -47,7 +47,7 @@
                 dlg.Filter = string.Format(OSGeo.MapGuide.MaestroAPI.Strings.GenericFilter, OSGeo.MapGuide.MaestroAPI.Strings.PickDwf, "dwf"); //NOXLATE
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Dwf, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(LoadType.Dwf, dlg.FileNames);
                     if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
                     {
                         proc.SubType.RootPath = startPoint;

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/FeatureSourceItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/FeatureSourceItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/FeatureSourceItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -50,7 +50,7 @@
 
             if (provider != null)
             {
-                return ObjectFactory.CreateFeatureSource(conn, Utility.StripVersionFromProviderName(provider.Name));
+                return ObjectFactory.CreateFeatureSource(Utility.StripVersionFromProviderName(provider.Name));
             }
             return null;
         }

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/ItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/ItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/ItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Drawing;
 

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/MapDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/MapDefinitionItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/MapDefinitionItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -41,7 +41,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), Strings.NewMap);
+            return ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), Strings.NewMap);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/PrintLayoutItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/PrintLayoutItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/PrintLayoutItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -40,7 +40,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreatePrintLayout(conn);
+            return ObjectFactory.CreatePrintLayout();
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/RasterLayerDefinitionItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -57,7 +57,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Raster, new Version(1, 0, 0));
+                    var lyr = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Raster, new Version(1, 0, 0));
                     var rl = (IRasterLayerDefinition)lyr.SubLayer;
                     rl.ResourceId = picker.ResourceID;
                     //Stub these for now, validation will ensure this never makes it

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -47,7 +47,7 @@
                 dlg.Filter = string.Format(OSGeo.MapGuide.MaestroAPI.Strings.GenericFilter, OSGeo.MapGuide.MaestroAPI.Strings.PickSdf, "sdf"); //NOXLATE
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sdf, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(LoadType.Sdf, dlg.FileNames);
                     if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
                     {
                         proc.SubType.RootPath = startPoint;

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -47,7 +47,7 @@
                 dlg.Filter = string.Format(OSGeo.MapGuide.MaestroAPI.Strings.GenericFilter, OSGeo.MapGuide.MaestroAPI.Strings.PickShp, "shp"); //NOXLATE
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Shp, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(LoadType.Shp, dlg.FileNames);
                     if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
                     {
                         proc.SubType.RootPath = startPoint;

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/SymbolDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/SymbolDefinitionItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/SymbolDefinitionItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -49,7 +49,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateSimpleSymbol(conn, new Version(1, 0, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
+            return ObjectFactory.CreateSimpleSymbol(new Version(1, 0, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
         }
     }
 
@@ -74,7 +74,7 @@
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
-            return ObjectFactory.CreateCompoundSymbol(conn, new Version(1, 0, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
+            return ObjectFactory.CreateCompoundSymbol(new Version(1, 0, 0), Strings.DefaultSymbolName, Strings.DefaultSymbolDescription);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.IO;
 using Res = Maestro.Base.Properties.Resources;
 
@@ -54,14 +55,13 @@
             this.Name = name;
             this.TemplatePath = templatePath;
 
-            _res = ResourceTypeRegistry.Deserialize(File.ReadAllText(templatePath));
+            _res = ObjectFactory.DeserializeXml(File.ReadAllText(templatePath));
             this.ResourceType = _res.ResourceType.ToString();
         }
 
         public override IResource CreateItem(string startPoint, IServerConnection conn)
         {
             IResource res = (IResource)_res.Clone();
-            res.CurrentConnection = conn;
             return res;
         }
     }

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -48,7 +48,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 0, 0));
+                    var lyr = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 0, 0));
                     var vl = (IVectorLayerDefinition)lyr.SubLayer;
                     vl.ResourceId = picker.ResourceID;
                     //Stub these for now, validation will ensure this never makes it

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/WebLayoutItemTemplate.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -48,7 +48,7 @@
                 picker.SetStartingPoint(startPoint);
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), string.Empty);
+                    var wl = ObjectFactory.CreateWebLayout(new Version(1, 0, 0), string.Empty);
                     wl.Map.ResourceId = picker.ResourceID;
                     return wl;
                 }

Modified: trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/OpenResourceIdDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Windows.Forms;

Modified: trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/Packaging/CreatePackageDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.IO;

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ProfilingDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ProfilingDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ProfilingDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -102,7 +102,7 @@
         {
             if (m_tempmap == null)
             {
-                IMapDefinition m = ObjectFactory.CreateMapDefinition(m_connection, string.Empty);
+                IMapDefinition m = Utility.CreateMapDefinition(m_connection, string.Empty);
                 m.CoordinateSystem = @"LOCAL_CS[""*XY-M*"", LOCAL_DATUM[""*X-Y*"", 10000], UNIT[""Meter"", 1], AXIS[""X"", EAST], AXIS[""Y"", NORTH]]"; //NOXLATE
                 m.SetExtents(-1, -1, 1, 1);
 
@@ -132,7 +132,7 @@
             {
                 try
                 {
-                    IMapDefinition mdef = ObjectFactory.CreateMapDefinition(m_connection, string.Empty);
+                    IMapDefinition mdef = Utility.CreateMapDefinition(m_connection, string.Empty);
                     //We cannot flub this anymore. AIMS 2012 demands the Map Definition id specified checks out
                     mdef.ResourceID = "Session:" + m_connection.SessionID + "//ProfileTest.MapDefinition"; //NOXLATE
                     m_connection.ResourceService.SaveResource(mdef);
@@ -201,7 +201,7 @@
 
                                 //Create a runtime map just containing this particular layer at this particular scale range
                                 //We are profiling the stylization settings for this layer
-                                var mdf = ObjectFactory.CreateMapDefinition(m_connection, "");
+                                var mdf = Utility.CreateMapDefinition(m_connection, "");
                                 if (lst.SpatialContext != null && lst.SpatialContext.Count >= 1)
                                 {
                                     mdf.CoordinateSystem = lst.SpatialContext[0].CoordinateSystemWkt;
@@ -280,7 +280,7 @@
                         if (backgroundWorker.CancellationPending)
                             return;
 
-                        ILayerDefinition ldef = (ILayerDefinition)mdef.CurrentConnection.ResourceService.GetResource(ml.ResourceId);
+                        ILayerDefinition ldef = (ILayerDefinition)m_connection.ResourceService.GetResource(ml.ResourceId);
                         ProfileLayerDefinition(ldef);
                     }
                     catch (Exception ex)
@@ -303,7 +303,7 @@
                                     if (backgroundWorker.CancellationPending)
                                         return;
 
-                                    ILayerDefinition ldef = (ILayerDefinition)mdef.CurrentConnection.ResourceService.GetResource(ml.ResourceId);
+                                    ILayerDefinition ldef = (ILayerDefinition)m_connection.ResourceService.GetResource(ml.ResourceId);
                                     ProfileLayerDefinition(ldef);
                                 }
                                 catch (Exception ex)

Modified: trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Base.Services;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Windows.Forms;
 
 namespace Maestro.Base.UI

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Windows.Forms;
 
@@ -135,7 +136,7 @@
             var ed = e.View as IEditorViewContent;
             if (ed != null && !ed.IsNew)
             {
-                var conn = ed.Resource.CurrentConnection;
+                var conn = ed.EditorService.CurrentConnection;
                 var idx = _cmbActiveConnections.Items.IndexOf(conn.DisplayName);
                 if (idx >= 0)
                 {

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -817,7 +817,7 @@
                 System.Globalization.CultureInfo ic = System.Globalization.CultureInfo.InvariantCulture;
                 ILayerDefinition ldef = (ILayerDefinition)m_connection.ResourceService.GetResource(m_resourceId);
                 string csWkt;
-                var env = ldef.GetSpatialExtent(true, out csWkt);
+                var env = ldef.GetSpatialExtent(m_connection, true, out csWkt);
                 //TODO: Convert wkt to EPSG code and use that?
                 //TODO: Convert to lon/lat
 
@@ -858,7 +858,8 @@
                 bool failures = false;
 
                 IEnvelope env = null;
-                foreach (ClassDefinition scm in fs.Describe().AllClasses)
+                var desc = m_connection.FeatureService.DescribeFeatureSource(fs.ResourceID);
+                foreach (ClassDefinition scm in desc.AllClasses)
                 {
                     foreach (var col in scm.Properties)
                     {

Modified: trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -32,6 +32,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.CrossConnection;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -77,7 +78,7 @@
             {
                 if (ed.Resource != null && ed.EditorService != null)
                 {
-                    FocusOnNode(ed.Resource.CurrentConnection.DisplayName, ed.EditorService.ResourceID);
+                    FocusOnNode(ed.EditorService.CurrentConnection.DisplayName, ed.EditorService.ResourceID);
                 }
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Linq;

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/EditorWindow.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Preview;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.IO;
 using System.Text;

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/RepointerDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Windows.Forms;

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryTreeModel.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryTreeModel.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryTreeModel.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryView.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryView.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/RepositoryView.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Windows.Forms;

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ResourceDataCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ResourceDataCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ResourceDataCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;
@@ -193,9 +194,8 @@
         {
             using (var fs = new FileStream(fileName, FileMode.Open))
             {
-                //_edSvc.AddResourceData(Path.GetFileName(open.FileName), ResourceDataType.File, fs);
                 IResource res = _edSvc.GetEditedResource();
-                res.SetResourceData(Path.GetFileName(fileName), ResourceDataType.File, fs);
+                _edSvc.CurrentConnection.ResourceService.SetResourceData(res.ResourceID, Path.GetFileName(fileName), ResourceDataType.File, fs);
             }
         }
 
@@ -240,7 +240,7 @@
                         {
                             //_edSvc.RemoveResourceData(item.Name);
                             IResource res = _edSvc.GetEditedResource();
-                            res.DeleteResourceData(item.Name);
+                            _edSvc.CurrentConnection.ResourceService.DeleteResourceData(res.ResourceID, item.Name);
                             _data.Remove(item);
                         }
                         BindResourceList();
@@ -273,7 +273,7 @@
                             BusyWaitDelegate method = () =>
                             {
                                 IResource res = _edSvc.GetEditedResource();
-                                var stream = res.GetResourceData(item.Name);
+                                var stream = _edSvc.CurrentConnection.ResourceService.GetResourceData(res.ResourceID, item.Name);
                                 using (var fs = File.OpenWrite(fn))
                                 {
                                     Utility.CopyStream(stream, fs);

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ResourcePicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ResourcePicker.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ResourcePicker.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;
@@ -46,7 +47,7 @@
             RepositoryIcons.PopulateImageList(folderImageList);
         }
 
-        private IResourceService _resSvc;
+        private IServerConnection _conn;
 
         private bool _resourceMode = false;
 
@@ -61,7 +62,7 @@
         /// <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)
+            : this(conn, mode, conn.Capabilities.SupportedResourceTypes)
         { }
 
         /// <summary>
@@ -73,16 +74,16 @@
         /// 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="conn">The server connection</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)
+        public ResourcePicker(IServerConnection conn, ResourcePickerMode mode, string[] allowedResourceTypes)
             : this()
         {
-            _resSvc = resSvc;
+            _conn = conn;
             _resTypes = allowedResourceTypes;
             cmbResourceFilter.DataSource = _resTypes;
-            repoView.Init(_resSvc, true, false);
+            repoView.Init(conn.ResourceService, true, false);
             repoView.ItemSelected += OnFolderSelected;
             this.UseFilter = true;
             this.Mode = mode;
@@ -101,7 +102,7 @@
         /// <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)
+            : this(conn, resTypeFilter, mode, conn.Capabilities.SupportedResourceTypes)
         { }
 
         /// <summary>
@@ -113,12 +114,12 @@
         /// 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="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>
         /// <param name="allowedResourceTypes">The array of allowed resource types</param>
-        public ResourcePicker(IResourceService resSvc, string resTypeFilter, ResourcePickerMode mode, string[] allowedResourceTypes)
-            : this(resSvc, mode, allowedResourceTypes)
+        public ResourcePicker(IServerConnection conn, string resTypeFilter, ResourcePickerMode mode, string[] allowedResourceTypes)
+            : this(conn, mode, allowedResourceTypes)
         {
             if (mode == ResourcePickerMode.OpenFolder)
                 throw new InvalidOperationException(string.Format(Strings.ModeNotAllowed, mode));
@@ -148,7 +149,7 @@
                 throw new ArgumentException(string.Format(Strings.NotAFolder, folderId));
 
             // Library:// will *always* exist, so fallback to this if given folder doesn't check out
-            if (!_resSvc.ResourceExists(folderId))
+            if (!_conn.ResourceService.ResourceExists(folderId))
                 folderId = StringConstants.RootIdentifier;
 
             this.ActiveControl = repoView;
@@ -288,7 +289,7 @@
         {
             if (_mode == ResourcePickerMode.OpenResource)
             {
-                if (!_resSvc.ResourceExists(txtResourceId.Text))
+                if (!_conn.ResourceService.ResourceExists(txtResourceId.Text))
                 {
                     MessageBox.Show(Strings.ResourceDoesntExist);
                     return;
@@ -317,7 +318,7 @@
                         }
                     }
 
-                    if (_resSvc.ResourceExists(txtResourceId.Text))
+                    if (_conn.ResourceService.ResourceExists(txtResourceId.Text))
                     {
                         if (MessageBox.Show(Strings.OverwriteResource, Strings.SaveResource, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                             return;
@@ -342,9 +343,9 @@
                 {
                     ResourceList list = null;
                     if (!this.UseFilter)
-                        list = _resSvc.GetRepositoryResources(folder.ResourceId, 1);
+                        list = _conn.ResourceService.GetRepositoryResources(folder.ResourceId, 1);
                     else
-                        list = _resSvc.GetRepositoryResources(folder.ResourceId, this.Filter.ToString(), 1);
+                        list = _conn.ResourceService.GetRepositoryResources(folder.ResourceId, this.Filter.ToString(), 1);
 
                     PopulateDocumentList(list);
                 }
@@ -483,8 +484,8 @@
         {
             BusyWaitDialog.Run(Strings.PrgPreparingResourcePreview, () =>
             {
-                var res = _resSvc.GetResource(doc.ResourceId);
-                return DefaultResourcePreviewer.GenerateSymbolDefinitionPreview(res.CurrentConnection, res, picPreview.Width, picPreview.Height);
+                var res = _conn.ResourceService.GetResource(doc.ResourceId);
+                return DefaultResourcePreviewer.GenerateSymbolDefinitionPreview(_conn, res, picPreview.Width, picPreview.Height);
             }, (res, ex) =>
             {
                 if (ex != null)

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/SymbolPicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/SymbolPicker.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/SymbolPicker.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Resource.Conversion;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -63,7 +64,7 @@
         public SymbolPicker(string symbolLibrary, IServerConnection conn)
             : this(conn)
         {
-            if (ResourceIdentifier.GetResourceTypeAsString(symbolLibrary) != OSGeo.MapGuide.MaestroAPI.ResourceTypes.SymbolLibrary.ToString())
+            if (ResourceIdentifier.GetResourceTypeAsString(symbolLibrary) != ResourceTypes.SymbolLibrary.ToString())
                 throw new ArgumentException(string.Format(Strings.ErrorInvalidSymbolLibraryResourceId, symbolLibrary));
 
             txtSymbolLibrary.Text = symbolLibrary;

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/XmlContentErrorDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/XmlContentErrorDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/XmlContentErrorDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.IO;
 using System.Windows.Forms;
@@ -90,8 +91,8 @@
         /// <param name="ex"></param>
         public static void Show(Exception ex)
         {
-            Check.NotNull(ex, "ex"); //NOXLATE
-            Check.NotNull(ex.Data[Utility.XML_EXCEPTION_KEY], "ex.Data[Utility.XML_EXCEPTION_KEY]"); //NOXLATE
+            Check.ArgumentNotNull(ex, "ex"); //NOXLATE
+            Check.ArgumentNotNull(ex.Data[Utility.XML_EXCEPTION_KEY], "ex.Data[Utility.XML_EXCEPTION_KEY]"); //NOXLATE
             string origXmlContent = ex.Data[Utility.XML_EXCEPTION_KEY].ToString();
             var diag = new XmlContentErrorDialog();
             diag._ex = ex;

Modified: trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Diff/CompareResourceDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Resource.Comparison;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Windows.Forms;
 

Modified: trunk/Tools/Maestro/Maestro.Editors/Diff/XmlCompareUtil.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Diff/XmlCompareUtil.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Diff/XmlCompareUtil.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Resource.Comparison;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System.IO;
 using System.Xml;
 
@@ -76,8 +77,8 @@
             var sourceDoc = new XmlDocument();
             var targetDoc = new XmlDocument();
 
-            using (var sourceStream = ResourceTypeRegistry.Serialize(source))
-            using (var targetStream = ResourceTypeRegistry.Serialize(target))
+            using (var sourceStream = ObjectFactory.Serialize(source))
+            using (var targetStream = ObjectFactory.Serialize(target))
             {
                 sourceDoc.Load(sourceStream);
                 targetDoc.Load(targetStream);

Modified: trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -78,11 +78,11 @@
                 _edSvc.SyncSessionCopy();
 
                 //Re-populate sheets
-                _dws.RegenerateSheetList();
+                _dws.RegenerateSheetList(_edSvc.CurrentConnection);
 
                 _edSvc.SyncSessionCopy();
                 //Re-calc extents
-                _dws.UpdateExtents();
+                _dws.UpdateExtents(_edSvc.CurrentConnection);
                 OnResourceChanged();
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -143,7 +143,7 @@
                 }
             }
 
-            var scList = _fs.GetSpatialInfo(false);
+            var scList = _ed.CurrentConnection.FeatureService.GetSpatialContextInfo(_fs.ResourceID, false);
             foreach (var sc in scList.SpatialContext)
             {
                 _fs.AddSpatialContextOverride(sc.Name, sc.CoordinateSystemWkt);

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/CreateLayersFromFeatureSourceDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Generic;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Windows.Forms;

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Common;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using System;
 using System.Collections.Generic;
@@ -53,9 +54,9 @@
         public JoinSettings(string primaryFeatureSource, string primaryClass, IAttributeRelation rel)
             : this()
         {
-            Check.NotNull(rel, "rel"); //NOXLATE
-            Check.NotNull(primaryClass, "primaryClass"); //NOXLATE
-            Check.NotNull(primaryFeatureSource, "primaryFeatureSource"); //NOXLATE
+            Check.ArgumentNotNull(rel, "rel"); //NOXLATE
+            Check.ArgumentNotNull(primaryClass, "primaryClass"); //NOXLATE
+            Check.ArgumentNotNull(primaryFeatureSource, "primaryFeatureSource"); //NOXLATE
             _primaryFeatureSource = primaryFeatureSource;
             _primaryClass = primaryClass;
 
@@ -84,7 +85,7 @@
 
         private void btnBrowse_Click(object sender, EventArgs e)
         {
-            string resId = _edSvc.SelectResource(OSGeo.MapGuide.MaestroAPI.ResourceTypes.FeatureSource.ToString());
+            string resId = _edSvc.SelectResource(ResourceTypes.FeatureSource.ToString());
             if (!string.IsNullOrEmpty(resId))
             {
                 txtFeatureSource.Text = resId;

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -355,7 +355,7 @@
                 ext = e.Node.Parent.Tag as IFeatureSourceExtension;
                 if (ext != null)
                 {
-                    ClassDefinition cls = _fs.GetClass(ext.FeatureClass); //TODO: Cache?
+                    ClassDefinition cls = _edSvc.CurrentConnection.FeatureService.GetClassDefinition(_fs.ResourceID, ext.FeatureClass); //TODO: Cache?
                     if (cls != null)
                     {
                         var ctl = new CalculationSettings(_edSvc, cls, _fs, calc);
@@ -375,9 +375,11 @@
         private string[] GetAllClassNames()
         {
             var names = new List<string>();
-            foreach (var sn in _fs.GetSchemaNames())
+            var schemaNames = _edSvc.CurrentConnection.FeatureService.GetSchemas(_fs.ResourceID);
+            foreach (var sn in schemaNames)
             {
-                names.AddRange(_fs.GetClassNames(sn));
+                var classNames = _edSvc.CurrentConnection.FeatureService.GetClassNames(_fs.ResourceID, sn);
+                names.AddRange(classNames);
             }
             return names.ToArray();
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -59,7 +59,7 @@
 
         internal void InitDefaults()
         {
-            string xml = _fs.GetConfigurationContent();
+            string xml = _fs.GetConfigurationContent(_service.CurrentConnection);
             if (!string.IsNullOrEmpty(xml))
             {
                 try
@@ -172,10 +172,10 @@
             var pdlg = new ProgressDialog();
             pdlg.CancelAbortsThread = true;
             var worker = new ProgressDialog.DoBackgroundWork(UpdateConfigurationDocument);
-            var result = (UpdateConfigResult)pdlg.RunOperationAsync(null, worker, _conf, _fs.CurrentConnection, toAdd, toRemove, isAlias);
+            var result = (UpdateConfigResult)pdlg.RunOperationAsync(null, worker, _conf, _service.CurrentConnection, toAdd, toRemove, isAlias);
             if (result.Added.Count > 0 || result.Removed.Count > 0)
             {
-                _fs.SetConfigurationContent(_conf.ToXml());
+                _fs.SetConfigurationContent(_service.CurrentConnection, _conf.ToXml());
                 List<ListViewItem> remove = new List<ListViewItem>();
                 foreach (ListViewItem lvi in lstView.Items)
                 {
@@ -286,13 +286,13 @@
                 //Create a temp feature source to attempt interrogation of extents
                 var values = new NameValueCollection();
                 values["DefaultRasterFileLocation"] = add; //NOXLATE
-                var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.Gdal", values); //NOXLATE
+                var fs = ObjectFactory.CreateFeatureSource("OSGeo.Gdal", values); //NOXLATE
 
                 var resId = new ResourceIdentifier("Session:" + conn.SessionID + "//" + Guid.NewGuid() + ".FeatureSource"); //NOXLATE
                 fs.ResourceID = resId.ToString();
                 conn.ResourceService.SaveResource(fs);
 
-                var scList = fs.GetSpatialInfo(false);
+                var scList = conn.FeatureService.GetSpatialContextInfo(fs.ResourceID, false);
 
                 var raster = new GdalRasterItem();
 

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/GdalProviderCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/GdalProviderCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/GdalProviderCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -90,7 +90,7 @@
 
                 _sing.Bind(service);
                 _comp.Bind(service);
-                if (!string.IsNullOrEmpty(_fs.GetConfigurationContent()))
+                if (!string.IsNullOrEmpty(_fs.GetConfigurationContent(service.CurrentConnection)))
                     rdComposite.Checked = true;
                 else
                     OnTypeCheckedChanged(null, null); //It is already checked by default
@@ -130,7 +130,7 @@
             txtStatus.Text = string.Empty;
             //Flush back to session before testing
             _service.SyncSessionCopy();
-            string result = _fs.TestConnection();
+            var result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
             txtStatus.Text = string.Format(Strings.FdoConnectionStatus, result);
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/SingleFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/SingleFileCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/SingleFileCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using Maestro.Editors.Common;
+using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using System;
 using System.ComponentModel;
@@ -37,6 +38,7 @@
         }
 
         private IFeatureSource _fs;
+        private IServerConnection _conn;
 
         private bool _init = false;
 
@@ -47,6 +49,7 @@
                 _init = true;
                 service.RegisterCustomNotifier(this);
                 _fs = (IFeatureSource)service.GetEditedResource();
+                _conn = service.CurrentConnection;
 
                 InitDefaults();
             }
@@ -87,7 +90,7 @@
 
         private void btnBrowseAliasFile_Click(object sender, EventArgs e)
         {
-            using (var picker = new UnmanagedFileBrowser(_fs.CurrentConnection.ResourceService))
+            using (var picker = new UnmanagedFileBrowser(_conn.ResourceService))
             {
                 picker.SelectFoldersOnly = false;
                 if (picker.ShowDialog() == DialogResult.OK)
@@ -99,7 +102,7 @@
 
         private void btnBrowseAliasDir_Click(object sender, EventArgs e)
         {
-            using (var picker = new UnmanagedFileBrowser(_fs.CurrentConnection.ResourceService))
+            using (var picker = new UnmanagedFileBrowser(_conn.ResourceService))
             {
                 picker.SelectFoldersOnly = true;
                 if (picker.ShowDialog() == DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -390,7 +390,7 @@
                 {
                     _fs.SetConnectionProperty(diag.UserProperty, StringConstants.MgUsernamePlaceholder);
                     _fs.SetConnectionProperty(diag.PasswordProperty, StringConstants.MgPasswordPlaceholder);
-                    _fs.SetEncryptedCredentials(diag.Username, diag.Password);
+                    _fs.SetEncryptedCredentials(_service.CurrentConnection, diag.Username, diag.Password);
                     _service.SyncSessionCopy();
                     InitGrid();
                     resDataCtrl.Init(_service);

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/OdbcProviderCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/OdbcProviderCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/OdbcProviderCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -28,6 +28,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.SchemaOverrides;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using System;
 using System.ComponentModel;
@@ -215,7 +216,7 @@
                 _fs.ApplyConnectionProperties(props);
                 //Flush back to session before testing
                 _service.SyncSessionCopy();
-                string result = _fs.TestConnection();
+                string result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
 
                 txtConnectionStatus.Text = string.Format(Strings.FdoConnectionStatus, result);
             }
@@ -240,7 +241,7 @@
             //Flush back to session before testing
             _service.SyncSessionCopy();
 
-            string result = _fs.TestConnection();
+            var result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
             if (!result.ToLower().Equals("true")) //NOXLATE
             {
                 MessageBox.Show(string.Format(Strings.InvalidConnection, result), Strings.TitleError);
@@ -256,7 +257,7 @@
             {
                 if (string.IsNullOrEmpty(_defaultSchemaName))
                 {
-                    var names = _fs.GetSchemaNames();
+                    var names = _service.CurrentConnection.FeatureService.GetSchemas(_fs.ResourceID);
                     if (names.Length == 1)
                     {
                         _defaultSchemaName = names[0];
@@ -268,7 +269,7 @@
                     }
                 }
 
-                string xml = _fs.GetConfigurationContent();
+                string xml = _fs.GetConfigurationContent(_service.CurrentConnection);
                 if (!string.IsNullOrEmpty(xml))
                 {
                     _doc = (OdbcConfigurationDocument)ConfigurationDocument.LoadXml(xml);
@@ -294,7 +295,7 @@
                         sc.CoordinateSystemWkt = diag.CoordinateSystemWkt;
                     }
                     string updatedContent = _doc.ToXml();
-                    _fs.SetConfigurationContent(updatedContent);
+                    _fs.SetConfigurationContent(_service.CurrentConnection, updatedContent);
                     OnResourceChanged();
                 }
             }
@@ -320,8 +321,8 @@
 
             try
             {
-                var schemaName = _fs.GetSchemaNames()[0];
-                var classNames = _fs.GetClassNames(schemaName);
+                var schemaName = _service.CurrentConnection.FeatureService.GetSchemas(_fs.ResourceID)[0];
+                var classNames = _service.CurrentConnection.FeatureService.GetClassNames(_fs.ResourceID, schemaName);
                 var diag = new FilteredLogicalSchemaDialog(classNames);
                 if (diag.ShowDialog() == DialogResult.Cancel)
                     throw new ApplicationException(Strings.TextNoItemSelected);
@@ -331,10 +332,10 @@
                 BusyWaitDelegate worker = () =>
                 {
                     classNames = names.Select(x => x.Contains(":") ? x.Split(':')[1] : x).ToArray(); //NOXLATE
-                    var schema = _fs.CurrentConnection.FeatureService.DescribeFeatureSourcePartial(_fs.ResourceID, schemaName, classNames);
+                    var schema = _service.CurrentConnection.FeatureService.DescribeFeatureSourcePartial(_fs.ResourceID, schemaName, classNames);
 
                     _doc.AddSchema(schema); //Only one schema is supported by ODBC so this is ok
-                    var scList = _fs.GetSpatialInfo(false);
+                    var scList = _service.CurrentConnection.FeatureService.GetSpatialContextInfo(_fs.ResourceID, false);
                     foreach (var sc in scList.SpatialContext)
                     {
                         _doc.AddSpatialContext(sc);
@@ -362,7 +363,7 @@
 
         private void DoDocumentReset()
         {
-            _fs.SetConfigurationContent(null);
+            _fs.SetConfigurationContent(_service.CurrentConnection, null);
             _fs.ConfigurationDocument = null;
             _service.SyncSessionCopy();
             _doc = null;
@@ -371,7 +372,7 @@
             if (null != _doc)
             {
                 _fs.ConfigurationDocument = "config.xml";
-                _fs.SetConfigurationContent(_doc.ToXml());
+                _fs.SetConfigurationContent(_service.CurrentConnection, _doc.ToXml());
                 MessageBox.Show(Strings.ConfigurationDocumentReset);
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/ConnectionStringCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/ConnectionStringCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Odbc/SubEditors/ConnectionStringCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -91,7 +91,7 @@
                     if (diag.ShowDialog() == DialogResult.OK)
                     {
                         var fs = (IFeatureSource)_service.GetEditedResource();
-                        fs.SetEncryptedCredentials(diag.Username, diag.Password);
+                        fs.SetEncryptedCredentials(_service.CurrentConnection, diag.Username, diag.Password);
                         //Bit of a hack as parent does a 64-bit driver check to determine
                         //which NameValueCollection to return from the child, but we can
                         //get away with this because the same NameValueCollection is returned

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Rdbms/RdbmsBaseCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -74,7 +74,7 @@
             //and auto trigger dirty state.
             if (!_service.IsNew)
             {
-                txtUsername.Text = _fs.GetEncryptedUsername() ?? _fs.GetConnectionProperty("Username"); //NOXLATE
+                txtUsername.Text = _fs.GetEncryptedUsername(_service.CurrentConnection) ?? _fs.GetConnectionProperty("Username"); //NOXLATE
                 txtPassword.Text = GenerateRandomFakeString();
             }
 
@@ -153,7 +153,7 @@
                     {
                         _fs.SetConnectionProperty("Username", StringConstants.MgUsernamePlaceholder); //NOXLATE
                         _fs.SetConnectionProperty("Password", StringConstants.MgPasswordPlaceholder); //NOXLATE
-                        _fs.SetEncryptedCredentials(username, password);
+                        _fs.SetEncryptedCredentials(_service.CurrentConnection, username, password);
                         _service.SyncSessionCopy();
                     }
                 }
@@ -164,7 +164,7 @@
                 _fs.SetConnectionProperty("Password", null); //NOXLATE
                 try
                 {
-                    _fs.DeleteResourceData(StringConstants.MgUserCredentialsResourceData);
+                    _service.CurrentConnection.ResourceService.DeleteResourceData(_fs.ResourceID, StringConstants.MgUserCredentialsResourceData);
                 }
                 catch { }
                 _service.SyncSessionCopy();
@@ -212,7 +212,8 @@
             using (new WaitCursor(this))
             {
                 WriteEncryptedCredentials();
-                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, _fs.TestConnection());
+                var result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
+                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, result);
             }
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/SQLite/SQLiteFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/SQLite/SQLiteFileCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/SQLite/SQLiteFileCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -103,7 +103,8 @@
             using (new WaitCursor(this))
             {
                 _service.SyncSessionCopy();
-                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, _fs.TestConnection());
+                var result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
+                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, result);
             }
         }
     }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -108,7 +108,8 @@
             using (new WaitCursor(this))
             {
                 _service.SyncSessionCopy();
-                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, _fs.TestConnection());
+                var result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
+                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, result);
             }
         }
     }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -136,7 +136,8 @@
             using (new WaitCursor(this))
             {
                 _service.SyncSessionCopy();
-                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, _fs.TestConnection());
+                var result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
+                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, result);
             }
         }
     }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsAdvancedConfigurationDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -46,7 +46,7 @@
             _service = service;
             _fs = (IFeatureSource)_service.GetEditedResource();
             txtFeatureServer.Text = _fs.GetConnectionProperty("FeatureServer"); //NOXLATE
-            string xml = _fs.GetConfigurationContent();
+            string xml = _fs.GetConfigurationContent(service.CurrentConnection);
             if (!string.IsNullOrEmpty(xml))
             {
                 try
@@ -71,9 +71,9 @@
         private WmsConfigurationDocument BuildDefaultWmsDocument()
         {
             var doc = new WmsConfigurationDocument();
-            var contexts = _fs.GetSpatialInfo(false);
-            var schemaName = _fs.GetSchemaNames()[0];
-            var clsNames = _fs.GetClassNames(schemaName);
+            var contexts = _service.CurrentConnection.FeatureService.GetSpatialContextInfo(_fs.ResourceID, false);
+            var schemaName = _service.CurrentConnection.FeatureService.GetSchemas(_fs.ResourceID)[0];
+            var clsNames = _service.CurrentConnection.FeatureService.GetClassNames(_fs.ResourceID, schemaName);
             var schema = new FeatureSchema(schemaName, string.Empty);
             doc.AddSchema(schema);
 
@@ -134,7 +134,7 @@
 
         private void btnSave_Click(object sender, EventArgs e)
         {
-            _fs.SetConfigurationContent(_config.ToXml());
+            _fs.SetConfigurationContent(_service.CurrentConnection, _config.ToXml());
             this.DialogResult = DialogResult.OK;
         }
 
@@ -257,7 +257,7 @@
             try
             {
                 _config = (WmsConfigurationDocument)_service.CurrentConnection.FeatureService.GetSchemaMapping("OSGeo.WMS", _fs.ConnectionString); //NOXLATE
-                string defaultScName = _config.GetDefaultSpatialContext(_fs);
+                string defaultScName = _config.GetDefaultSpatialContext(_fs, _service.CurrentConnection);
                 _config.EnsureRasterProperties(defaultScName);
                 _config.EnsureConsistency();
             }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsProviderCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsProviderCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Wms/WmsProviderCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -99,7 +99,8 @@
             using (new WaitCursor(this))
             {
                 WriteEncryptedCredentials();
-                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, _fs.TestConnection());
+                var result = _service.CurrentConnection.FeatureService.TestConnection(_fs.ResourceID);
+                txtStatus.Text = string.Format(Strings.FdoConnectionStatus, result);
             }
         }
 
@@ -114,7 +115,7 @@
                 {
                     _fs.SetConnectionProperty("Username", StringConstants.MgUsernamePlaceholder); //NOXLATE
                     _fs.SetConnectionProperty("Password", StringConstants.MgPasswordPlaceholder); //NOXLATE
-                    _fs.SetEncryptedCredentials(username, password);
+                    _fs.SetEncryptedCredentials(_service.CurrentConnection, username, password);
                     _service.SyncSessionCopy();
                 }
             }
@@ -124,7 +125,7 @@
                 _fs.SetConnectionProperty("Password", null); //NOXLATE
                 try
                 {
-                    _fs.DeleteResourceData(StringConstants.MgUserCredentialsResourceData);
+                    _service.CurrentConnection.ResourceService.DeleteResourceData(_fs.ResourceID, StringConstants.MgUserCredentialsResourceData);
                 }
                 catch { }
                 _service.SyncSessionCopy();
@@ -137,7 +138,7 @@
             var diag = new WmsAdvancedConfigurationDialog(_service);
             if (diag.ShowDialog() == DialogResult.OK)
             {
-                _fs.SetConfigurationContent(diag.Document.ToXml());
+                _fs.SetConfigurationContent(_service.CurrentConnection, diag.Document.ToXml());
                 OnResourceChanged();
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/SpatialContextsDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/SpatialContextsDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/SpatialContextsDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -40,18 +40,6 @@
         /// <summary>
         /// Initializes a new instance of the <see cref="SpatialContextsDialog"/> class.
         /// </summary>
-        /// <param name="fs">The fs.</param>
-        public SpatialContextsDialog(IFeatureSource fs)
-            : this()
-        {
-            lblFeatureSource.Text = fs.ResourceID;
-            grdSpatialContexts.DataSource = fs.GetSpatialInfo(false).SpatialContext;
-            lblCount.Text = string.Format(Strings.SpatialContextsFound, grdSpatialContexts.Rows.Count);
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SpatialContextsDialog"/> class.
-        /// </summary>
         /// <param name="fsId">The fs id.</param>
         /// <param name="featSvc">The feat SVC.</param>
         public SpatialContextsDialog(string fsId, IFeatureService featSvc)

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -98,7 +98,7 @@
 
             try
             {
-                var conn = _flexLayout.CurrentConnection;
+                var conn = _edsvc.CurrentConnection;
                 string baseUrl = conn.GetCustomProperty("BaseUrl").ToString(); //NOXLATE
                 if (!baseUrl.EndsWith("/")) //NOXLATE
                     baseUrl += "/"; //NOXLATE

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexibleLayoutEditorContext.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using System.Collections.Generic;
 

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/FusionWidgetEditorMap.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/FusionWidgetEditorMap.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/FusionWidgetEditorMap.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Editors.Fusion.WidgetEditors;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 
 namespace Maestro.Editors.Fusion
@@ -40,9 +41,9 @@
         /// <returns></returns>
         public static IWidgetEditor GetEditorForWidget(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
-            Check.NotNull(widget, "widget"); //NOXLATE
-            Check.NotNull(context, "context"); //NOXLATE
-            Check.NotNull(edsvc, "edsvc"); //NOXLATE
+            Check.ArgumentNotNull(widget, "widget"); //NOXLATE
+            Check.ArgumentNotNull(context, "context"); //NOXLATE
+            Check.ArgumentNotNull(edsvc, "edsvc"); //NOXLATE
 
             IWidgetEditor ed = new GenericWidgetCtrl();
             ed.Setup(widget, context, edsvc);

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/MapEditors/MapGuideEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/MapEditors/MapGuideEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/MapEditors/MapGuideEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using System;
 using System.Globalization;

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/MapSettingsCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Common;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using System;
 using System.ComponentModel;
@@ -212,7 +213,7 @@
 
         private TreeNode CreateNode(IUIItem item)
         {
-            Check.NotNull(item, "item"); //NOXLATE
+            Check.ArgumentNotNull(item, "item"); //NOXLATE
             var node = new TreeNode();
             switch (item.Function)
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditorCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using ICSharpCode.TextEditor.Actions;
 using ICSharpCode.TextEditor.Document;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -319,7 +320,7 @@
         public override void Bind(IEditorService service)
         {
             var res = service.GetEditedResource();
-            this.XmlContent = ResourceTypeRegistry.SerializeAsString(res);
+            this.XmlContent = ObjectFactory.SerializeAsString(res);
             InitResourceData(service);
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Specialized;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;
 using System.Collections.Generic;
@@ -206,7 +207,7 @@
         private void btnBrowse_Click(object sender, EventArgs e)
         {
             using (var picker = new ResourcePicker(_service.CurrentConnection,
-                                                   OSGeo.MapGuide.MaestroAPI.ResourceTypes.DrawingSource.ToString(),
+                                                   ResourceTypes.DrawingSource.ToString(),
                                                    ResourcePickerMode.OpenResource))
             {
                 if (picker.ShowDialog() == DialogResult.OK)

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -2,6 +2,7 @@
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Raster/RasterLayerSettingsSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Raster/RasterLayerSettingsSectionCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Raster/RasterLayerSettingsSectionCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/GridEditor/RuleGridView.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/GridEditor/RuleGridView.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/GridEditor/RuleGridView.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -371,7 +371,7 @@
                 scale = _parentScaleRange.MinScale.Value;
             var layerId = _edSvc.EditedResourceID;
             var editedRes = _edSvc.GetEditedResource();
-            var conn = editedRes.CurrentConnection;
+            var conn = _edSvc.CurrentConnection;
             var mapSvc = (IMappingService)conn.GetService((int)ServiceType.Mapping);
             var themeOffset = this.ThemeIndexOffest;
 
@@ -907,14 +907,14 @@
             }
         }
 
-        private static object ExplodeThemeWorker(BackgroundWorker worker, DoWorkEventArgs e, params object[] args)
+        private object ExplodeThemeWorker(BackgroundWorker worker, DoWorkEventArgs e, params object[] args)
         {
             var options = (ExplodeThemeOptions)args[0];
             LengthyOperationProgressCallBack cb = (s, cbArgs) =>
             {
                 worker.ReportProgress(cbArgs.Progress, cbArgs.StatusMessage);
             };
-            Utility.ExplodeThemeIntoFilteredLayers(options, cb);
+            Utility.ExplodeThemeIntoFilteredLayers(_edSvc.CurrentConnection, options, cb);
             return true;
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionList.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionList.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionList.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -197,7 +197,7 @@
 
             double scale = GetApplicablePreviewScale();
             //Not pretty, but we need a server connection to fetch DWF symbol thumbnails for previewing
-            Condition c = new Condition(m_owner.EditorService.GetEditedResource().CurrentConnection);
+            Condition c = new Condition(m_owner.EditorService.CurrentConnection);
 
             if (rule as IPointRule != null)
                 c.SetItem(rule as IPointRule, scale, themeCategory);

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionListButtons.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionListButtons.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ConditionListButtons.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -348,14 +348,14 @@
             }
         }
 
-        private static object ExplodeThemeWorker(BackgroundWorker worker, DoWorkEventArgs e, params object[] args)
+        private object ExplodeThemeWorker(BackgroundWorker worker, DoWorkEventArgs e, params object[] args)
         {
             var options = (ExplodeThemeOptions)args[0];
             LengthyOperationProgressCallBack cb = (s, cbArgs) =>
             {
                 worker.ReportProgress(cbArgs.Progress, cbArgs.StatusMessage);
             };
-            Utility.ExplodeThemeIntoFilteredLayers(options, cb);
+            Utility.ExplodeThemeIntoFilteredLayers(m_owner.EditorService.CurrentConnection, options, cb);
             return true;
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ExplodeThemeDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ExplodeThemeDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/ExplodeThemeDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;
 using System.Globalization;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors/ReferenceCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors/ReferenceCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstanceEditors/ReferenceCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Generic;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
 using System;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Scales/SymbolInstancesDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -113,7 +113,7 @@
             _featureSourceId = featureSourceId;
 
             _preview = prev;
-            var conn = edSvc.GetEditedResource().CurrentConnection;
+            var conn = edSvc.CurrentConnection;
             if (Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Mapping) >= 0)
             {
                 _mappingSvc = (IMappingService)conn.GetService((int)ServiceType.Mapping);
@@ -181,7 +181,7 @@
                 img.Dispose();
             }
 
-            var conn = _edSvc.GetEditedResource().CurrentConnection;
+            var conn = _edSvc.CurrentConnection;
             ISymbolDefinitionBase previewSymbol = null;
             string resId = "Session:" + conn.SessionID + "//" + Guid.NewGuid().ToString() + ".SymbolDefinition";
             switch (symInst.Reference.Type)
@@ -227,7 +227,7 @@
                     }
                 }
             }
-            return ResourceTypeRegistry.Serialize(previewSymbol);
+            return ObjectFactory.Serialize(previewSymbol);
         }
 
         private void AddInstance(ISymbolInstance symRef, bool add)
@@ -267,8 +267,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var ssym = ObjectFactory.CreateSimpleSymbol(_edSvc.GetEditedResource().CurrentConnection,
-                                                        vl.SymbolDefinitionVersion,
+            var ssym = ObjectFactory.CreateSimpleSymbol(vl.SymbolDefinitionVersion,
                                                         "InlineSimpleSymbol", //NOXLATE
                                                         Strings.TextInlineSimpleSymbol);
 
@@ -282,8 +281,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var csym = ObjectFactory.CreateCompoundSymbol(_edSvc.GetEditedResource().CurrentConnection,
-                                                          vl.SymbolDefinitionVersion,
+            var csym = ObjectFactory.CreateCompoundSymbol(vl.SymbolDefinitionVersion,
                                                           "InlineCompoundSymbol",
                                                           Strings.TextInlineCompoundSymbol); //NOXLATE
 
@@ -708,8 +706,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var ssym = ObjectFactory.CreateSimpleSolidFill(_edSvc.GetEditedResource().CurrentConnection,
-                                                           vl.SymbolDefinitionVersion);
+            var ssym = ObjectFactory.CreateSimpleSolidFill(vl.SymbolDefinitionVersion);
 
             var instance = _comp.CreateInlineSimpleSymbol(ssym);
             AddInstance(instance, true);
@@ -721,8 +718,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var ssym = ObjectFactory.CreateSimpleSolidLine(_edSvc.GetEditedResource().CurrentConnection,
-                                                           vl.SymbolDefinitionVersion);
+            var ssym = ObjectFactory.CreateSimpleSolidLine(vl.SymbolDefinitionVersion);
 
             var instance = _comp.CreateInlineSimpleSymbol(ssym);
             AddInstance(instance, true);
@@ -734,8 +730,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var ssym = ObjectFactory.CreateSimpleLabel(_edSvc.GetEditedResource().CurrentConnection,
-                                                       vl.SymbolDefinitionVersion,
+            var ssym = ObjectFactory.CreateSimpleLabel(vl.SymbolDefinitionVersion,
                                                        GeometryContextType.Point);
 
             var instance = _comp.CreateInlineSimpleSymbol(ssym);
@@ -748,8 +743,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var ssym = ObjectFactory.CreateSimpleLabel(_edSvc.GetEditedResource().CurrentConnection,
-                                                       vl.SymbolDefinitionVersion,
+            var ssym = ObjectFactory.CreateSimpleLabel(vl.SymbolDefinitionVersion,
                                                        GeometryContextType.LineString);
 
             var instance = _comp.CreateInlineSimpleSymbol(ssym);
@@ -762,8 +756,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var ssym = ObjectFactory.CreateSimpleLabel(_edSvc.GetEditedResource().CurrentConnection,
-                                                       vl.SymbolDefinitionVersion,
+            var ssym = ObjectFactory.CreateSimpleLabel(vl.SymbolDefinitionVersion,
                                                        GeometryContextType.Polygon);
 
             var instance = _comp.CreateInlineSimpleSymbol(ssym);
@@ -776,8 +769,7 @@
             var vl = (IVectorLayerDefinition)res.SubLayer;
             if (vl.SymbolDefinitionVersion == null)
                 throw new InvalidOperationException(Strings.ErrorLayerDefnitionDoesNotSupportCompositeSymbolization);
-            var ssym = ObjectFactory.CreateSimplePoint(_edSvc.GetEditedResource().CurrentConnection,
-                                                       vl.SymbolDefinitionVersion);
+            var ssym = ObjectFactory.CreateSimplePoint(vl.SymbolDefinitionVersion);
 
             var instance = _comp.CreateInlineSimpleSymbol(ssym);
             AddInstance(instance, true);

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/AreaFeatureStyleEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/AreaFeatureStyleEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/AreaFeatureStyleEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -70,7 +70,7 @@
             m_featureSource = featureSource;
 
             _preview = prev;
-            var conn = editor.GetEditedResource().CurrentConnection;
+            var conn = editor.CurrentConnection;
             if (Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Mapping) >= 0)
             {
                 _mappingSvc = (IMappingService)conn.GetService((int)ServiceType.Mapping);

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/LineFeatureStyleEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/LineFeatureStyleEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/LineFeatureStyleEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -101,7 +101,7 @@
             m_featureSource = featureSource;
 
             _preview = prev;
-            var conn = editor.GetEditedResource().CurrentConnection;
+            var conn = editor.CurrentConnection;
             if (Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Mapping) >= 0)
             {
                 _mappingSvc = (IMappingService)conn.GetService((int)ServiceType.Mapping);

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/PointFeatureStyleEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/PointFeatureStyleEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/StyleEditors/PointFeatureStyleEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -147,7 +147,7 @@
             m_item = _factory.CreateDefaultPointSymbolization2D();
 
             _preview = prev;
-            var conn = editor.GetEditedResource().CurrentConnection;
+            var conn = editor.CurrentConnection;
             if (Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Mapping) >= 0)
             {
                 _mappingSvc = (IMappingService)conn.GetService((int)ServiceType.Mapping);
@@ -1066,7 +1066,7 @@
             }
             else if (Symbol.SelectedIndex == 7) //Symbol
             {
-                using (var picker = new SymbolPicker(m_editor.GetEditedResource().CurrentConnection))
+                using (var picker = new SymbolPicker(m_editor.CurrentConnection))
                 {
                     if (picker.ShowDialog() == DialogResult.OK)
                     {

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Thematics/ThemeCreator.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Thematics/ThemeCreator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/Thematics/ThemeCreator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -27,6 +27,7 @@
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using OSGeo.MapGuide.ObjectModels.SymbolDefinition;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/VectorLayerEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/VectorLayerEditorCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/VectorLayerEditorCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -90,7 +90,8 @@
         {
             var fs = (IFeatureSource)_edsvc.CurrentConnection.ResourceService.GetResource(_vl.ResourceId);
 
-            return _edsvc.EditExpression(expr, fs.GetClass(_vl.FeatureName), fs.Provider, _vl.ResourceId, attachStylizationFunctions);
+            var cls = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(fs.ResourceID, _vl.FeatureName);
+            return _edsvc.EditExpression(expr, cls, fs.Provider, _vl.ResourceId, attachStylizationFunctions);
         }
 
         internal void UpdateDisplay()

Modified: trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadProcedureEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadProcedureEditorCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadProcedureEditorCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -143,7 +143,7 @@
             IEditorService ed = (IEditorService)args[0];
             var proc = (ILoadProcedure)args[1];
 
-            return proc.CurrentConnection.ExecuteLoadProcedure(proc, cb, true);
+            return ed.CurrentConnection.ExecuteLoadProcedure(proc, cb, true);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Maestro.Editors.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1976,6 +1976,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
     <ProjectReference Include="..\Thirdparty\SharpDevelop\ICSharpCode.TextEditor\ICSharpCode.TextEditor.csproj">
       <Project>{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}</Project>
       <Name>ICSharpCode.TextEditor</Name>

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ExtentCalculationDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ExtentCalculationDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ExtentCalculationDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -38,15 +38,17 @@
     public partial class ExtentCalculationDialog : Form
     {
         private IMapDefinition _mdf;
+        private IServerConnection _conn;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ExtentCalculationDialog"/> class.
         /// </summary>
         /// <param name="mdf">The MDF.</param>
-        public ExtentCalculationDialog(IMapDefinition mdf)
+        public ExtentCalculationDialog(IMapDefinition mdf, IServerConnection conn)
         {
             InitializeComponent();
             _mdf = mdf;
+            _conn = conn;
             grdCalculations.DataSource = _results;
 
             prgCalculations.Maximum = mdf.GetLayerCount();
@@ -75,7 +77,7 @@
         /// <param name="e">An <see cref="T:System.EventArgs"/> that contains the event data.</param>
         protected override void OnLoad(EventArgs e)
         {
-            bgCalculation.RunWorkerAsync(_mdf);
+            bgCalculation.RunWorkerAsync();
         }
 
         private enum TransformStatus
@@ -138,8 +140,8 @@
 
         private void bgCalculation_DoWork(object sender, DoWorkEventArgs e)
         {
-            var mdf = (IMapDefinition)e.Argument;
-            var resSvc = mdf.CurrentConnection.ResourceService;
+            var mdf = _mdf;
+            var resSvc = _conn.ResourceService;
 
             //Accumulate layers
             Dictionary<string, ILayerDefinition> layers = new Dictionary<string, ILayerDefinition>();
@@ -168,7 +170,7 @@
             {
                 CalculationResult res = new CalculationResult();
                 string wkt;
-                var e1 = layer.GetSpatialExtent(true, out wkt);
+                var e1 = layer.GetSpatialExtent(_conn, true, out wkt);
                 if (e1 != null)
                 {
                     res.Extents = ExtentsToString(e1);

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LayerPropertiesCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapDefinitionEditorCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -27,6 +27,7 @@
 using OSGeo.MapGuide.MaestroAPI.Mapping;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System;
@@ -112,7 +113,7 @@
             service.RegisterCustomNotifier(this);
 
             _shadowCopy = (IMapDefinition)service.GetEditedResource();
-            _mapSvc = (IMappingService)_shadowCopy.CurrentConnection.GetService((int)ServiceType.Mapping);
+            _mapSvc = (IMappingService)service.CurrentConnection.GetService((int)ServiceType.Mapping);
             _rtMap = _mapSvc.CreateMap(_shadowCopy);
             repoView.Init(service.CurrentConnection.ResourceService, new string[] {
                 ResourceTypes.LayerDefinition.ToString(),
@@ -190,7 +191,7 @@
         {
             var res = repoView.SelectedItem;
 
-            var ed = new Maestro.Editors.Common.EditorWindow(_shadowCopy.CurrentConnection, res.ResourceId);
+            var ed = new Maestro.Editors.Common.EditorWindow(_rtMap.CurrentConnection, res.ResourceId);
             ed.ShowDialog();
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorDrawOrder.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorDrawOrder.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorDrawOrder.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using OSGeo.MapGuide.MaestroAPI.Mapping;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;
 using System.Drawing;

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorLegend.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -28,6 +28,7 @@
 using OSGeo.MapGuide.MaestroAPI.Mapping;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using System;
 using System.Diagnostics;

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorRepositoryView.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorRepositoryView.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/LiveMapEditorRepositoryView.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Tile;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System;
 using System.Collections.Generic;
@@ -1625,7 +1626,7 @@
             {
                 //All handles should have the same connection, so sample the first
                 //Must be the same connection as this current editor
-                if (rids[0].Connection != _edSvc.GetEditedResource().CurrentConnection)
+                if (rids[0].Connection != _edSvc.CurrentConnection)
                 {
                     e.Effect = DragDropEffects.None;
                     return;
@@ -1893,7 +1894,7 @@
                 return;
             }
 
-            var conn = _map.CurrentConnection;
+            var conn = _edSvc.CurrentConnection;
             //HACK: Can't support other connection types beyond HTTP atm
             if (!conn.ProviderName.ToLower().Contains("maestro.http"))
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapSettingsSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapSettingsSectionCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapSettingsSectionCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -188,7 +188,7 @@
                     //Transform current extents
                     try
                     {
-                        var trans = _service.GetEditedResource().CurrentConnection.CoordinateSystemCatalog.CreateTransform(oldCs, cs);
+                        var trans = _service.CurrentConnection.CoordinateSystemCatalog.CreateTransform(oldCs, cs);
 
                         var oldExt = _map.Extents;
 
@@ -215,7 +215,7 @@
 
         private void btnSetZoom_Click(object sender, EventArgs e)
         {
-            var diag = new ExtentCalculationDialog(_map);
+            var diag = new ExtentCalculationDialog(_map, _service.CurrentConnection);
             if (diag.ShowDialog() == DialogResult.OK)
             {
                 var env = diag.Extents;

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ScaleListGenerator.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ScaleListGenerator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/ScaleListGenerator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 

Modified: trunk/Tools/Maestro/Maestro.Editors/Packaging/PackageEditorDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Packaging/PackageEditorDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Packaging/PackageEditorDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Drawing;

Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/DefaultResourcePreviewer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -84,7 +84,7 @@
             //TODO: Prompt for symbol parameters if there are any, as these can affect the rendered output
             //and it is a nice way to test symbol parameters wrt to rendering
 
-            IServerConnection conn = res.CurrentConnection;
+            IServerConnection conn = edSvc.CurrentConnection;
             BusyWaitDelegate worker = () =>
             {
                 //Save the current resource to another session copy
@@ -133,7 +133,7 @@
         internal static ImagePreviewResult GenerateSymbolDefinitionPreview(IServerConnection conn, IResource previewCopy, int width, int height)
         {
             //For Symbol Definition previews, we make a placeholder Layer Definition with the
-            ILayerDefinition layerDef = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector);
+            ILayerDefinition layerDef = Utility.CreateDefaultLayer(conn, LayerType.Vector);
             IVectorLayerDefinition2 vl = layerDef.SubLayer as IVectorLayerDefinition2;
             if (vl != null)
             {
@@ -171,20 +171,24 @@
         /// Gets whether the specified resource can be previewed
         /// </summary>
         /// <param name="res"></param>
+        /// <param name="conn"></param>
         /// <returns></returns>
-        public bool IsPreviewable(IResource res)
+        public bool IsPreviewable(IResource res, IServerConnection conn)
         {
+            Check.ArgumentNotNull(res, "res"); //NOXLATE
+            Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+
             var rt = res.ResourceType;
-            if (res.CurrentConnection.Capabilities.SupportsResourcePreviews)
+            if (conn.Capabilities.SupportsResourcePreviews)
             {
                 bool bKnownResourceType = !(res is UntypedResource);
                 if (rt == ResourceTypes.SymbolDefinition.ToString())
                 {
-                    return bKnownResourceType && res.CurrentConnection.SiteVersion >= new Version(2, 0) && Array.IndexOf(res.CurrentConnection.Capabilities.SupportedServices, (int)ServiceType.Mapping) >= 0;
+                    return bKnownResourceType && conn.SiteVersion >= new Version(2, 0) && Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Mapping) >= 0;
                 }
                 else
                 {
-                    var previewer = res.CurrentConnection.GetPreviewUrlGenerator();
+                    var previewer = conn.GetPreviewUrlGenerator();
                     bool bPreviewable = (previewer != null && previewer.IsPreviewableType(rt));
                     //A Map Definition can be saved directly and referenced by a Web Layout
                     //An Web Layout and Application Definition can be saved directly and

Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/IResourcePreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/IResourcePreviewer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/IResourcePreviewer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,7 +20,9 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Editors.Preview
 {
@@ -33,8 +35,9 @@
         /// Gets whether the specified resource can be previewed
         /// </summary>
         /// <param name="res"></param>
+        /// <param name="conn"></param>
         /// <returns></returns>
-        bool IsPreviewable(IResource res);
+        bool IsPreviewable(IResource res, IServerConnection conn);
 
         /// <summary>
         /// Previews the specified resource

Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/LocalMapPreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/LocalMapPreviewer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/LocalMapPreviewer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using OSGeo.MapGuide.MaestroAPI.Mapping;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using OSGeo.MapGuide.ObjectModels.WatermarkDefinition;
@@ -63,8 +64,9 @@
         /// Gets whether the given resource is previewable with this previewer
         /// </summary>
         /// <param name="res"></param>
+        /// <param name="conn"></param>
         /// <returns></returns>
-        public bool IsPreviewable(IResource res)
+        public bool IsPreviewable(IResource res, IServerConnection conn)
         {
             if (this.UseLocal)
             {
@@ -73,7 +75,7 @@
                     return true;
                 }
             }
-            return _inner.IsPreviewable(res);
+            return _inner.IsPreviewable(res, conn);
         }
 
         private static bool IsLocalPreviewableType(IResource res)
@@ -107,7 +109,7 @@
         /// <param name="locale"></param>
         public void Preview(IResource res, IEditorService edSvc, string locale)
         {
-            IServerConnection conn = res.CurrentConnection;
+            IServerConnection conn = edSvc.CurrentConnection;
             if (this.UseLocal && IsLocalPreviewableType(res) && SupportsMappingService(conn))
             {
                 BusyWaitDelegate worker = () =>

Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewEngine.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewEngine.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewEngine.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -56,7 +56,7 @@
         /// <returns></returns>
         public string GeneratePreviewUrl(IResource res, string locale)
         {
-            var conn = res.CurrentConnection;
+            var conn = _edSvc.CurrentConnection;
             var previewer = conn.GetPreviewUrlGenerator();
             previewer.AddDebugWatermark = PreviewSettings.AddDebugWatermark;
             previewer.UseAjaxViewer = PreviewSettings.UseAjaxViewer;
@@ -112,14 +112,14 @@
             //Create temp map definition to house our current layer
             var mdfId = "Session:" + sessionId + "//" + Guid.NewGuid() + ".MapDefinition"; //NOXLATE
             string csWkt;
-            var extent = ldf.GetSpatialExtent(true, out csWkt);
+            var extent = ldf.GetSpatialExtent(conn, true, out csWkt);
             if (extent == null)
                 throw new ApplicationException(Strings.FailedToCalculateFeatureSourceExtents);
 
-            string layerSc = Utility.GetLayerSpatialContext(ldf);
+            string layerSc = ldf.GetLayerSpatialContextName(conn);
 
             //TODO: Based on the visible scales in this layer, size this extents accordingly
-            var mdf = ObjectFactory.CreateMapDefinition(conn, Strings.PreviewMap, csWkt, extent);
+            var mdf = Utility.CreateMapDefinition(conn, Strings.PreviewMap, csWkt, extent);
             IMapDefinition2 mdf2 = mdf as IMapDefinition2;
             if (mdf2 != null && PreviewSettings.AddDebugWatermark)
                 CreateDebugWatermark(mdf2, conn, layerSc);

Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewFactory.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewFactory.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/ResourcePreviewFactory.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,7 +20,9 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 
 namespace Maestro.Editors.Preview
@@ -55,14 +57,16 @@
         /// <summary>
         /// Gets whether the given resource type is previewable for the given connection provider
         /// </summary>
-        /// <param name="provider"></param>
+        /// <param name="conn"></param>
         /// <param name="resource"></param>
         /// <returns></returns>
-        public static bool IsPreviewable(string provider, IResource resource)
+        public static bool IsPreviewable(IServerConnection conn, IResource resource)
         {
-            var preview = GetPreviewer(provider);
+            Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+            Check.ArgumentNotNull(resource, "resource"); //NOXLATE
+            var preview = GetPreviewer(conn.ProviderName);
             if (preview != null)
-                return preview.IsPreviewable(resource);
+                return preview.IsPreviewable(resource, conn);
 
             return false;
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/Preview/StubPreviewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Preview/StubPreviewer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/Preview/StubPreviewer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,7 +20,9 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Editors.Preview
 {
@@ -34,8 +36,9 @@
         /// Gets whether the specified resource can be previewed
         /// </summary>
         /// <param name="res"></param>
+        /// <param name="conn"></param>
         /// <returns></returns>
-        public bool IsPreviewable(IResource res)
+        public bool IsPreviewable(IResource res, IServerConnection conn)
         {
             return false;
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/PrintLayout/LogoDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Windows.Forms;
 

Modified: trunk/Tools/Maestro/Maestro.Editors/PrintLayout/PrintCustomLogosSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/PrintLayout/PrintCustomLogosSectionCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/PrintLayout/PrintCustomLogosSectionCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -48,7 +48,7 @@
         {
             service.RegisterCustomNotifier(this);
             _layout = (IPrintLayout)service.GetEditedResource();
-            _conn = _layout.CurrentConnection;
+            _conn = service.CurrentConnection;
 
             foreach (var logo in _layout.CustomLogos)
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/RepositoryHandle.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/RepositoryHandle.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/RepositoryHandle.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 
 namespace Maestro.Editors
 {

Modified: trunk/Tools/Maestro/Maestro.Editors/ResourceEditorServiceBase.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/ResourceEditorServiceBase.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/ResourceEditorServiceBase.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.ComponentModel;
 using System.IO;
@@ -419,7 +420,7 @@
         /// </summary>
         public void SyncSessionCopy()
         {
-            string xml = ResourceTypeRegistry.SerializeAsString(_editCopy);
+            string xml = ObjectFactory.SerializeAsString(_editCopy);
             try
             {
                 using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/CompoundSymbolDefinitionEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/CompoundSymbolDefinitionEditorCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/CompoundSymbolDefinitionEditorCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -142,7 +142,7 @@
         private void simpleSymbolToolStripMenuItem_Click(object sender, EventArgs e)
         {
             //Must create simple symbol of the same version
-            var sym = ObjectFactory.CreateSimpleSymbol(_compSym.CurrentConnection, _compSym.ResourceVersion, "", "");
+            var sym = ObjectFactory.CreateSimpleSymbol(_compSym.ResourceVersion, "", "");
             var symRef = _compSym.CreateSimpleSymbol(sym);
             AddSymbolReference(symRef);
             _compSym.AddSimpleSymbol(symRef);

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/ExtractSymbolLibraryDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/ExtractSymbolLibraryDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/ExtractSymbolLibraryDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource.Conversion;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Drawing;

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SimpleSymbolReferenceCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SimpleSymbolReferenceCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SimpleSymbolReferenceCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolEditorService.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
 using System;
 
@@ -111,7 +112,7 @@
             get { return _inner.EditedResourceID; }
         }
 
-        public OSGeo.MapGuide.MaestroAPI.Resource.IResource GetEditedResource()
+        public IResource GetEditedResource()
         {
             return _symDef;
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolField.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolField.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolField.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
 using System;
 using System.Collections;
@@ -317,7 +318,7 @@
         /// <param name="propertyName">Name of the property.</param>
         public void Bind(object dataSource, string propertyName)
         {
-            Check.NotNull(dataSource, "dataSource");
+            Check.ArgumentNotNull(dataSource, "dataSource");
             Check.NotEmpty(propertyName, "member");
             try
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/SymbolGraphicsCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Editors.Common;
 using Maestro.Editors.SymbolDefinition.GraphicsEditors;
+using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
 using System;
 using System.ComponentModel;
@@ -38,11 +39,13 @@
         }
 
         private ISimpleSymbolDefinition _sym;
+        private IServerConnection _conn;
 
         public override void Bind(IEditorService service)
         {
             service.RegisterCustomNotifier(this);
             _sym = (ISimpleSymbolDefinition)service.GetEditedResource();
+            _conn = service.CurrentConnection;
             lstGraphics.Items.Clear();
 
             foreach (var g in _sym.Graphics)
@@ -99,7 +102,7 @@
             var img = _sym.CreateImageGraphics();
             AddGraphicsItem(img);
             _sym.AddGraphics(img);
-            new ImageDialog(this, _sym.CurrentConnection, _sym, img).ShowDialog();
+            new ImageDialog(this, _conn, _sym, img).ShowDialog();
         }
 
         private void lstGraphics_SelectedIndexChanged(object sender, EventArgs e)
@@ -128,7 +131,7 @@
                 }
                 else if (img != null)
                 {
-                    new ImageDialog(this, _sym.CurrentConnection, _sym, img).ShowDialog();
+                    new ImageDialog(this, _conn, _sym, img).ShowDialog();
                 }
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkCollectionEditorCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors.Generic;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.WatermarkDefinition;
 using System;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/WatermarkDefinition/WatermarkInstanceEditor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.WatermarkDefinition;
 using System;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Editors/WebLayout/WebLayoutSettingsCtrl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using Maestro.Editors.Generic;
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.WebLayout;
 using System;
 using System.ComponentModel;
@@ -127,7 +128,7 @@
             txtAjaxViewerUrl.Text = string.Empty;
             try
             {
-                var conn = _wl.CurrentConnection;
+                var conn = _edsvc.CurrentConnection;
                 string baseUrl = conn.GetCustomProperty("BaseUrl").ToString();
                 if (!baseUrl.EndsWith("/"))
                     baseUrl += "/";

Modified: trunk/Tools/Maestro/Maestro.LiveMapEditor/Maestro.LiveMapEditor.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.LiveMapEditor/Maestro.LiveMapEditor.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.LiveMapEditor/Maestro.LiveMapEditor.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -135,14 +135,14 @@
       <Project>{CFD19053-2172-41D3-8460-0FD2123A1E88}</Project>
       <Name>Maestro.Shared.UI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\OSGeo.MapGuide.ExtendedObjectModels\OSGeo.MapGuide.ExtendedObjectModels.csproj">
-      <Project>{B3A2B816-9F41-4857-A111-09D2DF2550D6}</Project>
-      <Name>OSGeo.MapGuide.ExtendedObjectModels</Name>
-    </ProjectReference>
     <ProjectReference Include="..\OSGeo.MapGuide.MaestroAPI\OSGeo.MapGuide.MaestroAPI.csproj">
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <None Include="Resources\folder-horizontal-open.png" />

Modified: trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.LiveMapEditor/MainForm.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -86,7 +86,7 @@
         {
             ClearExistingEditor();
 
-            var mdf = ObjectFactory.CreateMapDefinition(_conn, Strings.NewMap);
+            var mdf = Utility.CreateMapDefinition(_conn, Strings.NewMap);
             var diag = new MapSettingsDialog(_conn, mdf, null);
             //if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
@@ -137,7 +137,7 @@
                 {
                     ILayerDefinition layerDef = (ILayerDefinition)_conn.ResourceService.GetResource(layer.LayerDefinitionID);
                     string wkt;
-                    IEnvelope env = layerDef.GetSpatialExtent(true, out wkt);
+                    IEnvelope env = layerDef.GetSpatialExtent(_conn, true, out wkt);
                     if (SupportsMutableMapProperties(_mapEditor.Map))
                     {
                         _mapEditor.Map.MapExtent = env;

Modified: trunk/Tools/Maestro/Maestro.LiveMapEditor/MapSettingsDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.LiveMapEditor/MapSettingsDialog.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.LiveMapEditor/MapSettingsDialog.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -118,7 +118,7 @@
 
         private void btnSetZoom_Click(object sender, EventArgs e)
         {
-            var diag = new ExtentCalculationDialog(_mdf);
+            var diag = new ExtentCalculationDialog(_mdf, _conn);
             if (diag.ShowDialog() == DialogResult.OK)
             {
                 var env = diag.Extents;

Modified: trunk/Tools/Maestro/Maestro.LiveMapEditor/Program.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.LiveMapEditor/Program.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.LiveMapEditor/Program.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,7 +22,6 @@
 
 using Maestro.Editors.Preview;
 using Maestro.Shared.UI;
-using OSGeo.MapGuide.ExtendedObjectModels;
 using System;
 using System.Diagnostics;
 using System.Windows.Forms;
@@ -45,7 +44,6 @@
         [STAThread]
         private static void Main()
         {
-            ModelSetup.Initialize();
             Application.EnableVisualStyles();
             Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
             Application.SetCompatibleTextRenderingDefault(false);

Modified: trunk/Tools/Maestro/Maestro.MapViewer/Maestro.MapViewer.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.MapViewer/Maestro.MapViewer.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.MapViewer/Maestro.MapViewer.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -81,6 +81,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Legend.resx">

Modified: trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -136,6 +136,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">

Modified: trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using ICSharpCode.SharpZipLib.Zip;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using Maestro.Shared.UI;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;

Modified: trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner.csproj
===================================================================
--- trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -111,6 +111,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <None Include="App.config" />

Modified: trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner64.csproj
===================================================================
--- trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner64.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITestRunner/MaestroAPITestRunner64.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -100,6 +100,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <None Include="App.config" />

Modified: trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/CapabilityTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -26,6 +26,7 @@
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Http;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 
 namespace MaestroAPITests

Modified: trunk/Tools/Maestro/MaestroAPITests/ConnectionTestBase.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/ConnectionTestBase.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/ConnectionTestBase.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -32,6 +32,7 @@
 using OSGeo.MapGuide.MaestroAPI.Services;
 using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
+using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System;
 using System.IO;
@@ -103,13 +104,13 @@
             string fsId = "Library://UnitTests/" + fsName + ".FeatureSource";
             if (!conn.ResourceService.ResourceExists(fsId))
             {
-                var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF");
+                var fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF");
                 fs.SetConnectionProperty("File", "%MG_DATA_FILE_PATH%Sheboygan_Parcels.sdf");
                 fs.ResourceID = fsId;
                 conn.ResourceService.SaveResourceAs(fs, fsId);
                 using (var stream = File.OpenRead("TestData/FeatureService/SDF/Sheboygan_Parcels.sdf"))
                 {
-                    fs.SetResourceData("Sheboygan_Parcels.sdf", ResourceDataType.File, stream);
+                    conn.ResourceService.SetResourceData(fs.ResourceID, "Sheboygan_Parcels.sdf", ResourceDataType.File, stream);
                 }
                 Assert.True(Convert.ToBoolean(conn.FeatureService.TestConnection(fsId)));
             }
@@ -138,13 +139,13 @@
             string fsId = "Library://UnitTests/" + fsName + ".FeatureSource";
             if (!conn.ResourceService.ResourceExists(fsId))
             {
-                var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF");
+                var fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF");
                 fs.SetConnectionProperty("File", "%MG_DATA_FILE_PATH%Sheboygan_Parcels.sdf");
                 conn.ResourceService.SaveResourceAs(fs, fsId);
                 fs.ResourceID = fsId;
                 using (var stream = File.OpenRead("TestData/FeatureService/SDF/Sheboygan_Parcels.sdf"))
                 {
-                    fs.SetResourceData("Sheboygan_Parcels.sdf", ResourceDataType.File, stream);
+                    conn.ResourceService.SetResourceData(fs.ResourceID, "Sheboygan_Parcels.sdf", ResourceDataType.File, stream);
                 }
                 Assert.True(Convert.ToBoolean(conn.FeatureService.TestConnection(fsId)));
             }
@@ -458,7 +459,7 @@
 
             var conn = ConnectionUtil.CreateTestHttpConnection();
             string fsId = "Library://UnitTests/" + GetTestPrefix() + "EncryptedCredentials.FeatureSource";
-            var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SQLServerSpatial");
+            var fs = ObjectFactory.CreateFeatureSource("OSGeo.SQLServerSpatial");
             fs.SetConnectionProperty("Username", "%MG_USERNAME%");
             fs.SetConnectionProperty("Password", "%MG_PASSWORD%");
             fs.SetConnectionProperty("Service", server);
@@ -476,22 +477,22 @@
 
             //Test convenience method
             fsId = "Library://UnitTests/" + GetTestPrefix() + "EncryptedCredentials2.FeatureSource";
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SQLServerSpatial");
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SQLServerSpatial");
             fs.SetConnectionProperty("Username", "%MG_USERNAME%");
             fs.SetConnectionProperty("Password", "%MG_PASSWORD%");
             fs.SetConnectionProperty("Service", server);
             fs.SetConnectionProperty("DataStore", database);
             fs.ResourceID = fsId;
             conn.ResourceService.SaveResource(fs);
-            fs.SetEncryptedCredentials(actualUser, actualPass);
+            fs.SetEncryptedCredentials(conn, actualUser, actualPass);
 
             result = conn.FeatureService.TestConnection(fsId);
             Assert.AreEqual("TRUE", result.ToUpper());
-            Assert.AreEqual(actualUser, fs.GetEncryptedUsername());
+            Assert.AreEqual(actualUser, fs.GetEncryptedUsername(conn));
 
             //Do not set encrypted credentials
             fsId = "Library://UnitTests/" + GetTestPrefix() + "EncryptedCredentials3.FeatureSource";
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SQLServerSpatial");
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SQLServerSpatial");
             fs.SetConnectionProperty("Username", "%MG_USERNAME%");
             fs.SetConnectionProperty("Password", "%MG_PASSWORD%");
             fs.SetConnectionProperty("Service", server);
@@ -510,14 +511,14 @@
 
             //Encrypt credentials, but use bogus username/password
             fsId = "Library://UnitTests/" + GetTestPrefix() + "EncryptedCredentials4.FeatureSource";
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SQLServerSpatial");
+            fs = ObjectFactory.CreateFeatureSource( "OSGeo.SQLServerSpatial");
             fs.SetConnectionProperty("Username", "%MG_USERNAME%");
             fs.SetConnectionProperty("Password", "%MG_PASSWORD%");
             fs.SetConnectionProperty("Service", server);
             fs.SetConnectionProperty("DataStore", database);
             fs.ResourceID = fsId;
             conn.ResourceService.SaveResource(fs);
-            fs.SetEncryptedCredentials(bogusUser, bogusPass);
+            fs.SetEncryptedCredentials(conn, bogusUser, bogusPass);
 
             try
             {
@@ -528,7 +529,7 @@
             {
                 //Exception or false I can't remember, as long as the result is not "true"
             }
-            Assert.AreEqual(bogusUser, fs.GetEncryptedUsername());
+            Assert.AreEqual(bogusUser, fs.GetEncryptedUsername(conn));
         }
 
         public virtual void TestTouch()

Modified: trunk/Tools/Maestro/MaestroAPITests/HttpSiteTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/HttpSiteTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/HttpSiteTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -48,10 +48,10 @@
         public void TestMapDefinitionValidation()
         {
             var conn = CreateTestConnection();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, "Test");
+            var mdf = Utility.CreateMapDefinition(conn, "Test");
             mdf.ResourceID = "Library://UnitTests/Test.MapDefinition";
 
-            var context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            var context = new ResourceValidationContext(conn);
             var issues = ResourceValidatorSet.Validate(context, mdf, false);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Warning_MapDefinition_MissingCoordinateSystem));
 
@@ -59,19 +59,19 @@
 
             var layer = mdf.AddLayer(null, "bar", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition");
             layer.Group = "foo"; //AddLayer no longer lets us put in bogus group names
-            context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            context = new ResourceValidationContext(conn);
             issues = ResourceValidatorSet.Validate(context, mdf, false);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Error_MapDefinition_LayerWithNonExistentGroup));
 
             mdf.AddLayer(null, "bar", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition");
-            context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            context = new ResourceValidationContext(conn);
             issues = ResourceValidatorSet.Validate(context, mdf, false);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Error_MapDefinition_DuplicateLayerName));
 
             var group = mdf.AddGroup("foo");
             group.Group = "bar";
 
-            context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            context = new ResourceValidationContext(conn);
             issues = ResourceValidatorSet.Validate(context, mdf, false);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Error_MapDefinition_GroupWithNonExistentGroup));
         }
@@ -80,10 +80,10 @@
         public void TestSymbolDefinitionValidation()
         {
             var conn = CreateTestConnection();
-            var ssym = ObjectFactory.CreateSimpleSymbol(conn, "Test", "Test");
+            var ssym = Utility.CreateSimpleSymbol(conn, "Test", "Test");
             ssym.ResourceID = "Library://UnitTests/Test.SymbolDefinition";
 
-            var context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            var context = new ResourceValidationContext(conn);
             var issues = ResourceValidatorSet.Validate(context, ssym, true);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Error_SymbolDefinition_NoGeometryUsageContexts));
 
@@ -91,7 +91,7 @@
             param.Identifier = "TEST";
             ssym.ParameterDefinition.AddParameter(param);
 
-            context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            context = new ResourceValidationContext(conn);
             issues = ResourceValidatorSet.Validate(context, ssym, true);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Warning_SymbolDefinition_SymbolParameterNotUsed));
 
@@ -101,7 +101,7 @@
 
             ssym.AddGraphics(img);
 
-            context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            context = new ResourceValidationContext(conn);
             issues = ResourceValidatorSet.Validate(context, ssym, true);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Error_SymbolDefinition_ImageGraphicReferenceResourceIdNotFound));
 
@@ -113,7 +113,7 @@
 
             ssym.AddGraphics(img);
 
-            context = new ResourceValidationContext(conn.ResourceService, conn.FeatureService);
+            context = new ResourceValidationContext(conn);
             issues = ResourceValidatorSet.Validate(context, ssym, true);
             Assert.True(issues.Any(x => x.StatusCode == ValidationStatusCode.Error_SymbolDefinition_ImageGraphicReferenceResourceDataNotFound));
         }

Modified: trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -638,10 +638,6 @@
     </BootstrapperPackage>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\OSGeo.MapGuide.ExtendedObjectModels\OSGeo.MapGuide.ExtendedObjectModels.csproj">
-      <Project>{B3A2B816-9F41-4857-A111-09D2DF2550D6}</Project>
-      <Name>OSGeo.MapGuide.ExtendedObjectModels</Name>
-    </ProjectReference>
     <ProjectReference Include="..\OSGeo.MapGuide.MaestroAPI.Http\OSGeo.MapGuide.MaestroAPI.Http.csproj">
       <Project>{6EF1E775-444B-4E5F-87FB-D687C43A68D7}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI.Http</Name>
@@ -650,6 +646,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />

Modified: trunk/Tools/Maestro/MaestroAPITests/ObjectTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/ObjectTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/ObjectTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -74,43 +74,5 @@
             Assert.AreEqual(string.Empty, parser.GetValue("whatever"));
             Assert.AreEqual(parser.GetValue("bar"), "snafu");
         }
-
-        [Test]
-        public void TestEnvelope()
-        {
-            var env = ObjectFactory.CreateEnvelope(-.1, -.1, .1, .1);
-            Assert.AreEqual(env.MinX, -.1);
-            Assert.AreEqual(env.MinY, -.1);
-            Assert.AreEqual(env.MaxX, .1);
-            Assert.AreEqual(env.MaxY, .1);
-
-            Assert.Catch<ArgumentException>(() => ObjectFactory.CreateEnvelope(.1, -.1, -.1, .1));
-            Assert.Catch<ArgumentException>(() => ObjectFactory.CreateEnvelope(-.1, .1, .1, -.1));
-            Assert.Catch<ArgumentException>(() => ObjectFactory.CreateEnvelope(.1, .1, -.1, -.1));
-        }
-
-        [Test]
-        public void TestSecurityUser()
-        {
-            var user = ObjectFactory.CreateSecurityUser();
-            Assert.IsNotNull(user.User);
-        }
-
-        [Test]
-        public void TestSecurityGroup()
-        {
-            var group = ObjectFactory.CreateSecurityGroup();
-            Assert.IsNotNull(group.Group);
-        }
-
-        [Test]
-        public void TestResourceMetadata()
-        {
-            var meta = ObjectFactory.CreateMetadata();
-            Assert.IsNotNull(meta.Simple);
-            Assert.IsNotNull(meta.Simple.Property);
-
-            Assert.AreEqual(0, meta.GetProperties().Count);
-        }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -46,442 +46,18 @@
         {
             if (TestControl.IgnoreResourceTests)
                 Assert.Ignore("Skipping ResourceTests because TestControl.IgnoreResourceTests = true");
-        }
 
-        private Mockery _mocks;
-
-        [Test]
-        public void TestCloning()
-        {
-            //Generated classes have built in Clone() methods. Verify they check out
             _mocks = new Mockery();
-            var conn = _mocks.NewMock<IServerConnection>();
-            Stub.On(conn).GetProperty("SiteVersion").Will(Return.Value(new Version(2, 2, 0, 0)));
-            var caps = _mocks.NewMock<IConnectionCapabilities>();
-            Stub.On(conn).GetProperty("Capabilities").Will(Return.Value(caps));
-            foreach (var rt in Enum.GetValues(typeof(ResourceTypes)))
-            {
-                Stub.On(caps).Method("GetMaxSupportedResourceVersion").With(rt.ToString()).Will(Return.Value(new Version(1, 0, 0)));
-            }
-
-            var app = ObjectFactory.DeserializeEmbeddedFlexLayout(conn);
-            var app2 = app.Clone();
-            Assert.AreNotSame(app, app2);
-
-            var fs = new OSGeo.MapGuide.ObjectModels.FeatureSource.v1_0_0.FeatureSourceType();
-            var fs2 = fs.Clone();
-            Assert.AreNotSame(fs, fs2);
-
-            var ld = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector, new Version(1, 0, 0));
-            var ld2 = ld.Clone();
-            Assert.AreNotSame(ld, ld2);
-
-            var md = ObjectFactory.CreateMapDefinition(conn, "TestMap");
-            var md2 = md.Clone();
-            Assert.AreNotSame(md, md2);
-
-            var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), "Library://Test.MapDefinition");
-            var wl2 = wl.Clone();
-            Assert.AreNotSame(wl, wl2);
-
-            var sl = new OSGeo.MapGuide.ObjectModels.SymbolLibrary.v1_0_0.SymbolLibraryType();
-            var sl2 = sl.Clone();
-            Assert.AreNotSame(sl, sl2);
-
-            var ssd = ObjectFactory.CreateSimpleSymbol(conn, new Version(1, 0, 0), "Test", "Test Symbol");
-            var ssd2 = ssd.Clone();
-            Assert.AreNotSame(ssd, ssd2);
-
-            var csd = ObjectFactory.CreateCompoundSymbol(conn, new Version(1, 0, 0), "Test", "Test Symbol");
-            var csd2 = csd.Clone();
-            Assert.AreNotSame(csd, csd2);
-
-            var pl = ObjectFactory.CreatePrintLayout(conn);
-            var pl2 = pl.Clone();
-            Assert.AreNotSame(pl, pl2);
         }
 
-        [Test]
-        public void TestValidResourceIdentifiers()
-        {
-            var conn = _mocks.NewMock<IServerConnection>();
-            Stub.On(conn).GetProperty("SiteVersion").Will(Return.Value(new Version(2, 2, 0, 0)));
-            var caps = _mocks.NewMock<IConnectionCapabilities>();
-            Stub.On(conn).GetProperty("Capabilities").Will(Return.Value(caps));
-            foreach (var rt in Enum.GetValues(typeof(ResourceTypes)))
-            {
-                Stub.On(caps).Method("GetMaxSupportedResourceVersion").With(rt.ToString()).Will(Return.Value(new Version(1, 0, 0)));
-            }
+        private Mockery _mocks;
 
-            //Verify that only valid resource identifiers can be assigned to certain resource types.
-
-            IResource res = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF");
-
-            #region Feature Source
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.FeatureSource";
-            }
-            catch (InvalidOperationException)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Feature Source
-
-            res = ObjectFactory.CreateDrawingSource(conn);
-
-            #region Drawing Source
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.FeatureSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Drawing Source
-
-            res = ObjectFactory.CreateMapDefinition(conn, "Test Map");
-
-            #region Map Definition
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.MapDefinition";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Map Definition
-
-            res = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), "Library://Test.MapDefinition");
-
-            #region Web Layout
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.WebLayout";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Web Layout
-
-            res = ObjectFactory.DeserializeEmbeddedFlexLayout(conn);
-
-            #region Application Definition
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.ApplicationDefinition";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Application Definition
-
-            res = ObjectFactory.CreateSimpleSymbol(conn, new Version(1, 0, 0), "Test", "Test Symbol");
-
-            #region Simple Symbol Definition
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.SymbolDefinition";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Simple Symbol Definition
-
-            res = ObjectFactory.CreateCompoundSymbol(conn, new Version(1, 0, 0), "Test", "Test Symbol");
-
-            #region Compound Symbol Definition
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.SymbolDefinition";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Compound Symbol Definition
-
-            res = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sdf, null);
-
-            #region Load Procedure
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.LoadProcedure";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Load Procedure
-
-            res = ObjectFactory.CreateLoadProcedure(conn, LoadType.Shp, null);
-
-            #region Load Procedure
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.LoadProcedure";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Load Procedure
-
-            res = ObjectFactory.CreatePrintLayout(conn);
-
-            #region Print Layout
-
-            try
-            {
-                res.ResourceID = "dklgjlahekjedjfd";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
-                Assert.Fail("Should've thrown exception on invalid resource id");
-            }
-            catch (InvalidOperationException) { }
-
-            try
-            {
-                res.ResourceID = "Library://UnitTests/Test.PrintLayout";
-            }
-            catch (Exception)
-            {
-                Assert.Fail("Resource ID should've checked out");
-            }
-
-            #endregion Print Layout
-        }
-
         [Test]
         public void TestWebLayout()
         {
             var conn = _mocks.NewMock<IServerConnection>();
 
-            var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), "Library://Test.MapDefinition");
+            var wl = ObjectFactory.CreateWebLayout(new Version(1, 0, 0), "Library://Test.MapDefinition");
             Assert.IsNotNull(wl.CommandSet);
             Assert.IsNotNull(wl.ContextMenu);
             Assert.IsNotNull(wl.InformationPane);
@@ -515,130 +91,11 @@
         }
 
         [Test]
-        public void TestFeatureSource()
-        {
-            var conn = _mocks.NewMock<IServerConnection>();
-
-            var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF");
-            Assert.IsTrue(fs.ConnectionString.Length == 0);
-
-            var connParams = new NameValueCollection();
-            connParams["File"] = "%MG_DATA_FILE_PATH%Foo.sdf";
-
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF", connParams);
-
-            Assert.IsTrue(fs.UsesEmbeddedDataFiles);
-            Assert.IsFalse(fs.UsesAliasedDataFiles);
-            Assert.AreEqual(fs.GetEmbeddedDataName(), "Foo.sdf");
-            Assert.Catch<InvalidOperationException>(() => fs.GetAliasedFileName());
-            Assert.Catch<InvalidOperationException>(() => fs.GetAliasName());
-
-            connParams.Clear();
-            connParams["File"] = "%MG_DATA_FILE_PATH%Bar.sdf";
-            connParams["ReadOnly"] = "TRUE";
-
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF", connParams);
-
-            Assert.IsTrue(fs.UsesEmbeddedDataFiles);
-            Assert.IsFalse(fs.UsesAliasedDataFiles);
-            Assert.AreEqual(fs.GetEmbeddedDataName(), "Bar.sdf");
-            Assert.Catch<InvalidOperationException>(() => fs.GetAliasedFileName());
-            Assert.Catch<InvalidOperationException>(() => fs.GetAliasName());
-
-            connParams.Clear();
-            connParams["DefaultFileLocation"] = "%MG_DATA_PATH_ALIAS[foobar]%";
-
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SHP", connParams);
-
-            Assert.IsTrue(fs.UsesAliasedDataFiles);
-            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
-            Assert.AreEqual(fs.GetAliasName(), "foobar");
-            Assert.IsEmpty(fs.GetAliasedFileName());
-            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
-
-            connParams.Clear();
-            connParams["DefaultFileLocation"] = "%MG_DATA_PATH_ALIAS[foobar]%Test.sdf";
-
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF", connParams);
-
-            Assert.IsTrue(fs.UsesAliasedDataFiles);
-            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
-            Assert.AreEqual(fs.GetAliasName(), "foobar");
-            Assert.AreEqual(fs.GetAliasedFileName(), "Test.sdf");
-            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
-
-            connParams.Clear();
-            connParams["DefaultFileLocation"] = "%MG_DATA_PATH_ALIAS[foobar]%Test.sdf";
-            connParams["ReadOnly"] = "TRUE";
-
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF", connParams);
-
-            Assert.IsTrue(fs.UsesAliasedDataFiles);
-            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
-            Assert.AreEqual(fs.GetAliasName(), "foobar");
-            Assert.AreEqual(fs.GetAliasedFileName(), "Test.sdf");
-            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
-
-            connParams.Clear();
-            connParams["Service"] = "(local)\\SQLEXPRESS";
-            connParams["DataStore"] = "TEST";
-
-            fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SQLServerSpatial", connParams);
-
-            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
-            Assert.IsFalse(fs.UsesAliasedDataFiles);
-
-            Assert.Catch<InvalidOperationException>(() => fs.GetAliasedFileName());
-            Assert.Catch<InvalidOperationException>(() => fs.GetAliasName());
-            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
-        }
-
-        [Test]
-        public void TestResourceTypeDescriptor()
-        {
-            var rtd = new ResourceTypeDescriptor(ResourceTypes.ApplicationDefinition.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "ApplicationDefinition-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.DrawingSource.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "DrawingSource-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.FeatureSource.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "FeatureSource-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "LayerDefinition-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.1.0");
-            Assert.AreEqual(rtd.XsdName, "LayerDefinition-1.1.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.LoadProcedure.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "LoadProcedure-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "MapDefinition-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.DrawingSource.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "DrawingSource-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.PrintLayout.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "PrintLayout-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.SymbolDefinition.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "SymbolDefinition-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.SymbolLibrary.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "SymbolLibrary-1.0.0.xsd");
-
-            rtd = new ResourceTypeDescriptor(ResourceTypes.WebLayout.ToString(), "1.0.0");
-            Assert.AreEqual(rtd.XsdName, "WebLayout-1.0.0.xsd");
-        }
-
-        [Test]
         public void TestLayerDefinitionConversions()
         {
             var conn = _mocks.NewMock<IServerConnection>();
             var conv = new ResourceObjectConverter();
-            var ldf = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector, new Version(1, 0, 0));
+            var ldf = ObjectFactory.CreateDefaultLayer(LayerType.Vector, new Version(1, 0, 0));
             ldf.ResourceID = "Library://Samples/Sheboygan/Layers/Parcels.LayerDefinition";
             ldf.SubLayer.ResourceId = "Library://Samples/Sheboygan/Data/Parcels.FeatureSource";
             ((IVectorLayerDefinition)ldf.SubLayer).FeatureName = "SHP_Schema:Parcels";
@@ -651,7 +108,7 @@
 
             using (var fs = File.OpenWrite("LayerDef_100.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(ldf))
+                using (var src = ObjectFactory.Serialize(ldf))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -663,11 +120,10 @@
             Assert.AreEqual("LayerDefinition-1.1.0.xsd", ldf1.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("LayerDefinition-1.1.0.xsd", ldf1.ValidatingSchema);
             Assert.AreEqual(new Version(1, 1, 0), ldf1.ResourceVersion);
-            Assert.NotNull(ldf1.CurrentConnection);
-
+            
             using (var fs = File.OpenWrite("LayerDef_110.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(ldf1))
+                using (var src = ObjectFactory.Serialize(ldf1))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -679,11 +135,10 @@
             Assert.AreEqual("LayerDefinition-1.2.0.xsd", ldf2.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("LayerDefinition-1.2.0.xsd", ldf2.ValidatingSchema);
             Assert.AreEqual(new Version(1, 2, 0), ldf2.ResourceVersion);
-            Assert.NotNull(ldf2.CurrentConnection);
-
+            
             using (var fs = File.OpenWrite("LayerDef_120.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(ldf2))
+                using (var src = ObjectFactory.Serialize(ldf2))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -695,11 +150,10 @@
             Assert.AreEqual("LayerDefinition-1.3.0.xsd", ldf3.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("LayerDefinition-1.3.0.xsd", ldf3.ValidatingSchema);
             Assert.AreEqual(new Version(1, 3, 0), ldf3.ResourceVersion);
-            Assert.NotNull(ldf3.CurrentConnection);
-
+            
             using (var fs = File.OpenWrite("LayerDef_130.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(ldf3))
+                using (var src = ObjectFactory.Serialize(ldf3))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -711,12 +165,11 @@
             Assert.AreEqual("LayerDefinition-2.3.0.xsd", ldf4.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("LayerDefinition-2.3.0.xsd", ldf4.ValidatingSchema);
             Assert.AreEqual(new Version(2, 3, 0), ldf4.ResourceVersion);
-            Assert.NotNull(ldf4.CurrentConnection);
             Assert.IsTrue(ldf4.SubLayer is ISubLayerDefinition2);
 
             using (var fs = File.OpenWrite("LayerDef_230.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(ldf4))
+                using (var src = ObjectFactory.Serialize(ldf4))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -735,18 +188,18 @@
         public void TestMapDefinitionLayerInsert()
         {
             var conn = _mocks.NewMock<IServerConnection>();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "TestMapDefinitionLayerInsert");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMapDefinitionLayerInsert");
             SetupMapDefinitionForTest(mdf);
             int layerCount = mdf.GetLayerCount();
 
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(-1, null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition"); });
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(layerCount + 1, null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition"); });
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(0, null, "", ""); });
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(0, null, null, ""); });
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(0, null, "", null); });
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(0, null, null, null); });
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(0, null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.FeatureSource"); });
-            Assert.Throws<PreconditionException>(() => { mdf.InsertLayer(0, null, "Hydro", "Garbage"); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(-1, null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition"); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(layerCount + 1, null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition"); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(0, null, "", ""); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(0, null, null, ""); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(0, null, "", null); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(0, null, null, null); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(0, null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.FeatureSource"); });
+            Assert.Throws<ArgumentException>(() => { mdf.InsertLayer(0, null, "Hydro", "Garbage"); });
 
             IMapLayer layer = mdf.InsertLayer(0, null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition");
             Assert.AreEqual(0, mdf.GetIndex(layer));
@@ -762,17 +215,17 @@
         public void TestMapDefinitionLayerAdd()
         {
             var conn = _mocks.NewMock<IServerConnection>();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "TestMapDefinitionLayerAdd");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMapDefinitionLayerAdd");
             SetupMapDefinitionForTest(mdf);
             int layerCount = mdf.GetLayerCount();
 
-            Assert.Throws<PreconditionException>(() => { mdf.AddLayer("IDontExist", "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition"); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddLayer(null, "", ""); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddLayer(null, null, ""); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddLayer(null, "", null); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddLayer(null, null, null); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddLayer(null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.FeatureSource"); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddLayer(null, "Hydro", "Garbage"); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddLayer("IDontExist", "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition"); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddLayer(null, "", ""); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddLayer(null, null, ""); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddLayer(null, "", null); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddLayer(null, null, null); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddLayer(null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.FeatureSource"); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddLayer(null, "Hydro", "Garbage"); });
 
             IMapLayer layer = mdf.AddLayer(null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition");
             Assert.AreEqual(0, mdf.GetIndex(layer));
@@ -784,7 +237,7 @@
         public void TestMapDefinitionLayerRemove()
         {
             var conn = _mocks.NewMock<IServerConnection>();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "TestMapDefinitionLayerRemove");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMapDefinitionLayerRemove");
             SetupMapDefinitionForTest(mdf);
             int layerCount = mdf.GetLayerCount();
 
@@ -802,14 +255,14 @@
         public void TestMapDefinitionLayerReordering()
         {
             var conn = _mocks.NewMock<IServerConnection>();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "TestMapDefinitionLayerReordering");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMapDefinitionLayerReordering");
             SetupMapDefinitionForTest(mdf);
             int layerCount = mdf.GetLayerCount();
 
-            Assert.Throws<PreconditionException>(() => { mdf.MoveDown(null); });
-            Assert.Throws<PreconditionException>(() => { mdf.MoveUp(null); });
-            Assert.Throws<PreconditionException>(() => { mdf.SetTopDrawOrder(null); });
-            Assert.Throws<PreconditionException>(() => { mdf.SetBottomDrawOrder(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.MoveDown(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.MoveUp(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.SetTopDrawOrder(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.SetBottomDrawOrder(null); });
 
             IMapLayer layer = mdf.AddLayer(null, "Hydro", "Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition");
             Assert.AreEqual(0, mdf.GetIndex(layer));
@@ -836,14 +289,14 @@
         public void TestMapDefinitionGroupAdd()
         {
             var conn = _mocks.NewMock<IServerConnection>();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "TestMapDefinitionGroupAdd");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMapDefinitionGroupAdd");
             SetupMapDefinitionForTest(mdf);
             int layerCount = mdf.GetLayerCount();
             int groupCount = mdf.GetGroupCount();
 
-            Assert.Throws<PreconditionException>(() => { mdf.AddGroup(null); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddGroup(""); });
-            Assert.Throws<PreconditionException>(() => { mdf.AddGroup("Group1"); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddGroup(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddGroup(""); });
+            Assert.Throws<ArgumentException>(() => { mdf.AddGroup("Group1"); });
 
             IMapLayerGroup group = mdf.AddGroup("Test");
             Assert.AreEqual(groupCount + 1, mdf.GetGroupCount());
@@ -855,7 +308,7 @@
         public void TestMapDefinitionGroupRemove()
         {
             var conn = _mocks.NewMock<IServerConnection>();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "TestMapDefinitionGroupRemove");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMapDefinitionGroupRemove");
             SetupMapDefinitionForTest(mdf);
             int layerCount = mdf.GetLayerCount();
             int groupCount = mdf.GetGroupCount();
@@ -874,14 +327,14 @@
         public void TestMapDefinitionGroupReordering()
         {
             var conn = _mocks.NewMock<IServerConnection>();
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "TestMapDefinitionGroupReordering");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMapDefinitionGroupReordering");
             SetupMapDefinitionForTest(mdf);
             int groupCount = mdf.GetGroupCount();
 
-            Assert.Throws<PreconditionException>(() => { mdf.MoveDown(null); });
-            Assert.Throws<PreconditionException>(() => { mdf.MoveUp(null); });
-            Assert.Throws<PreconditionException>(() => { mdf.SetTopDrawOrder(null); });
-            Assert.Throws<PreconditionException>(() => { mdf.SetBottomDrawOrder(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.MoveDown(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.MoveUp(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.SetTopDrawOrder(null); });
+            Assert.Throws<ArgumentException>(() => { mdf.SetBottomDrawOrder(null); });
 
             IMapLayerGroup group = mdf.AddGroup("Test");
             Assert.AreEqual(groupCount, mdf.GetIndex(group));
@@ -900,7 +353,7 @@
             var conn = _mocks.NewMock<IServerConnection>();
             var conv = new ResourceObjectConverter();
 
-            var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "Test Map");
+            var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "Test Map");
             mdf.ResourceID = "Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition";
 
             Assert.AreEqual("1.0.0", mdf.GetResourceTypeDescriptor().Version);
@@ -910,7 +363,7 @@
 
             using (var fs = File.OpenWrite("MapDef_100.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(mdf))
+                using (var src = ObjectFactory.Serialize(mdf))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -922,12 +375,11 @@
             Assert.AreEqual("MapDefinition-2.3.0.xsd", mdf2.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("MapDefinition-2.3.0.xsd", mdf2.ValidatingSchema);
             Assert.AreEqual(new Version(2, 3, 0), mdf2.ResourceVersion);
-            Assert.NotNull(mdf2.CurrentConnection);
             Assert.True(mdf2 is IMapDefinition2);
 
             using (var fs = File.OpenWrite("MapDef_230.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(mdf2))
+                using (var src = ObjectFactory.Serialize(mdf2))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -940,7 +392,7 @@
             var conn = _mocks.NewMock<IServerConnection>();
             var conv = new ResourceObjectConverter();
 
-            var lproc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sdf);
+            var lproc = ObjectFactory.CreateLoadProcedure(LoadType.Sdf);
             lproc.ResourceID = "Library://Samples/Sheboygan/Load/Load.LoadProcedure";
 
             Assert.AreEqual("1.0.0", lproc.GetResourceTypeDescriptor().Version);
@@ -950,7 +402,7 @@
 
             using (var fs = File.OpenWrite("LoadProc_100.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(lproc))
+                using (var src = ObjectFactory.Serialize(lproc))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -962,11 +414,10 @@
             Assert.AreEqual("LoadProcedure-1.1.0.xsd", lproc2.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("LoadProcedure-1.1.0.xsd", lproc2.ValidatingSchema);
             Assert.AreEqual(new Version(1, 1, 0), lproc2.ResourceVersion);
-            Assert.NotNull(lproc2.CurrentConnection);
 
             using (var fs = File.OpenWrite("LoadProc_110.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(lproc2))
+                using (var src = ObjectFactory.Serialize(lproc2))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -978,11 +429,10 @@
             Assert.AreEqual("LoadProcedure-2.2.0.xsd", lproc3.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("LoadProcedure-2.2.0.xsd", lproc3.ValidatingSchema);
             Assert.AreEqual(new Version(2, 2, 0), lproc3.ResourceVersion);
-            Assert.NotNull(lproc3.CurrentConnection);
 
             using (var fs = File.OpenWrite("LoadProc_220.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(lproc3))
+                using (var src = ObjectFactory.Serialize(lproc3))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -995,7 +445,7 @@
             var conn = _mocks.NewMock<IServerConnection>();
             var conv = new ResourceObjectConverter();
 
-            var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), "Library://Test.MapDefinition");
+            var wl = ObjectFactory.CreateWebLayout(new Version(1, 0, 0), "Library://Test.MapDefinition");
             wl.ResourceID = "Library://Test.WebLayout";
 
             Assert.AreEqual("1.0.0", wl.GetResourceTypeDescriptor().Version);
@@ -1005,7 +455,7 @@
 
             using (var fs = File.OpenWrite("WebLayout_100.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(wl))
+                using (var src = ObjectFactory.Serialize(wl))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -1017,12 +467,11 @@
             Assert.AreEqual("WebLayout-1.1.0.xsd", wl2.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("WebLayout-1.1.0.xsd", wl2.ValidatingSchema);
             Assert.AreEqual(new Version(1, 1, 0), wl2.ResourceVersion);
-            Assert.NotNull(wl2.CurrentConnection);
             Assert.True(wl2 is IWebLayout2);
 
             using (var fs = File.OpenWrite("WebLayout_110.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(wl2))
+                using (var src = ObjectFactory.Serialize(wl2))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -1035,7 +484,7 @@
             var conn = _mocks.NewMock<IServerConnection>();
             var conv = new ResourceObjectConverter();
 
-            var ssym = ObjectFactory.CreateSimpleSymbol(conn, new Version(1, 0, 0), "SimpleSymbolTest", "Test simple symbol");
+            var ssym = ObjectFactory.CreateSimpleSymbol(new Version(1, 0, 0), "SimpleSymbolTest", "Test simple symbol");
             ssym.ResourceID = "Library://Samples/Sheboygan/Symbols/Test.SymbolDefinition";
 
             Assert.AreEqual("1.0.0", ssym.GetResourceTypeDescriptor().Version);
@@ -1045,7 +494,7 @@
 
             using (var fs = File.OpenWrite("SimpleSymDef_100.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(ssym))
+                using (var src = ObjectFactory.Serialize(ssym))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -1057,17 +506,16 @@
             Assert.AreEqual("SymbolDefinition-1.1.0.xsd", ssym2.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("SymbolDefinition-1.1.0.xsd", ssym2.ValidatingSchema);
             Assert.AreEqual(new Version(1, 1, 0), ssym2.ResourceVersion);
-            Assert.NotNull(ssym2.CurrentConnection);
 
             using (var fs = File.OpenWrite("SimpleSymDef_110.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(ssym2))
+                using (var src = ObjectFactory.Serialize(ssym2))
                 {
                     Utility.CopyStream(src, fs);
                 }
             }
 
-            var csym = ObjectFactory.CreateCompoundSymbol(conn, new Version(1, 0, 0), "CompoundSymbolTest", "Test compound symbol");
+            var csym = ObjectFactory.CreateCompoundSymbol(new Version(1, 0, 0), "CompoundSymbolTest", "Test compound symbol");
             csym.ResourceID = "Library://Samples/Sheboygan/Symbols/Compound.SymbolDefinition";
 
             Assert.AreEqual("1.0.0", csym.GetResourceTypeDescriptor().Version);
@@ -1077,7 +525,7 @@
 
             using (var fs = File.OpenWrite("CompoundSymDef_100.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(csym))
+                using (var src = ObjectFactory.Serialize(csym))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -1089,11 +537,10 @@
             Assert.AreEqual("SymbolDefinition-1.1.0.xsd", csym2.GetResourceTypeDescriptor().XsdName);
             Assert.AreEqual("SymbolDefinition-1.1.0.xsd", csym2.ValidatingSchema);
             Assert.AreEqual(new Version(1, 1, 0), csym2.ResourceVersion);
-            Assert.NotNull(csym2.CurrentConnection);
 
             using (var fs = File.OpenWrite("CompoundSymDef_110.xml"))
             {
-                using (var src = ResourceTypeRegistry.Serialize(csym2))
+                using (var src = ObjectFactory.Serialize(csym2))
                 {
                     Utility.CopyStream(src, fs);
                 }
@@ -1111,7 +558,7 @@
                 Stub.On(caps).Method("GetMaxSupportedResourceVersion").With(rt.ToString()).Will(Return.Value(new Version(1, 0, 0)));
             }
 
-            IMapDefinition mdf = ObjectFactory.CreateMapDefinition(conn, "Test");
+            IMapDefinition mdf = Utility.CreateMapDefinition(conn, "Test");
             /*
 
              [G] Group1

Modified: trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -32,7 +32,6 @@
 
 namespace MaestroAPITests
 {
-    using OSGeo.MapGuide.ExtendedObjectModels;
     using OSGeo.MapGuide.MaestroAPI.Commands;
     using OSGeo.MapGuide.MaestroAPI.CoordinateSystem;
     using OSGeo.MapGuide.MaestroAPI.Resource;
@@ -59,7 +58,6 @@
                 TestEnvironment.PrintSummary();
 
                 ResourceValidatorLoader.LoadStockValidators();
-                ModelSetup.Initialize();
                 _registered = true;
             }
         }
@@ -1089,7 +1087,7 @@
                     sheetName = sheet.Name;
             }
             conn.ResourceService.SaveResource(ds);
-            var ldf = ObjectFactory.CreateDefaultLayer(conn, LayerType.Drawing);
+            var ldf = Utility.CreateDefaultLayer(conn, LayerType.Drawing);
             var dl = (IDrawingLayerDefinition)ldf.SubLayer;
             dl.ResourceId = ds.ResourceID;
             dl.Sheet = sheetName;
@@ -1156,7 +1154,7 @@
         private void TestMapCreate(int layerSize, int groupSize)
         {
             //Create a 200 layer, 50 group map. This is not part of the benchmark
-            var mdf = ObjectFactory.CreateMapDefinition(_conn, "LargeMap");
+            var mdf = Utility.CreateMapDefinition(_conn, "LargeMap");
             string root = "Library://UnitTests/LargeMapTest/";
 
             //We have to create 200 unique layer definitions (same content) otherwise only one GetResourceContent

Modified: trunk/Tools/Maestro/MaestroAPITests/ValidationTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/ValidationTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroAPITests/ValidationTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -444,14 +444,14 @@
             var conn = mock.NewMock<IServerConnection>();
             var featSvc = new MockFeatureService();
             var resSvc = new MockResourceService();
-            var lp = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sdf, new string[]
+            var lp = ObjectFactory.CreateLoadProcedure(LoadType.Sdf, new string[]
             {
                 "C:\\foo.sdf",
                 "C:\\bar.sdf"
             });
             lp.ResourceID = id;
 
-            var context = new ResourceValidationContext(resSvc, featSvc);
+            var context = new ResourceValidationContext(conn);
             var set = new ValidationResultSet();
             context.Reset();
             set.AddIssues(ResourceValidatorSet.Validate(context, lp, false));
@@ -459,7 +459,7 @@
             //SDF2, generalization and 2 missing files
             Assert.AreEqual(4, set.GetAllIssues().Length);
 
-            lp = ObjectFactory.CreateLoadProcedure(conn, LoadType.Shp, new string[]
+            lp = ObjectFactory.CreateLoadProcedure(LoadType.Shp, new string[]
             {
                 "C:\\foo.shp",
                 "C:\\bar.shp"
@@ -503,7 +503,7 @@
         {
             var mock = new Mockery();
             var conn = mock.NewMock<IServerConnection>();
-            var ldf1 = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 0, 0));
+            var ldf1 = ObjectFactory.CreateDefaultLayer(LayerType.Vector, new Version(1, 0, 0));
             ldf1.ResourceID = "Library://Test/Foo.LayerDefinition";
 
             var vl1 = (IVectorLayerDefinition)ldf1.SubLayer;
@@ -527,7 +527,7 @@
 
             var validator = new LayerDefinitionValidator();
 
-            var context = new ResourceValidationContext(resSvc, featSvc);
+            var context = new ResourceValidationContext(conn);
             var issues = validator.Validate(context, ldf1, false);
 
             bool hasIssue = false;
@@ -543,7 +543,7 @@
             Assert.True(hasIssue);
 
             //Case described in trac #1472
-            var ldf2 = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 0, 0));
+            var ldf2 = ObjectFactory.CreateDefaultLayer(OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 0, 0));
             ldf2.ResourceID = "Library://Test/Foo.LayerDefinition";
 
             var vl2 = (IVectorLayerDefinition)ldf2.SubLayer;
@@ -562,7 +562,7 @@
             vl2.AddVectorScaleRange(vsr1);
             vl2.AddVectorScaleRange(vsr2);
 
-            context = new ResourceValidationContext(resSvc, featSvc);
+            context = new ResourceValidationContext(conn);
             issues = validator.Validate(context, ldf2, false);
 
             hasIssue = false;

Modified: trunk/Tools/Maestro/MaestroFsPreview/MaestroFsPreview.csproj
===================================================================
--- trunk/Tools/Maestro/MaestroFsPreview/MaestroFsPreview.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroFsPreview/MaestroFsPreview.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -140,6 +140,12 @@
       <Install>true</Install>
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

Modified: trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs
===================================================================
--- trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MaestroFsPreview/MainForm.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using Maestro.Editors;
 using Maestro.Editors.Generic;
 using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using System;
 using System.Windows.Forms;

Modified: trunk/Tools/Maestro/MgCooker/MgCooker.csproj
===================================================================
--- trunk/Tools/Maestro/MgCooker/MgCooker.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MgCooker/MgCooker.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -146,14 +146,14 @@
       <Project>{cfd19053-2172-41d3-8460-0fd2123a1e88}</Project>
       <Name>Maestro.Shared.UI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\OSGeo.MapGuide.ExtendedObjectModels\OSGeo.MapGuide.ExtendedObjectModels.csproj">
-      <Project>{b3a2b816-9f41-4857-a111-09d2df2550d6}</Project>
-      <Name>OSGeo.MapGuide.ExtendedObjectModels</Name>
-    </ProjectReference>
     <ProjectReference Include="..\OSGeo.MapGuide.MaestroAPI\OSGeo.MapGuide.MaestroAPI.csproj">
       <Project>{80fa3158-8b5f-48d1-a393-0378afe48a7e}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

Modified: trunk/Tools/Maestro/MgCooker/Program.cs
===================================================================
--- trunk/Tools/Maestro/MgCooker/Program.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/MgCooker/Program.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,7 +22,6 @@
 
 using Duplicati.CommandLine;
 using Maestro.Login;
-using OSGeo.MapGuide.ExtendedObjectModels;
 using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.MaestroAPI.Tile;
 using OSGeo.MapGuide.ObjectModels;
@@ -59,7 +58,6 @@
             System.Windows.Forms.Application.EnableVisualStyles();
             System.Windows.Forms.Application.DoEvents();
             PreferredSiteList.InitCulture();
-            ModelSetup.Initialize(); //Ensures that > 1.0.0 Map Definitions are recognised
             //Parameters:
             //mapagent=
             //username=

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Capability/ConnectionCapabilities.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Linq;

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Check.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Check.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Check.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,165 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-using OSGeo.MapGuide.MaestroAPI.Resource;
-using System;
-
-namespace OSGeo.MapGuide.MaestroAPI
-{
-    /// <summary>
-    /// An exception thrown as a result of a failed precondition
-    /// </summary>
-    [global::System.Serializable]
-    public class PreconditionException : Exception
-    {
-        //
-        // For guidelines regarding the creation of new exception types, see
-        //    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp
-        // and
-        //    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp
-        //
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="PreconditionException"/> class.
-        /// </summary>
-        public PreconditionException()
-        {
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="PreconditionException"/> class.
-        /// </summary>
-        /// <param name="message">The message.</param>
-        public PreconditionException(string message)
-            : base(message)
-        {
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="PreconditionException"/> class.
-        /// </summary>
-        /// <param name="message">The message.</param>
-        /// <param name="inner">The inner.</param>
-        public PreconditionException(string message, Exception inner)
-            : base(message, inner)
-        {
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="PreconditionException"/> class.
-        /// </summary>
-        /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
-        /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
-        /// <exception cref="T:System.ArgumentNullException">
-        /// The <paramref name="info"/> parameter is null.
-        /// </exception>
-        /// <exception cref="T:System.Runtime.Serialization.SerializationException">
-        /// The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0).
-        /// </exception>
-        protected PreconditionException(
-          System.Runtime.Serialization.SerializationInfo info,
-          System.Runtime.Serialization.StreamingContext context)
-            : base(info, context) { }
-    }
-
-    /// <summary>
-    /// Pre-condition verifier utility class
-    /// </summary>
-    public static class Check
-    {
-        /// <summary>
-        /// Check that condition evaluates to true
-        /// </summary>
-        /// <param name="condition"></param>
-        /// <param name="msg"></param>
-        public static void That(bool condition, string msg)
-        {
-            if (!condition)
-                throw new PreconditionException(msg);
-        }
-
-        /// <summary>
-        /// Check that value is not null
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="obj"></param>
-        /// <param name="arg"></param>
-        public static void NotNull<T>(T obj, string arg) where T : class
-        {
-            if (obj == null)
-                throw new PreconditionException(Strings.PrecondValueNull + arg);
-        }
-
-        /// <summary>
-        /// Check that string value is not null or empty
-        /// </summary>
-        /// <param name="value"></param>
-        /// <param name="arg"></param>
-        public static void NotEmpty(string value, string arg)
-        {
-            if (string.IsNullOrEmpty(value))
-                throw new PreconditionException(Strings.PrecondStringEmpty + arg);
-        }
-
-        /// <summary>
-        /// Check that the specified condition is true
-        /// </summary>
-        /// <param name="condition"></param>
-        /// <param name="msg"></param>
-        public static void Precondition(bool condition, string msg)
-        {
-            if (!condition)
-                throw new PreconditionException(Strings.PrecondFailure + msg);
-        }
-
-        /// <summary>
-        /// Check that the given integer is between the specified range
-        /// </summary>
-        /// <param name="value">The value to check</param>
-        /// <param name="min">The lower bound</param>
-        /// <param name="max">The upper bound</param>
-        /// <param name="bInclusive">Determines whether the range is inclusive. If false, the range is exclusive</param>
-        /// <param name="msg">The message to include for precondition failure</param>
-        public static void IntBetween(int value, int min, int max, bool bInclusive, string msg)
-        {
-            bool bInRange = false;
-            if (bInclusive)
-                bInRange = (value >= min && value <= max);
-            else
-                bInRange = (value > min && value < max);
-
-            if (!bInRange)
-                throw new PreconditionException(Strings.PrecondFailure + msg);
-        }
-
-        /// <summary>
-        /// Check that the given argument is a folder resource id
-        /// </summary>
-        /// <param name="folderid">The folder resource id to check</param>
-        /// <param name="name">The argument name</param>
-        public static void IsFolderArgument(string folderid, string name)
-        {
-            if (!ResourceIdentifier.IsFolderResource(folderid))
-                throw new ArgumentException(string.Format(Strings.NotAFolder, folderid), name);
-        }
-    }
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -299,7 +299,7 @@
                             //Step 1: Create feature source document
                             var conp = new NameValueCollection();
                             conp["DefaultFileLocation"] = StringConstants.MgDataFilePath + dataName; //NOXLATE
-                            var fs = ObjectFactory.CreateFeatureSource(this.Parent, "OSGeo.SHP", conp); //NOXLATE
+                            var fs = ObjectFactory.CreateFeatureSource("OSGeo.SHP", conp); //NOXLATE
                             fs.ResourceID = fsId;
 
                             this.Parent.ResourceService.SaveResource(fs);
@@ -337,7 +337,8 @@
                                 {
                                     bool hasPrj = false;
                                     //If there is no prj file, we can just upload one with the specified WKT
-                                    foreach (var resd in fs.EnumerateResourceData())
+                                    var resData = this.Parent.ResourceService.EnumerateResourceData(fs.ResourceID);
+                                    foreach (var resd in resData.ResourceData)
                                     {
                                         if (resd.Name == resName + ".prj") //NOXLATE
                                         {
@@ -353,7 +354,7 @@
 
                                         using (var fsr = System.IO.File.OpenRead(tmp))
                                         {
-                                            fs.SetResourceData(resName + ".prj", ResourceDataType.File, fsr); //NOXLATE
+                                            this.Parent.ResourceService.SetResourceData(fs.ResourceID, resName + ".prj", ResourceDataType.File, fsr); //NOXLATE
                                             cb(this, new LengthyOperationProgressArgs(string.Format(Strings.TemplateUploadedPrj, resName), current));
                                         }
 
@@ -451,7 +452,7 @@
 
                             if (clsDef != null && geom != null)
                             {
-                                var ld = ObjectFactory.CreateDefaultLayer(this.Parent, LayerType.Vector, new Version(1, 0, 0));
+                                var ld = ObjectFactory.CreateDefaultLayer(LayerType.Vector, new Version(1, 0, 0));
 
                                 //Step 3: Assign default properties
                                 ld.ResourceID = lyrId;
@@ -578,7 +579,7 @@
                                 // 2. Upload dwf file as resource data for this document.
 
                                 //Step 1: Create and save drawing source document.
-                                IDrawingSource ds = ObjectFactory.CreateDrawingSource(this.Parent);
+                                IDrawingSource ds = ObjectFactory.CreateDrawingSource();
                                 ds.SourceName = dataName;
                                 ds.CoordinateSpace = proc.CoordinateSystem;
                                 ds.ResourceID = dsId;
@@ -590,9 +591,9 @@
                                 this.Parent.ResourceService.SetResourceData(dsId, dataName, ResourceDataType.File, System.IO.File.OpenRead(file));
                                 cb(this, new LengthyOperationProgressArgs(string.Format(Strings.TemplateLoaded, file), current));
 
-                                ds.RegenerateSheetList();
+                                ds.RegenerateSheetList(this.Parent);
                                 this.Parent.ResourceService.SaveResource(ds);
-                                ds.UpdateExtents();
+                                ds.UpdateExtents(this.Parent);
                                 this.Parent.ResourceService.SaveResource(ds);
                             }
                             else
@@ -615,7 +616,7 @@
                                 }
                                 var conp = new NameValueCollection();
                                 conp["File"] = StringConstants.MgDataFilePath + dataName;
-                                var fs = ObjectFactory.CreateFeatureSource(this.Parent, provider, conp);
+                                var fs = ObjectFactory.CreateFeatureSource(provider, conp);
                                 fs.ResourceID = fsId;
 
                                 this.Parent.ResourceService.SaveResource(fs);
@@ -698,7 +699,7 @@
                                 if (list.Section.Count > 0)
                                 {
                                     //Create drawing layer
-                                    var ld = ObjectFactory.CreateDefaultLayer(this.Parent, LayerType.Drawing, new Version(1, 0, 0));
+                                    var ld = ObjectFactory.CreateDefaultLayer(LayerType.Drawing, new Version(1, 0, 0));
                                     var dl = ld.SubLayer as IDrawingLayerDefinition;
                                     dl.ResourceId = dsId;
                                     //Use the first one
@@ -760,7 +761,7 @@
 
                                     if (clsDef != null && geom != null)
                                     {
-                                        var ld = ObjectFactory.CreateDefaultLayer(this.Parent, LayerType.Vector, new Version(1, 0, 0));
+                                        var ld = ObjectFactory.CreateDefaultLayer(LayerType.Vector, new Version(1, 0, 0));
 
                                         //Step 3: Assign default properties
                                         ld.ResourceID = lyrId;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/IGetResourceContents.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/IGetResourceContents.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/IGetResourceContents.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 
 namespace OSGeo.MapGuide.MaestroAPI.Commands

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using GeoAPI.CoordinateSystems;
 using GeoAPI.Geometries;
 using GisSharpBlog.NetTopologySuite.Geometries;
+using OSGeo.MapGuide.ObjectModels;
 using ProjNet.CoordinateSystems;
 using ObjCommon = OSGeo.MapGuide.ObjectModels.Common;
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoreTypes.cd
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoreTypes.cd	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoreTypes.cd	2014-12-27 15:14:41 UTC (rev 8468)
@@ -304,7 +304,7 @@
       <FileName>Services\ISiteService.cs</FileName>
     </TypeIdentifier>
   </Interface>
-  <Interface Name="OSGeo.MapGuide.MaestroAPI.Resource.IResource" Collapsed="true">
+  <Interface Name="IResource" Collapsed="true">
     <Position X="12" Y="2" Width="1.5" />
     <TypeIdentifier>
       <HashCode>AAAAAAAAEAAAAAACAIAAQAAAACAAAAAAAAAACAAAAAA=</HashCode>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CredentialWriter.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CredentialWriter.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CredentialWriter.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.MaestroAPI;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using System;
 using System.Diagnostics;
@@ -27,10 +28,8 @@
 using System.Text;
 using ObjCommon = OSGeo.MapGuide.ObjectModels.Common;
 
-namespace OSGeo.MapGuide.MaestroAPI
+namespace OSGeo.MapGuide.ObjectModels.FeatureSource
 {
-    using Resource;
-
     /// <summary>
     /// Extension methods for feature sources
     /// </summary>
@@ -41,16 +40,17 @@
         /// and %MG_PASSWORD% placeholder tokens in the Feature Source content.
         /// </summary>
         /// <param name="fs"></param>
+        /// <param name="conn"></param>
         /// <param name="username"></param>
         /// <param name="password"></param>
-        public static void SetEncryptedCredentials(this IFeatureSource fs, string username, string password)
+        public static void SetEncryptedCredentials(this IFeatureSource fs, IServerConnection conn, string username, string password)
         {
-            Check.NotNull(fs, "fs"); //NOXLATE
+            Check.ArgumentNotNull(fs, "fs"); //NOXLATE
             if (string.IsNullOrEmpty(fs.ResourceID))
                 throw new ArgumentException(Strings.ErrorNoResourceIdAttached);
             using (var stream = CredentialWriter.Write(username, password))
             {
-                fs.SetResourceData(StringConstants.MgUserCredentialsResourceData, ObjCommon.ResourceDataType.String, stream);
+                conn.ResourceService.SetResourceData(fs.ResourceID, StringConstants.MgUserCredentialsResourceData, ObjCommon.ResourceDataType.String, stream);
             }
         }
 
@@ -58,16 +58,17 @@
         /// Gets the encrypted username referenced by the %MG_USERNAME% placeholder token in the Feature Source content
         /// </summary>
         /// <param name="fs"></param>
+        /// <param name="conn"></param>
         /// <returns></returns>
-        public static string GetEncryptedUsername(this IFeatureSource fs)
+        public static string GetEncryptedUsername(this IFeatureSource fs, IServerConnection conn)
         {
             Check.NotNull(fs, "fs"); //NOXLATE
-            var resData = fs.EnumerateResourceData();
-            foreach (var rd in resData)
+            var resData = conn.ResourceService.EnumerateResourceData(fs.ResourceID);
+            foreach (var rd in resData.ResourceData)
             {
                 if (rd.Name.ToUpper() == StringConstants.MgUserCredentialsResourceData)
                 {
-                    using (var sr = new StreamReader(fs.GetResourceData(StringConstants.MgUserCredentialsResourceData)))
+                    using (var sr = new StreamReader(conn.ResourceService.GetResourceData(fs.ResourceID, StringConstants.MgUserCredentialsResourceData)))
                     {
                         return sr.ReadToEnd();
                     }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Resource.Conversion;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 using System.IO;
 
@@ -151,9 +152,10 @@
                     //Save resource
                     _target.ResourceService.SaveResourceAs(res, dstResId);
                     //Copy resource data
-                    foreach (var data in res.EnumerateResourceData())
+                    var resData = _source.ResourceService.EnumerateResourceData(res.ResourceID);
+                    foreach (var data in resData.ResourceData)
                     {
-                        using (var stream = res.GetResourceData(data.Name))
+                        using (var stream = _source.ResourceService.GetResourceData(res.ResourceID, data.Name))
                         {
                             if (!stream.CanSeek)
                             {
@@ -236,9 +238,10 @@
                     //Save resource
                     _target.ResourceService.SaveResourceAs(res, targetId);
                     //Copy resource data
-                    foreach (var data in res.EnumerateResourceData())
+                    var resData = _source.ResourceService.EnumerateResourceData(res.ResourceID);
+                    foreach (var data in resData.ResourceData)
                     {
-                        using (var stream = res.GetResourceData(data.Name))
+                        using (var stream = _source.ResourceService.GetResourceData(res.ResourceID, data.Name))
                         {
                             if (!stream.CanSeek)
                             {
@@ -318,9 +321,10 @@
                     //Save resource
                     _target.ResourceService.SaveResourceAs(res, targetId);
                     //Copy resource data
-                    foreach (var data in res.EnumerateResourceData())
+                    var resData = _source.ResourceService.EnumerateResourceData(res.ResourceID);
+                    foreach (var data in resData.ResourceData)
                     {
-                        using (var stream = res.GetResourceData(data.Name))
+                        using (var stream = _source.ResourceService.GetResourceData(res.ResourceID, data.Name))
                         {
                             if (!stream.CanSeek)
                             {
@@ -397,9 +401,10 @@
                 _target.ResourceService.SaveResource(res);
 
                 //Copy its resource data
-                foreach (var data in res.EnumerateResourceData())
+                var resData = _source.ResourceService.EnumerateResourceData(res.ResourceID);
+                foreach (var data in resData.ResourceData)
                 {
-                    using (var stream = res.GetResourceData(data.Name))
+                    using (var stream = _source.ResourceService.GetResourceData(res.ResourceID, data.Name))
                     {
                         if (!stream.CanSeek)
                         {
@@ -443,9 +448,10 @@
                             _target.ResourceService.SaveResource(res);
 
                             //Copy its resource data
-                            foreach (var data in res.EnumerateResourceData())
+                            var resData = _source.ResourceService.EnumerateResourceData(res.ResourceID);
+                            foreach (var data in resData.ResourceData)
                             {
-                                using (var stream = res.GetResourceData(data.Name))
+                                using (var stream = _source.ResourceService.GetResourceData(res.ResourceID, data.Name))
                                 {
                                     if (!stream.CanSeek)
                                     {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.IO;
 using System.Xml;
 
@@ -91,7 +92,7 @@
             if (sourceRoot == targetRoot)
                 return _res;
 
-            var xml = ResourceTypeRegistry.SerializeAsString(_res);
+            var xml = ObjectFactory.SerializeAsString(_res);
             var doc = new XmlDocument();
             doc.LoadXml(xml);
 
@@ -105,8 +106,7 @@
             {
                 doc.Save(ms);
                 ms.Position = 0L;
-                var modifiedRes = ResourceTypeRegistry.Deserialize(_res.ResourceType, ms);
-                modifiedRes.CurrentConnection = _res.CurrentConnection;
+                var modifiedRes = ObjectFactory.Deserialize(_res.ResourceType, ms);
                 modifiedRes.ResourceID = _res.ResourceID;
 
                 return modifiedRes;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using System;
 
 namespace OSGeo.MapGuide.MaestroAPI
@@ -72,82 +73,6 @@
     }
 
     /// <summary>
-    /// Represents the common resource types in MapGuide
-    /// </summary>
-    public enum ResourceTypes
-    {
-        /// <summary>
-        /// Map Definition
-        /// </summary>
-        MapDefinition,
-
-        /// <summary>
-        /// Layer Definition
-        /// </summary>
-        LayerDefinition,
-
-        /// <summary>
-        /// Feature Source
-        /// </summary>
-        FeatureSource,
-
-        /// <summary>
-        /// Web Layout
-        /// </summary>
-        WebLayout,
-
-        /// <summary>
-        /// Runtime Map
-        /// </summary>
-        RuntimeMap,
-
-        /// <summary>
-        /// Folder
-        /// </summary>
-        Folder,
-
-        /// <summary>
-        /// Fusion Flexible Layout
-        /// </summary>
-        ApplicationDefinition,
-
-        /// <summary>
-        /// Print Layout
-        /// </summary>
-        PrintLayout,
-
-        /// <summary>
-        /// Symbol Definition
-        /// </summary>
-        SymbolDefinition,
-
-        /// <summary>
-        /// Load Procedure
-        /// </summary>
-        LoadProcedure,
-
-        /// <summary>
-        /// Drawing Source
-        /// </summary>
-        DrawingSource,
-
-        /// <summary>
-        /// DWF-based Symbol Library
-        /// </summary>
-        SymbolLibrary,
-
-        /// <summary>
-        /// A watermark
-        /// </summary>
-        WatermarkDefinition,
-
-        /// <summary>
-        /// A selection for a runtime map
-        /// </summary>
-        Selection
-    }
-
-    /// <summary>
     /// Represents a method involving a resource id
     /// </summary>
     /// <param name="sender"></param>

Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ExtensionMethods.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ExtensionMethods.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ExtensionMethods.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -0,0 +1,726 @@
+#region Disclaimer / License
+
+// Copyright (C) 2014, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#endregion Disclaimer / License
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels.Common;
+using OSGeo.MapGuide.ObjectModels.DrawingSource;
+using OSGeo.MapGuide.MaestroAPI.Services;
+using System.IO;
+
+namespace OSGeo.MapGuide.MaestroAPI
+{
+    public static class ExtensionMethods
+    {
+    }
+}
+
+namespace OSGeo.MapGuide.ObjectModels
+{
+    public static class ExtensionMethods
+    {
+        /// <summary>
+        /// Copies the resource data to the specified resource. Both resources are assumed to originate from the same given connection
+        /// </summary>
+        /// <remarks>
+        /// Avoid using this method if you are copying a IFeatureSource with MG_USER_CREDENTIALS resource data, as MapGuide will automatically return
+        /// the decrypted username for MG_USER_CREDENTIALS, rendering the resource data invalid for the target resource. Instead use the
+        /// <see cref="M:OSGeo.MapGuide.MaestroAPI.Services.IResourceService.CopyResource"/> method, which will copy the resource and its resource
+        /// data and keep any MG_USER_CREDENTIALS items intact
+        /// </remarks>
+        /// <param name="source">The source.</param>
+        /// <param name="conn">The server connection</param>
+        /// <param name="target">The target.</param>
+        public static void CopyResourceDataTo(this IResource source, IServerConnection conn, IResource target)
+        {
+            Check.ArgumentNotNull(source, "source"); //NOXLATE
+            Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+            Check.ArgumentNotNull(target, "target"); //NOXLATE
+
+            var resData = conn.ResourceService.EnumerateResourceData(source.ResourceID);
+            foreach (var res in resData.ResourceData)
+            {
+                var data = conn.ResourceService.GetResourceData(source.ResourceID, res.Name);
+                if (!data.CanSeek)
+                {
+                    var ms = new MemoryStream();
+                    Utility.CopyStream(data, ms);
+                    data = ms;
+                }
+                conn.ResourceService.SetResourceData(target.ResourceID, res.Name, res.Type, data);
+            }
+        }
+
+        /// <summary>
+        /// Copies the resource data to the specified resource. Both resources are assumed to originate from the same given connection
+        /// </summary>
+        /// <remarks>
+        /// Avoid using this method if you are copying a IFeatureSource with MG_USER_CREDENTIALS resource data, as MapGuide will automatically return
+        /// the decrypted username for MG_USER_CREDENTIALS, rendering the resource data invalid for the target resource. Instead use the
+        /// <see cref="M:OSGeo.MapGuide.MaestroAPI.Services.IResourceService.CopyResource"/> method, which will copy the resource and its resource
+        /// data and keep any MG_USER_CREDENTIALS items intact
+        /// </remarks>
+        /// <param name="source">The source.</param>
+        /// <param name="conn">The server connection</param>
+        /// <param name="targetID">The target ID.</param>
+        public static void CopyResourceDataTo(this IResource source, IServerConnection conn, string targetID)
+        {
+            Check.NotNull(source, "source"); //NOXLATE
+            Check.NotEmpty(targetID, "targetID"); //NOXLATE
+
+            var resData = conn.ResourceService.EnumerateResourceData(source.ResourceID);
+            foreach (var res in resData.ResourceData)
+            {
+                var data = conn.ResourceService.GetResourceData(source.ResourceID, res.Name);
+                if (!data.CanSeek)
+                {
+                    var ms = new MemoryStream();
+                    Utility.CopyStream(data, ms);
+                    data = ms;
+                }
+                conn.ResourceService.SetResourceData(targetID, res.Name, res.Type, data);
+            }
+        }
+    }
+
+    namespace FeatureSource
+    {
+        public static class ExtensionMethods
+        {
+            /// <summary>
+            /// Gets the configuration document content
+            /// </summary>
+            /// <param name="fs"></param>
+            /// <param name="conn"></param>
+            /// <returns></returns>
+            public static string GetConfigurationContent(this IFeatureSource fs, IServerConnection conn)
+            {
+                Check.ArgumentNotNull(fs, "fs"); //NOXLATE
+                Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+                if (string.IsNullOrEmpty(fs.ConfigurationDocument))
+                    return string.Empty;
+
+                var content = conn.ResourceService.GetResourceData(fs.ResourceID, fs.ConfigurationDocument);
+                if (content != null)
+                {
+                    using (var sr = new StreamReader(content))
+                    {
+                        return sr.ReadToEnd();
+                    }
+                }
+                return string.Empty;
+            }
+
+            /// Sets the configuration document content
+            /// </summary>
+            /// <param name="fs"></param>
+            /// <param name="conn"></param>
+            /// <param name="xmlContent"></param>
+            public static void SetConfigurationContent(this IFeatureSource fs, IServerConnection conn, string xmlContent)
+            {
+                Check.ArgumentNotNull(fs, "fs"); //NOXLATE
+                Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+                if (string.IsNullOrEmpty(fs.ConfigurationDocument))
+                    fs.ConfigurationDocument = "config.xml"; //NOXLATE
+
+                if (string.IsNullOrEmpty(xmlContent))
+                {
+                    bool hasResourceData = false;
+                    var resDataList = conn.ResourceService.EnumerateResourceData(fs.ResourceID).ResourceData;
+                    foreach (var resData in resDataList)
+                    {
+                        if (resData.Name == fs.ConfigurationDocument)
+                        {
+                            hasResourceData = true;
+                            break;
+                        }
+                    }
+
+                    if (hasResourceData)
+                        conn.ResourceService.DeleteResourceData(fs.ResourceID, fs.ConfigurationDocument);
+                }
+                else
+                {
+                    using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xmlContent)))
+                    {
+                        conn.ResourceService.SetResourceData(fs.ResourceID, fs.ConfigurationDocument, ResourceDataType.Stream, ms);
+                    }
+                }
+            }
+
+            /// <summary>
+            /// Convenience methods to get the identity properties of a given feature class (name)
+            /// </summary>
+            /// <param name="fs">The feature source</param>
+            /// <param name="conn">The server connection</param>
+            /// <param name="className">Name of the class.</param>
+            /// <returns></returns>
+            public static string[] GetIdentityProperties(this IFeatureSource fs, IServerConnection conn, string className)
+            {
+                Check.ArgumentNotNull(fs, "fs"); //NOXLATE
+                Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+                try
+                {
+                    return conn.FeatureService.GetIdentityProperties(fs.ResourceID, className);
+                }
+                catch (Exception ex)
+                {
+                    //MgClassNotFoundException is thrown for classes w/ no identity properties
+                    //when the correct server response should be an empty array
+                    if (ex.Message.IndexOf("MgClassNotFoundException") >= 0) //NOXLATE
+                    {
+                        return new string[0];
+                    }
+                    else
+                    {
+                        throw;
+                    }
+                }
+            }
+        }
+    }
+
+    namespace DrawingSource
+    {
+        public static class ExtensionMethods
+        {
+            /// <summary>
+            /// Regenerates the sheet list in this drawing source.
+            /// </summary>
+            /// <param name="source"></param>
+            /// <param name="conn"></param>
+            /// <returns>True if sheets were regenerated. False otherwise</returns>
+            public static bool RegenerateSheetList(this IDrawingSource source, IServerConnection conn)
+            {
+                Check.ArgumentNotNull(source, "source"); //NOXLATE
+                Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+                Check.NotEmpty(source.ResourceID, "source.ResourceID"); //NOXLATE
+
+                IDrawingService dwSvc = (IDrawingService)conn.GetService((int)ServiceType.Drawing);
+                var sheets = dwSvc.EnumerateDrawingSections(source.ResourceID);
+                bool bRegen = sheets.Section.Count > 0;
+                source.RemoveAllSheets();
+                if (bRegen)
+                {
+                    foreach (var sht in sheets.Section)
+                    {
+                        source.AddSheet(source.CreateSheet(sht.Name, 0, 0, 0, 0));
+                    }
+                }
+                return bRegen;
+            }
+
+            /// <summary>
+            /// Updates the extents of all sheets based on their respective AutoCAD Viewport Data in the embedded PIA resource
+            /// </summary>
+            /// <param name="source"></param>
+            /// <param name="conn"></param>
+            public static void UpdateExtents(this IDrawingSource source, IServerConnection conn)
+            {
+                Check.ArgumentNotNull(source, "source"); //NOXLATE
+                Check.ArgumentNotNull(conn, "conn"); //NOXLATE
+                Check.NotEmpty(source.ResourceID, "source.ResourceID"); //NOXLATE
+
+                //Need drawing service
+                if (Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Drawing) < 0)
+                    throw new NotSupportedException(string.Format(OSGeo.MapGuide.MaestroAPI.Strings.ERR_SERVICE_NOT_SUPPORTED, ServiceType.Drawing.ToString()));
+
+                var drawSvc = (IDrawingService)conn.GetService((int)ServiceType.Drawing);
+
+                foreach (var sht in source.Sheet)
+                {
+                    var list = drawSvc.EnumerateDrawingSectionResources(source.ResourceID, sht.Name);
+                    foreach (var res in list.SectionResource)
+                    {
+                        if (res.Role == "AutoCAD Viewport Data") //NOXLATE
+                        {
+                            using (var stream = drawSvc.GetSectionResource(source.ResourceID, res.Href))
+                            {
+                                //This is text content
+                                using (var sr = new StreamReader(stream))
+                                {
+                                    try
+                                    {
+                                        string content = sr.ReadToEnd();
+
+                                        //Viewport parameters are:
+                                        //
+                                        // llx
+                                        // lly
+                                        // urx
+                                        // ury
+                                        //
+                                        //A the first space after each number of each parameter marks the end of that value
+
+                                        // 4 - length of "llx="
+                                        int idx = content.IndexOf("llx") + 4;  //NOXLATE
+                                        string sllx = content.Substring(idx, content.IndexOf(" ", idx) - idx); //NOXLATE
+                                        // 4 - length of "lly="
+                                        idx = content.IndexOf("lly") + 4; //NOXLATE
+                                        string slly = content.Substring(idx, content.IndexOf(" ", idx) - idx); //NOXLATE
+                                        // 4 - length of "urx="
+                                        idx = content.IndexOf("urx") + 4; //NOXLATE
+                                        string surx = content.Substring(idx, content.IndexOf(" ", idx) - idx); //NOXLATE
+                                        // 4 - length of "ury="
+                                        idx = content.IndexOf("ury") + 4; //NOXLATE
+                                        string sury = content.Substring(idx, content.IndexOf(" ", idx) - idx); //NOXLATE
+
+                                        //Update extents
+                                        sht.Extent = ObjectFactory.CreateEnvelope(
+                                            Convert.ToDouble(sllx),
+                                            Convert.ToDouble(slly),
+                                            Convert.ToDouble(surx),
+                                            Convert.ToDouble(sury));
+                                    }
+                                    catch { }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    namespace LayerDefinition
+    {
+        public static class ExtensionMethods
+        {
+            private static IFdoSpatialContext FindSpatialContext(FdoSpatialContextList spatialContexts, string scName)
+            {
+                foreach (IFdoSpatialContext sc in spatialContexts.SpatialContext)
+                {
+                    if (sc.Name == scName)
+                        return sc;
+                }
+                return null;
+            }
+
+            /// <summary>
+            /// Returns the associated spatial context for this Layer Definition
+            /// </summary>
+            /// <param name="layer"></param>
+            /// <param name="conn"></param>
+            /// <returns></returns>
+            public static IFdoSpatialContext GetSpatialContext(this ILayerDefinition layer, IServerConnection conn)
+            {
+                Check.NotNull(layer, "layer"); //NOXLATE
+                Check.NotNull(conn, "conn"); //NOXLATE
+                var ltype = layer.SubLayer.LayerType;
+                if (ltype == LayerType.Vector ||
+                    ltype == LayerType.Raster)
+                {
+                    var sContexts = conn.FeatureService.GetSpatialContextInfo(layer.SubLayer.ResourceId, false);
+                    if (ltype == LayerType.Vector)
+                    {
+                        IVectorLayerDefinition vl = (IVectorLayerDefinition)layer.SubLayer;
+                        var clsDef = conn.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
+                        var geom = clsDef.FindProperty(vl.Geometry) as GeometricPropertyDefinition;
+                        if (geom != null)
+                        {
+                            var sc = FindSpatialContext(sContexts, geom.SpatialContextAssociation);
+                            return sc;
+                        }
+                        return null;
+                    }
+                    else if (ltype == LayerType.Raster)
+                    {
+                        IRasterLayerDefinition rl = (IRasterLayerDefinition)layer.SubLayer;
+                        var clsDef = conn.FeatureService.GetClassDefinition(rl.ResourceId, rl.FeatureName);
+                        var geom = clsDef.FindProperty(rl.Geometry) as RasterPropertyDefinition;
+                        if (geom != null)
+                        {
+                            var sc = FindSpatialContext(sContexts, geom.SpatialContextAssociation);
+                            return sc;
+                        }
+                        return null;
+                    }
+                    else
+                    {
+                        return null;
+                    }
+                }
+                else
+                {
+                    return null;
+                }
+            }
+
+            /// <summary>
+            /// Returns the spatial extent of the data.
+            /// This is calculated by asking the underlying featuresource for the minimum rectangle that
+            /// contains all the features in the specified table. If the <paramref name="allowFallbackToContextInformation"/>
+            /// is set to true, and the query fails, the code will attempt to read this information
+            /// from the spatial context information instead.
+            /// </summary>
+            /// <param name="layer">The layer definition</param>
+            /// <param name="conn">The server connection</param>
+            /// <param name="allowFallbackToContextInformation">If true, will default to the extents of the active spatial context.</param>
+            /// <param name="csWkt">The coordinate system WKT that this extent corresponds to</param>
+            /// <returns></returns>
+            public static IEnvelope GetSpatialExtent(this ILayerDefinition layer, IServerConnection conn, bool allowFallbackToContextInformation, out string csWkt)
+            {
+                csWkt = null;
+                Check.NotNull(layer, "layer"); //NOXLATE
+                Check.NotNull(conn, "conn"); //NOXLATE
+
+                switch (layer.SubLayer.LayerType)
+                {
+                    case LayerType.Vector:
+                        {
+                            IEnvelope env = null;
+                            IFdoSpatialContext activeSc = null;
+                            try
+                            {
+                                activeSc = layer.GetSpatialContext(conn);
+                                if (activeSc != null)
+                                {
+                                    //TODO: Check if ones like SQL Server will return the WKT, otherwise we'll need to bring in the
+                                    //CS catalog to do CS code to WKT conversion.
+                                    csWkt = activeSc.CoordinateSystemWkt;
+                                }
+
+                                //This can fail if SpatialExtents() aggregate function is not supported
+                                env = conn.FeatureService.GetSpatialExtent(layer.SubLayer.ResourceId, ((IVectorLayerDefinition)layer.SubLayer).FeatureName, ((IVectorLayerDefinition)layer.SubLayer).Geometry);
+                                return env;
+                            }
+                            catch
+                            {
+                                //Which in that case, default to extents of active spatial context
+                                if (activeSc != null && activeSc.Extent != null)
+                                    return activeSc.Extent.Clone();
+                                else
+                                    return null;
+                            }
+                        }
+                    case LayerType.Raster:
+                        {
+                            IEnvelope env = null;
+                            IFdoSpatialContext activeSc = null;
+                            try
+                            {
+                                var scList = conn.FeatureService.GetSpatialContextInfo(layer.SubLayer.ResourceId, true);
+                                if (scList.SpatialContext.Count > 0)
+                                {
+                                    activeSc = scList.SpatialContext[0];
+                                }
+
+                                //TODO: Would any raster provider *not* return a WKT?
+                                csWkt = activeSc.CoordinateSystemWkt;
+
+                                //Can fail if SpatialExtents() aggregate function is not supported
+                                env = conn.FeatureService.GetSpatialExtent(layer.SubLayer.ResourceId, ((IRasterLayerDefinition)layer.SubLayer).FeatureName, ((IRasterLayerDefinition)layer.SubLayer).Geometry);
+                                return env;
+                            }
+                            catch //Default to extents of active spatial context
+                            {
+                                if (activeSc != null && activeSc.Extent != null)
+                                    return activeSc.Extent.Clone();
+                                else
+                                    return null;
+                            }
+                        }
+                    default:
+                        {
+                            int[] services = conn.Capabilities.SupportedServices;
+                            if (Array.IndexOf(services, (int)ServiceType.Drawing) >= 0)
+                            {
+                                var sheet = ((IDrawingLayerDefinition)layer.SubLayer).Sheet;
+                                var dws = (IDrawingSource)conn.ResourceService.GetResource(((IDrawingLayerDefinition)layer.SubLayer).ResourceId);
+
+                                if (dws.Sheet != null)
+                                {
+                                    //find matching sheet
+                                    foreach (var sht in dws.Sheet)
+                                    {
+                                        if (sheet.Equals(sht.Name))
+                                        {
+                                            csWkt = dws.CoordinateSpace;
+                                            return ObjectFactory.CreateEnvelope(sht.Extent.MinX, sht.Extent.MinY, sht.Extent.MaxX, sht.Extent.MaxY);
+                                        }
+                                    }
+                                }
+                            }
+                            return null;
+                        }
+                }
+            }
+
+            /// <summary>
+            /// Gets the name of the active spatial context used by the given layer definition
+            /// </summary>
+            /// <param name="ldf"></param>
+            /// <param name="conn"></param>
+            /// <returns></returns>
+            public static string GetLayerSpatialContextName(this ILayerDefinition ldf, IServerConnection conn)
+            {
+                var rl = ldf.SubLayer as IRasterLayerDefinition;
+                var vl = ldf.SubLayer as IVectorLayerDefinition;
+                if (vl != null)
+                {
+                    var cls = conn.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
+                    var gp = cls.FindProperty(vl.Geometry) as GeometricPropertyDefinition;
+                    if (gp != null)
+                        return gp.SpatialContextAssociation;
+                }
+                else if (rl != null)
+                {
+                    var cls = conn.FeatureService.GetClassDefinition(rl.ResourceId, rl.FeatureName);
+                    var rp = cls.FindProperty(rl.Geometry) as RasterPropertyDefinition;
+                    if (rp != null)
+                        return rp.SpatialContextAssociation;
+                }
+                return null;
+            }
+
+            /// <summary>
+            /// Creates a default point composite rule
+            /// </summary>
+            /// <param name="fact"></param>
+            /// <returns></returns>
+            public static ICompositeRule CreateDefaultPointCompositeRule(this ILayerElementFactory fact)
+            {
+                Check.NotNull(fact, "fact");
+                var rule = fact.CreateDefaultCompositeRule();
+                //Clear out existing instances
+                rule.CompositeSymbolization.RemoveAllSymbolInstances();
+
+                var ldf = (ILayerDefinition)fact;
+                var vl = (IVectorLayerDefinition)ldf.SubLayer;
+
+                string symbolName = "Square"; //NOXLATE
+
+                var ssym = ObjectFactory.CreateSimpleSymbol(vl.SymbolDefinitionVersion,
+                                                            symbolName,
+                                                            "Default Point Symbol"); //NOXLATE
+
+                var square = ssym.CreatePathGraphics();
+                square.Geometry = "M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0"; //NOXLATE
+                square.FillColor = "%FILLCOLOR%"; //NOXLATE
+                square.LineColor = "%LINECOLOR%"; //NOXLATE
+                square.LineWeight = "%LINEWEIGHT%"; //NOXLATE
+                ssym.AddGraphics(square);
+
+                ssym.PointUsage = ssym.CreatePointUsage();
+                ssym.PointUsage.Angle = "%ROTATION%"; //NOXLATE
+
+                ssym.DefineParameter("FILLCOLOR", "0xffffffff", "&Fill Color", "Fill Color", "FillColor"); //NOXLATE
+                ssym.DefineParameter("LINECOLOR", "0xff000000", "Line &Color", "Line Color", "LineColor"); //NOXLATE
+                ssym.DefineParameter("LINEWEIGHT", "0.0", "Line & Thickness", "Line Thickness", "LineWeight"); //NOXLATE
+                ssym.DefineParameter("ROTATION", "0.0", "Line & Thickness", "Line Thickness", "Angle"); //NOXLATE
+
+                var instance = rule.CompositeSymbolization.CreateInlineSimpleSymbol(ssym);
+                var overrides = instance.ParameterOverrides;
+
+                overrides.AddOverride(symbolName, "FILLCOLOR", "0xffffffff"); //NOXLATE
+                overrides.AddOverride(symbolName, "LINECOLOR", "0xff000000"); //NOXLATE
+                overrides.AddOverride(symbolName, "LINEWEIGHT", "0.0"); //NOXLATE
+                overrides.AddOverride(symbolName, "ROTATION", "0.0"); //NOXLATE
+
+                instance.AddToExclusionRegion = "true"; //NOXLATE
+                var inst2 = instance as ISymbolInstance2;
+                if (inst2 != null)
+                {
+                    inst2.UsageContext = UsageContextType.Point;
+                    inst2.GeometryContext = GeometryContextType.Point;
+                }
+
+                rule.CompositeSymbolization.AddSymbolInstance(instance);
+                return rule;
+            }
+
+            /// <summary>
+            /// Creates a default line composite rule
+            /// </summary>
+            /// <param name="fact"></param>
+            /// <returns></returns>
+            public static ICompositeRule CreateDefaultLineCompositeRule(this ILayerElementFactory fact)
+            {
+                Check.NotNull(fact, "fact");
+                var rule = fact.CreateDefaultCompositeRule();
+                //Clear out existing instances
+                rule.CompositeSymbolization.RemoveAllSymbolInstances();
+
+                var ldf = (ILayerDefinition)fact;
+                var vl = (IVectorLayerDefinition)ldf.SubLayer;
+
+                string symbolName = "Solid Line"; //NOXLATE
+
+                var ssym = ObjectFactory.CreateSimpleSymbol(vl.SymbolDefinitionVersion,
+                                                            symbolName,
+                                                            "Default Line Symbol"); //NOXLATE
+
+                var line = ssym.CreatePathGraphics();
+                line.Geometry = "M 0.0,0.0 L 1.0,0.0"; //NOXLATE
+                line.LineColor = "%LINECOLOR%"; //NOXLATE
+                line.LineWeight = "%LINEWEIGHT%"; //NOXLATE
+                line.LineWeightScalable = "true"; //NOXLATE
+                ssym.AddGraphics(line);
+
+                ssym.LineUsage = ssym.CreateLineUsage();
+                ssym.LineUsage.Repeat = "1.0";
+
+                ssym.DefineParameter("LINECOLOR", "0xff000000", "Line &Color", "Line Color", "LineColor"); //NOXLATE
+                ssym.DefineParameter("LINEWEIGHT", "0.0", "Line & Thickness", "Line Thickness", "LineWeight"); //NOXLATE
+
+                var instance = rule.CompositeSymbolization.CreateInlineSimpleSymbol(ssym);
+                var overrides = instance.ParameterOverrides;
+
+                overrides.AddOverride(symbolName, "LINECOLOR", "0xff000000"); //NOXLATE
+                overrides.AddOverride(symbolName, "LINEWEIGHT", "0.0"); //NOXLATE
+
+                var inst2 = instance as ISymbolInstance2;
+                if (inst2 != null)
+                {
+                    inst2.UsageContext = UsageContextType.Line;
+                    inst2.GeometryContext = GeometryContextType.LineString;
+                }
+
+                rule.CompositeSymbolization.AddSymbolInstance(instance);
+                return rule;
+            }
+
+            /// <summary>
+            /// Creates a default area composite rule
+            /// </summary>
+            /// <param name="fact"></param>
+            /// <returns></returns>
+            public static ICompositeRule CreateDefaultAreaCompositeRule(this ILayerElementFactory fact)
+            {
+                Check.NotNull(fact, "fact");
+                var rule = fact.CreateDefaultCompositeRule();
+                //Clear out existing instances
+                rule.CompositeSymbolization.RemoveAllSymbolInstances();
+
+                var ldf = (ILayerDefinition)fact;
+                var vl = (IVectorLayerDefinition)ldf.SubLayer;
+
+                string fillSymbolName = "Solid Fill"; //NOXLATE
+                var fillSym = ObjectFactory.CreateSimpleSymbol(vl.SymbolDefinitionVersion,
+                                                               fillSymbolName,
+                                                               "Default Area Symbol"); //NOXLATE
+
+                var fill = fillSym.CreatePathGraphics();
+                fill.Geometry = "M 0.0,0.0 h 100.0 v 100.0 h -100.0 z";
+                fill.FillColor = "%FILLCOLOR%";
+                fillSym.AddGraphics(fill);
+
+                fillSym.AreaUsage = fillSym.CreateAreaUsage();
+                fillSym.AreaUsage.RepeatX = "100.0"; //NOXLATE
+                fillSym.AreaUsage.RepeatY = "100.0"; //NOXLATE
+
+                fillSym.DefineParameter("FILLCOLOR", "0xffbfbfbf", "&Fill Color", "Fill Color", "FillColor"); //NOXLATE
+
+                var fillInstance = rule.CompositeSymbolization.CreateInlineSimpleSymbol(fillSym);
+                var fillOverrides = fillInstance.ParameterOverrides;
+
+                var fillInst2 = fillInstance as ISymbolInstance2;
+                if (fillInst2 != null)
+                {
+                    fillInst2.GeometryContext = GeometryContextType.Polygon;
+                }
+
+                fillOverrides.AddOverride(fillSymbolName, "FILLCOLOR", "0xffbfbfbf");
+
+                string lineSymbolName = "Solid Line"; //NOXLATE
+                var lineSym = ObjectFactory.CreateSimpleSymbol(vl.SymbolDefinitionVersion,
+                                                               lineSymbolName,
+                                                               "Default Line Symbol"); //NOXLATE
+
+                var line = lineSym.CreatePathGraphics();
+                line.Geometry = "M 0.0,0.0 L 1.0,0.0"; //NOXLATE
+                line.LineColor = "%LINECOLOR%"; //NOXLATE
+                line.LineWeight = "%LINEWEIGHT%"; //NOXLATE
+                line.LineWeightScalable = "false"; //NOXLATE
+                lineSym.AddGraphics(line);
+
+                lineSym.LineUsage = lineSym.CreateLineUsage();
+                lineSym.LineUsage.Repeat = "1.0";
+
+                lineSym.DefineParameter("LINECOLOR", "0xff000000", "Line &Color", "Line Color", "LineColor"); //NOXLATE
+                lineSym.DefineParameter("LINEWEIGHT", "0.0", "Line & Thickness", "Line Thickness", "LineWeight"); //NOXLATE
+
+                var lineInstance = rule.CompositeSymbolization.CreateInlineSimpleSymbol(lineSym);
+                var lineOverrides = lineInstance.ParameterOverrides;
+
+                lineOverrides.AddOverride(lineSymbolName, "LINECOLOR", "0xff000000"); //NOXLATE
+                lineOverrides.AddOverride(lineSymbolName, "LINEWEIGHT", "0.0"); //NOXLATE
+
+                var lineInst2 = lineInstance as ISymbolInstance2;
+                if (lineInst2 != null)
+                {
+                    lineInst2.GeometryContext = GeometryContextType.Polygon;
+                }
+
+                rule.CompositeSymbolization.AddSymbolInstance(fillInstance);
+                rule.CompositeSymbolization.AddSymbolInstance(lineInstance);
+                return rule;
+            }
+
+            /// <summary>
+            /// Creates a default point composite style
+            /// </summary>
+            /// <param name="fact"></param>
+            /// <returns></returns>
+            public static ICompositeTypeStyle CreateDefaultPointCompositeStyle(this ILayerElementFactory fact)
+            {
+                Check.NotNull(fact, "fact");
+                var style = fact.CreateDefaultCompositeStyle();
+                style.RemoveAllRules();
+                style.AddCompositeRule(fact.CreateDefaultPointCompositeRule());
+                return style;
+            }
+
+            /// <summary>
+            /// Creates a default line composite style
+            /// </summary>
+            /// <param name="fact"></param>
+            /// <returns></returns>
+            public static ICompositeTypeStyle CreateDefaultLineCompositeStyle(this ILayerElementFactory fact)
+            {
+                Check.NotNull(fact, "fact");
+                var style = fact.CreateDefaultCompositeStyle();
+                style.RemoveAllRules();
+                style.AddCompositeRule(fact.CreateDefaultLineCompositeRule());
+                return style;
+            }
+
+            /// <summary>
+            /// Creates a default area composite style
+            /// </summary>
+            /// <param name="fact"></param>
+            /// <returns></returns>
+            public static ICompositeTypeStyle CreateDefaultAreaCompositeStyle(this ILayerElementFactory fact)
+            {
+                Check.NotNull(fact, "fact");
+                var style = fact.CreateDefaultCompositeStyle();
+                style.RemoveAllRules();
+                style.AddCompositeRule(fact.CreateDefaultAreaCompositeRule());
+                return style;
+            }
+        }
+    }
+}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -263,11 +263,12 @@
         /// <summary>
         /// Initializes a new instance of the <see cref="RuntimeMap"/> class.
         /// </summary>
+        /// <param name="conn">The server connection</param>
         /// <param name="mdf">The map definition to create this map from.</param>
         /// <param name="metersPerUnit">The meters per unit value</param>
         /// <param name="suppressErrors"></param>
-        internal RuntimeMap(IMapDefinition mdf, double metersPerUnit, bool suppressErrors)
-            : this(mdf.CurrentConnection)
+        internal RuntimeMap(IServerConnection conn, IMapDefinition mdf, double metersPerUnit, bool suppressErrors)
+            : this(conn)
         {
             this.MetersPerUnit = metersPerUnit;
 
@@ -1812,7 +1813,7 @@
         /// <returns></returns>
         public IMapDefinition ToMapDefinition(bool useOriginalAsTemplate)
         {
-            var newMdf = ObjectFactory.CreateMapDefinition(this.CurrentConnection, ResourceIdentifier.GetName(this.MapDefinition));
+            var newMdf = Utility.CreateMapDefinition(this.CurrentConnection, ResourceIdentifier.GetName(this.MapDefinition));
             if (useOriginalAsTemplate && this.ResourceService.ResourceExists(this.MapDefinition))
             {
                 var oldMdf = (IMapDefinition)this.ResourceService.GetResource(this.MapDefinition);

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.Serialization;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
@@ -315,7 +316,7 @@
             try
             {
                 var fs = (IFeatureSource)this.Parent.ResourceService.GetResource(vl.ResourceId);
-                var cls = fs.GetClass(vl.FeatureName);
+                var cls = this.Parent.FeatureService.GetClassDefinition(fs.ResourceID, vl.FeatureName);
                 if (cls == null)
                     throw new Exception(string.Format(Strings.ERR_CLASS_NOT_FOUND, vl.FeatureName));
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -72,129 +72,6 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="..\Generated\ApplicationDefinition-1.0.0.designer.cs">
-      <Link>ObjectModels\ApplicationDefinition-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\ApplicationDefinitionInfo-1.0.0.designer.cs">
-      <Link>ObjectModels\ApplicationDefinitionInfo-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\BatchPropertyCollection-1.0.0.designer.cs">
-      <Link>ObjectModels\BatchPropertyCollection-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\DataStoreList-1.0.0.designer.cs">
-      <Link>ObjectModels\DataStoreList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\DrawingSectionList-1.0.0.designer.cs">
-      <Link>ObjectModels\DrawingSectionList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\DrawingSectionResourceList-1.0.0.designer.cs">
-      <Link>ObjectModels\DrawingSectionResourceList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\DrawingSource-1.0.0.designer.cs">
-      <Link>ObjectModels\DrawingSource-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\Envelope-1.0.0.designer.cs">
-      <Link>ObjectModels\Envelope-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\FdoLongTransactionList-1.0.0.designer.cs">
-      <Link>ObjectModels\FdoLongTransactionList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\FdoProviderCapabilities-1.0.0.designer.cs">
-      <Link>ObjectModels\FdoProviderCapabilities-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\FdoProviderCapabilities-1.1.0.designer.cs">
-      <Link>ObjectModels\FdoProviderCapabilities-1.1.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\FdoSpatialContextList-1.0.0.designer.cs">
-      <Link>ObjectModels\FdoSpatialContextList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\FeatureProviderRegistry-1.0.0.designer.cs">
-      <Link>ObjectModels\FeatureProviderRegistry-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\FeatureSet-1.0.0.designer.cs">
-      <Link>ObjectModels\FeatureSet-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\FeatureSource-1.0.0.designer.cs">
-      <Link>ObjectModels\FeatureSource-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\Group-1.0.0.designer.cs">
-      <Link>ObjectModels\Group-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\GroupList-1.0.0.designer.cs">
-      <Link>ObjectModels\GroupList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\LayerDefinition-1.0.0.designer.cs">
-      <Link>ObjectModels\LayerDefinition-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\LoadProcedure-1.0.0.designer.cs">
-      <Link>ObjectModels\LoadProcedure-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\MapDefinition-1.0.0.designer.cs">
-      <Link>ObjectModels\MapDefinition-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\PrintLayout-1.0.0.designer.cs">
-      <Link>ObjectModels\PrintLayout-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\RepositoryList-1.0.0.designer.cs">
-      <Link>ObjectModels\RepositoryList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\ResourceDataList-1.0.0.designer.cs">
-      <Link>ObjectModels\ResourceDataList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\ResourceList-1.0.0.designer.cs">
-      <Link>ObjectModels\ResourceList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\ResourcePackageManifest-1.0.0.designer.cs">
-      <Link>ObjectModels\ResourcePackageManifest-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\ResourceReferenceList-1.0.0.designer.cs">
-      <Link>ObjectModels\ResourceReferenceList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\Role-1.0.0.designer.cs">
-      <Link>ObjectModels\Role-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\RuntimeMap-2.6.0.designer.cs">
-      <Link>ObjectModels\RuntimeMap-2.6.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\SelectAggregate-1.0.0.designer.cs">
-      <Link>ObjectModels\SelectAggregate-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\Server-1.0.0.designer.cs">
-      <Link>ObjectModels\Server-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\ServerList-1.0.0.designer.cs">
-      <Link>ObjectModels\ServerList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\SiteInformation-1.0.0.designer.cs">
-      <Link>ObjectModels\SiteInformation-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\SiteVersion-1.0.0.designer.cs">
-      <Link>ObjectModels\SiteVersion-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\StringCollection-1.0.0.designer.cs">
-      <Link>ObjectModels\StringCollection-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\SymbolDefinition-1.0.0.designer.cs">
-      <Link>ObjectModels\SymbolDefinition-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\SymbolLibrary-1.0.0.designer.cs">
-      <Link>ObjectModels\SymbolLibrary-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\Types-1.0.0.designer.cs">
-      <Link>ObjectModels\Types-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\UnmanagedDataList-1.0.0.designer.cs">
-      <Link>ObjectModels\UnmanagedDataList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\User-1.0.0.designer.cs">
-      <Link>ObjectModels\User-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\UserList-1.0.0.designer.cs">
-      <Link>ObjectModels\UserList-1.0.0.designer.cs</Link>
-    </Compile>
-    <Compile Include="..\Generated\WebLayout-1.0.0.designer.cs">
-      <Link>ObjectModels\WebLayout-1.0.0.designer.cs</Link>
-    </Compile>
     <Compile Include="..\Properties\GlobalAssemblyInfo.cs">
       <Link>GlobalAssemblyInfo.cs</Link>
     </Compile>
@@ -211,7 +88,6 @@
     <Compile Include="Commands\IGetFdoCacheInfo.cs" />
     <Compile Include="Commands\IGetResourceContents.cs" />
     <Compile Include="Capability\ConnectionCapabilities.cs" />
-    <Compile Include="Check.cs" />
     <Compile Include="Commands\CommandType.cs" />
     <Compile Include="Commands\ExecuteLoadProcedure.cs" />
     <Compile Include="Commands\ICommand.cs" />
@@ -242,6 +118,7 @@
     <Compile Include="Expression\FdoFunctionNamespace.cs" />
     <Compile Include="Expression\MgFunctionNamespace.cs" />
     <Compile Include="Expression\NsDoc.cs" />
+    <Compile Include="ExtensionMethods.cs" />
     <Compile Include="Feature\ClrFdoTypeMap.cs" />
     <Compile Include="Feature\FeatureBase.cs" />
     <Compile Include="Feature\FeatureReaderBase.cs" />
@@ -260,17 +137,6 @@
     <Compile Include="Mapping\NsDoc.cs" />
     <Compile Include="CsHelper.cs" />
     <Compile Include="NsDoc.cs" />
-    <Compile Include="ObjectModels\BaseSerializable.cs" />
-    <Compile Include="ObjectModels\CommonTypes.cs" />
-    <Compile Include="ObjectModels\FdoCapabilities.cs" />
-    <Compile Include="ObjectModels\IFdoSpatialContext.cs" />
-    <Compile Include="ObjectModels\LongTransaction.cs" />
-    <Compile Include="ObjectModels\NsDoc.cs" />
-    <Compile Include="ObjectModels\RuntimeMapImpl.cs" />
-    <Compile Include="ObjectModels\RuntimeMapInterfaces.cs" />
-    <Compile Include="ObjectModels\SymbolDefFactory.cs" />
-    <Compile Include="ObjectModels\WatermarkCollectionUtil.cs" />
-    <Compile Include="ObjectModels\WatermarkInterfaces.cs" />
     <Compile Include="Resource\Comparison\BinaryData.cs" />
     <Compile Include="Resource\Comparison\CharData.cs" />
     <Compile Include="Resource\Comparison\DiffEngine.cs" />
@@ -294,7 +160,6 @@
     <Compile Include="Schema\DataPropertyDefinition.cs" />
     <Compile Include="Schema\FeatureSchema.cs" />
     <Compile Include="Schema\GeometricPropertyDefinition.cs" />
-    <Compile Include="Schema\IFdoSerializable.cs" />
     <Compile Include="Schema\NsDoc.cs" />
     <Compile Include="Schema\PropertyDefinition.cs" />
     <Compile Include="Schema\RasterPropertyDefinition.cs" />
@@ -316,59 +181,19 @@
     <Compile Include="Mapping\RuntimeMapGroup.cs" />
     <Compile Include="Mapping\RuntimeMapLayer.cs" />
     <Compile Include="MgServerConnectionBase.cs" />
-    <Compile Include="ObjectModels\ApplicationDefinition.cs" />
-    <Compile Include="ObjectModels\ApplicationDefinitionInfo.cs" />
-    <Compile Include="ObjectModels\ApplicationDefinitionInterfaces.cs" />
-    <Compile Include="ObjectModels\DrawingSource.cs" />
-    <Compile Include="ObjectModels\DrawingSourceInterfaces.cs" />
-    <Compile Include="ObjectModels\FeatureSourceInterfaces.cs" />
-    <Compile Include="ObjectModels\Geometries.cs" />
-    <Compile Include="ObjectModels\GridLayerDefinitionImpl.cs" />
-    <Compile Include="ObjectModels\Envelope.cs" />
-    <Compile Include="ObjectModels\FeatureSource.cs" />
-    <Compile Include="ObjectModels\IRepositoryItem.cs" />
-    <Compile Include="ObjectModels\LayerFactory.cs" />
-    <Compile Include="ObjectModels\LoadProcedureInterfaces.cs" />
-    <Compile Include="ObjectModels\LoadProcFactory.cs" />
-    <Compile Include="ObjectModels\MapDefinitionInterfaces.cs" />
-    <Compile Include="ObjectModels\PrintLayoutInterfaces.cs" />
-    <Compile Include="ObjectModels\SymbolInterfaces.cs" />
-    <Compile Include="ObjectModels\SymbolLibraryInterfaces.cs" />
-    <Compile Include="ObjectModels\VectorLayerDefinitionImpl.cs" />
-    <Compile Include="ObjectModels\LayerInterfaceExtensions.cs" />
-    <Compile Include="ObjectModels\LayerInterfaces.cs" />
-    <Compile Include="ObjectModels\LoadProcedure.cs" />
-    <Compile Include="ObjectModels\MapDefinition.cs" />
-    <Compile Include="ObjectModels\ObjectFactory.cs" />
-    <Compile Include="ObjectModels\PrintLayout.cs" />
-    <Compile Include="ObjectModels\ResourceItems.cs" />
-    <Compile Include="ObjectModels\ResourceList.cs" />
-    <Compile Include="ObjectModels\ResourcePackageManifest.cs" />
-    <Compile Include="ObjectModels\SymbolDefinition.cs" />
-    <Compile Include="ObjectModels\SymbolLibrary.cs" />
-    <Compile Include="ObjectModels\UnmanagedDataList.cs" />
-    <Compile Include="ObjectModels\UntypedResource.cs" />
-    <Compile Include="ObjectModels\WebLayout.cs" />
-    <Compile Include="ObjectModels\WebLayoutInterfaces.cs" />
     <Compile Include="Platform.cs" />
     <Compile Include="Properties\Resources.Designer.cs">
       <AutoGen>True</AutoGen>
       <DesignTime>True</DesignTime>
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
-    <Compile Include="ResourceTypeRegistry.cs" />
     <Compile Include="Resource\Validation\ApplicationDefinitionValidator.cs" />
     <Compile Include="Resource\Validation\BaseLayerDefinitionValidator.cs" />
     <Compile Include="Resource\Validation\BaseLoadProcedureValidator.cs" />
     <Compile Include="Resource\Validation\BaseWebLayoutValidator.cs" />
     <Compile Include="Resource\Conversion\IResourceConverter.cs" />
-    <Compile Include="Resource\IResource.cs" />
     <Compile Include="Resource\IResourceValidator.cs" />
-    <Compile Include="Resource\IVersionedEntity.cs" />
-    <Compile Include="Resource\ResourceIdentifier.cs" />
     <Compile Include="Resource\ResourceSchemaChain.cs" />
-    <Compile Include="Resource\ResourceTypeDescriptor.cs" />
-    <Compile Include="Resource\ResourceContentVersionChecker.cs" />
     <Compile Include="Resource\Validation\DrawingSourceValidator.cs" />
     <Compile Include="Resource\Validation\FeatureSourceValidator.cs" />
     <Compile Include="Resource\Validation\LayerDefinitionValidator.cs" />
@@ -386,7 +211,6 @@
     <Compile Include="SchemaOverrides\GenericConfigurationDocument.cs" />
     <Compile Include="SchemaOverrides\OdbcConfigurationDocument.cs" />
     <Compile Include="SchemaOverrides\RasterWmsItem.cs" />
-    <Compile Include="Schema\XmlNamespaces.cs" />
     <Compile Include="Serialization\Enums.cs" />
     <Compile Include="Serialization\IBinarySerializable.cs" />
     <Compile Include="Serialization\MgBinaryDeserializer.cs" />
@@ -550,7 +374,6 @@
     <Content Include="ConnectionProviders.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="ObjectModels\readme.txt" />
     <None Include="Resources\BaseTemplate.ApplicationDefinition1.xml" />
     <None Include="CoreTypes.cd" />
     <None Include="Resources\BaseTemplate.ApplicationDefinition.xml" />
@@ -584,6 +407,12 @@
       <Install>true</Install>
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -30,6 +30,7 @@
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.SchemaOverrides;
 using OSGeo.MapGuide.MaestroAPI.Serialization;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Capabilities;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
@@ -82,8 +83,6 @@
         /// </summary>
         protected PlatformConnectionBase()
         {
-            ResourceTypeRegistry.Init();
-
             m_serializers = new Hashtable();
             m_validator = new XmlValidator();
             m_cachedSchemas = new Hashtable();
@@ -414,8 +413,7 @@
             var stream = GetResourceXmlData(resourceID);
             var rt = ResourceIdentifier.GetResourceTypeAsString(resourceID);
 
-            IResource o = ResourceTypeRegistry.Deserialize(rt, stream);
-            o.CurrentConnection = GetInterface();
+            IResource o = ObjectFactory.Deserialize(rt, stream);
             o.ResourceID = resourceID;
 
             return o;
@@ -1268,7 +1266,7 @@
         /// Saves the resource.
         /// </summary>
         /// <param name="resource">The resource.</param>
-        public void SaveResource(OSGeo.MapGuide.MaestroAPI.Resource.IResource resource)
+        public void SaveResource(IResource resource)
         {
             try
             {
@@ -1287,11 +1285,11 @@
         /// </summary>
         /// <param name="resource">The resource.</param>
         /// <param name="resourceid">The resourceid.</param>
-        public void SaveResourceAs(OSGeo.MapGuide.MaestroAPI.Resource.IResource resource, string resourceid)
+        public void SaveResourceAs(IResource resource, string resourceid)
         {
             try
             {
-                var stream = ResourceTypeRegistry.Serialize(resource);
+                var stream = ObjectFactory.Serialize(resource);
                 SetResourceXmlData(resourceid, stream);
             }
             catch (Exception ex)
@@ -2303,7 +2301,7 @@
         /// <returns></returns>
         public virtual RuntimeMap CreateMap(string runtimeMapResourceId, IMapDefinition mdf, double metersPerUnit, bool suppressErrors)
         {
-            var map = new RuntimeMap(mdf, metersPerUnit, suppressErrors);
+            var map = new RuntimeMap(GetInterface(), mdf, metersPerUnit, suppressErrors);
             map.ResourceID = runtimeMapResourceId;
             map.IsDirty = false;
             return map;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.IO;
 using System.Text;
@@ -78,7 +79,7 @@
             var dstVer = string.Format("{0}.{1}.{2}", targetVersion.Major, targetVersion.Minor, targetVersion.Build); //NOXLATE
             var dstXsd = resource.ValidatingSchema.Replace(resVer, dstVer);
 
-            using (var sr = ResourceTypeRegistry.Serialize(resource))
+            using (var sr = ObjectFactory.Serialize(resource))
             {
                 using (var str = new StreamReader(sr))
                 {
@@ -86,8 +87,7 @@
                     xml.Replace(resource.ValidatingSchema, dstXsd);
                     xml.Replace("version=\"" + resVer, "version=\"" + dstVer); //NOXLATE
 
-                    var convRes = ResourceTypeRegistry.Deserialize(xml.ToString());
-                    convRes.CurrentConnection = resource.CurrentConnection;
+                    var convRes = ObjectFactory.DeserializeXml(xml.ToString());
                     convRes.ResourceID = resource.ResourceID;
                     return convRes;
                 }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ImageSymbolConverter.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ImageSymbolConverter.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ImageSymbolConverter.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -138,7 +138,7 @@
                     string targetId = targetFolder + sect.Title + "." + ResourceTypes.SymbolDefinition.ToString();
                     string dataName = sect.Title + "." + GetImageFormat(img.RawFormat);
 
-                    var symDef = ObjectFactory.CreateSimpleSymbol(_conn, sect.Title, "Image symbol definition extracted from a Symbol Library by Maestro"); //NOXLATE
+                    var symDef = Utility.CreateSimpleSymbol(_conn, sect.Title, "Image symbol definition extracted from a Symbol Library by Maestro"); //NOXLATE
                     var imgGraphics = symDef.CreateImageGraphics();
                     symDef.AddGraphics(imgGraphics);
 
@@ -216,7 +216,7 @@
                 dwf.Dispose();
                 dwf = ms;
             }
-            var ds = OSGeo.MapGuide.ObjectModels.ObjectFactory.CreateDrawingSource(conn);
+            var ds = ObjectFactory.CreateDrawingSource();
             ds.SourceName = "symbols.dwf"; //NOXLATE
             ds.ResourceID = "Session:" + conn.SessionID + "//" + Guid.NewGuid() + ".DrawingSource"; //NOXLATE
             conn.ResourceService.SaveResource(ds);

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResource.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResource.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResource.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,215 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-using OSGeo.MapGuide.ObjectModels.Common;
-using System;
-using System.ComponentModel;
-using System.IO;
-using System.Text;
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource
-{
-    /// <summary>
-    /// Represents an editable MapGuide Resource
-    /// </summary>
-    public interface IResource : IVersionedEntity, ICloneable, INotifyPropertyChanged
-    {
-        /// <summary>
-        /// Gets or sets the current connection.
-        /// </summary>
-        /// <value>The current connection.</value>
-        IServerConnection CurrentConnection { get; set; }
-
-        /// <summary>
-        /// Gets the validating schema.
-        /// </summary>
-        /// <value>The validating schema.</value>
-        string ValidatingSchema { get; }
-
-        /// <summary>
-        /// Gets or sets the resource ID.
-        /// </summary>
-        /// <value>The resource ID.</value>
-        string ResourceID { get; set; }
-
-        /// <summary>
-        /// Gets the type of the resource.
-        /// </summary>
-        /// <value>The type of the resource.</value>
-        string ResourceType { get; }
-
-        /// <summary>
-        /// Serializes this instance to XML and returns the XML content. It is not recommended to call this method directly
-        /// instead use <see cref="M:OSGeo.MapGuide.MaestroAPI.ResourceTypeRegistry.Serialize"/> as that will invoke any pre-serialization
-        /// hooks that may have been set up for this particular resource.
-        /// </summary>
-        /// <returns></returns>
-        string Serialize();
-
-        /// <summary>
-        /// Indicates whether this resource is strongly typed. If false it means the implementer
-        /// is a <see cref="T:OSGeo.MapGuide.ObjectModels.UntypedResource"/> object. This usually means that the matching serializer
-        /// could not be found because the resource version is unrecognised.
-        /// </summary>
-        bool IsStronglyTyped { get; }
-    }
-
-    /// <summary>
-    /// Extension method class
-    /// </summary>
-    public static class ResourceExtensions
-    {
-        /// <summary>
-        /// Serializes to stream.
-        /// </summary>
-        /// <param name="res">The res.</param>
-        /// <returns></returns>
-        public static Stream SerializeToStream(this IResource res)
-        {
-            string str = res.Serialize();
-            return new MemoryStream(Encoding.UTF8.GetBytes(str));
-        }
-
-        /// <summary>
-        /// Gets the resource type descriptor.
-        /// </summary>
-        /// <param name="res">The res.</param>
-        /// <returns></returns>
-        public static ResourceTypeDescriptor GetResourceTypeDescriptor(this IResource res)
-        {
-            return new ResourceTypeDescriptor(res.ResourceType, res.ResourceVersion.ToString());
-        }
-
-        /// <summary>
-        /// Copies the resource data to the specified resource
-        /// </summary>
-        /// <remarks>
-        /// Avoid using this method if you are copying a IFeatureSource with MG_USER_CREDENTIALS resource data, as MapGuide will automatically return
-        /// the decrypted username for MG_USER_CREDENTIALS, rendering the resource data invalid for the target resource. Instead use the
-        /// <see cref="M:OSGeo.MapGuide.MaestroAPI.Services.IResourceService.CopyResource"/> method, which will copy the resource and its resource
-        /// data and keep any MG_USER_CREDENTIALS items intact
-        /// </remarks>
-        /// <param name="source">The source.</param>
-        /// <param name="target">The target.</param>
-        public static void CopyResourceDataTo(this IResource source, IResource target)
-        {
-            Check.NotNull(source, "source"); //NOXLATE
-            Check.NotNull(target, "target"); //NOXLATE
-
-            foreach (var res in source.EnumerateResourceData())
-            {
-                var data = source.GetResourceData(res.Name);
-                if (!data.CanSeek)
-                {
-                    var ms = new MemoryStream();
-                    Utility.CopyStream(data, ms);
-                    data = ms;
-                }
-                target.SetResourceData(res.Name, res.Type, data);
-            }
-        }
-
-        /// <summary>
-        /// Copies the resource data to the specified resource
-        /// </summary>
-        /// <remarks>
-        /// Avoid using this method if you are copying a IFeatureSource with MG_USER_CREDENTIALS resource data, as MapGuide will automatically return
-        /// the decrypted username for MG_USER_CREDENTIALS, rendering the resource data invalid for the target resource. Instead use the
-        /// <see cref="M:OSGeo.MapGuide.MaestroAPI.Services.IResourceService.CopyResource"/> method, which will copy the resource and its resource
-        /// data and keep any MG_USER_CREDENTIALS items intact
-        /// </remarks>
-        /// <param name="source">The source.</param>
-        /// <param name="targetID">The target ID.</param>
-        public static void CopyResourceDataTo(this IResource source, string targetID)
-        {
-            Check.NotNull(source, "source"); //NOXLATE
-            Check.NotEmpty(targetID, "targetID"); //NOXLATE
-
-            foreach (var res in source.EnumerateResourceData())
-            {
-                var data = source.GetResourceData(res.Name);
-                if (!data.CanSeek)
-                {
-                    var ms = new MemoryStream();
-                    Utility.CopyStream(data, ms);
-                    data = ms;
-                }
-                source.CurrentConnection.ResourceService.SetResourceData(targetID, res.Name, res.Type, data);
-            }
-        }
-
-        /// <summary>
-        /// Convenience method for enumerating resource data of this resource
-        /// </summary>
-        /// <param name="res"></param>
-        /// <returns></returns>
-        public static ResourceDataListResourceData[] EnumerateResourceData(this IResource res)
-        {
-            if (res.CurrentConnection == null)
-                throw new ArgumentException(Strings.ERR_RESOURCE_NOT_ATTACHED);
-
-            return res.CurrentConnection.ResourceService.EnumerateResourceData(res.ResourceID).ResourceData.ToArray();
-        }
-
-        /// <summary>
-        /// Convenience method for getting an associated resource data stream of this resource
-        /// </summary>
-        /// <param name="res"></param>
-        /// <param name="dataName"></param>
-        /// <returns></returns>
-        public static Stream GetResourceData(this IResource res, string dataName)
-        {
-            if (res.CurrentConnection == null)
-                throw new ArgumentException(Strings.ERR_RESOURCE_NOT_ATTACHED);
-
-            return res.CurrentConnection.ResourceService.GetResourceData(res.ResourceID, dataName);
-        }
-
-        /// <summary>
-        /// Convenience method for setting an associated resource data stream of this resource
-        /// </summary>
-        /// <param name="res"></param>
-        /// <param name="dataName"></param>
-        /// <param name="dataType"></param>
-        /// <param name="inputStream"></param>
-        public static void SetResourceData(this IResource res, string dataName, ResourceDataType dataType, Stream inputStream)
-        {
-            if (res.CurrentConnection == null)
-                throw new ArgumentException(Strings.ERR_RESOURCE_NOT_ATTACHED);
-
-            res.CurrentConnection.ResourceService.SetResourceData(res.ResourceID, dataName, dataType, inputStream);
-        }
-
-        /// <summary>
-        /// Convenience method for deleting an associated resource data stream of this resource
-        /// </summary>
-        /// <param name="res"></param>
-        /// <param name="dataName"></param>
-        public static void DeleteResourceData(this IResource res, string dataName)
-        {
-            if (res.CurrentConnection == null)
-                throw new ArgumentException(Strings.ERR_RESOURCE_NOT_ATTACHED);
-
-            res.CurrentConnection.ResourceService.DeleteResourceData(res.ResourceID, dataName);
-        }
-    }
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 namespace OSGeo.MapGuide.MaestroAPI.Resource
 {
+    using OSGeo.MapGuide.ObjectModels;
     using Validation;
 
     /// <summary>
@@ -30,6 +31,11 @@
     public interface IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         ResourceTypeDescriptor SupportedResourceAndVersion { get; }

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IVersionedEntity.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IVersionedEntity.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IVersionedEntity.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,38 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-using System;
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource
-{
-    /// <summary>
-    /// An entity with an attached version
-    /// </summary>
-    public interface IVersionedEntity
-    {
-        /// <summary>
-        /// Gets the resource version.
-        /// </summary>
-        /// <value>The resource version.</value>
-        Version ResourceVersion { get; }
-    }
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/IResourcePreviewUrlGenerator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/IResourcePreviewUrlGenerator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/IResourcePreviewUrlGenerator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Preview
 {
     public interface IResourcePreviewUrlGenerator
@@ -28,7 +30,7 @@
 
         bool AddDebugWatermark { get; set; }
 
-        string GeneratePreviewUrl(OSGeo.MapGuide.MaestroAPI.Resource.IResource res, string locale, bool isNew, string sessionID);
+        string GeneratePreviewUrl(IResource res, string locale, bool isNew, string sessionID);
 
         bool IsPreviewableType(string resourceType);
     }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/ResourcePreviewUrlGenerator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/ResourcePreviewUrlGenerator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Preview/ResourcePreviewUrlGenerator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.WatermarkDefinition;
 using System;
 

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceContentVersionChecker.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceContentVersionChecker.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceContentVersionChecker.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,125 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-using OSGeo.MapGuide.MaestroAPI.Exceptions;
-using System;
-using System.IO;
-using System.Text;
-using System.Xml;
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource
-{
-    /// <summary>
-    /// Inspects a resource content stream to determine the version of the resource content within
-    ///
-    /// The stream to be inspected is copied and the inspection is made on the copy
-    /// </summary>
-    public sealed class ResourceContentVersionChecker : IDisposable
-    {
-        private XmlReader _reader;
-        private Stream _stream;
-
-        /// <summary>
-        /// Constructor
-        /// </summary>
-        /// <param name="stream">The resource content stream. Inspection is done on a copy of this stream</param>
-        public ResourceContentVersionChecker(Stream stream)
-        {
-            var ms = new MemoryStream();
-            Utility.CopyStream(stream, ms);
-            ms.Position = 0L; //Rewind
-            _stream = ms;
-            _reader = new XmlTextReader(_stream);
-        }
-
-        /// <summary>
-        /// Alternate constructor
-        /// </summary>
-        /// <param name="xmlContent"></param>
-        public ResourceContentVersionChecker(string xmlContent)
-        {
-            _stream = new MemoryStream(Encoding.UTF8.GetBytes(xmlContent));
-        }
-
-        private ResourceTypeDescriptor _rtd;
-
-        /// <summary>
-        /// Gets the resource content version
-        /// </summary>
-        /// <returns></returns>
-        public ResourceTypeDescriptor GetVersion()
-        {
-            if (_rtd == null)
-            {
-                _rtd = GetVersionFromXmlStream(_stream);
-            }
-            return _rtd;
-        }
-
-        /// <summary>
-        /// Gets the version from XML stream.
-        /// </summary>
-        /// <param name="ms">The ms.</param>
-        /// <returns></returns>
-        public static ResourceTypeDescriptor GetVersionFromXmlStream(Stream ms)
-        {
-            string version = "1.0.0"; //NOXLATE
-            using (var xr = XmlReader.Create(ms))
-            {
-                xr.MoveToContent();
-                if (!xr.HasAttributes)
-                    throw new SerializationException();
-
-                try
-                {
-                    //Parse version number from ResourceType-x.y.z.xsd
-                    string xsd = xr.GetAttribute("xsi:noNamespaceSchemaLocation"); //NOXLATE
-                    if (xsd == null)
-                        return null;
-
-                    int start = (xsd.LastIndexOf("-")); //NOXLATE
-                    int end = xsd.IndexOf(".xsd") - 1; //NOXLATE
-                    version = xsd.Substring(start + 1, xsd.Length - end);
-                    string typeStr = xsd.Substring(0, start);
-
-                    return new ResourceTypeDescriptor(typeStr, version);
-                }
-                finally
-                {
-                    xr.Close();
-                }
-            }
-        }
-
-        /// <summary>
-        /// Disposes this instance
-        /// </summary>
-        public void Dispose()
-        {
-            if (_stream != null)
-                _stream.Dispose();
-
-            if (_reader != null)
-                _reader.Close();
-        }
-    }
-}
\ No newline at end of file

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceIdentifier.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceIdentifier.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceIdentifier.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,626 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2009, Kenneth Skovhede
-// http://www.hexad.dk, opensource at hexad.dk
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-using System;
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource
-{
-    /// <summary>
-    /// This class contains all the required code for maintaining resource identifiers.
-    /// It has implicit conversions to and from a string, which makes it much easier to use.
-    /// It has both static methods that operate on strings, as well as a class that can be manipulated.
-    /// </summary>
-    public class ResourceIdentifier
-    {
-        /// <summary>
-        /// The actual ResourceID
-        /// </summary>
-        private string m_id;
-
-        /// <summary>
-        /// Constructs a new ResourceIdentifier with the given full path
-        /// </summary>
-        /// <param name="resourceId">The path of the resource to refence</param>
-        public ResourceIdentifier(string resourceId)
-        {
-            m_id = resourceId;
-        }
-
-        /// <summary>
-        /// Constructs a new ResourceIdentifier, based on an existing one.
-        /// </summary>
-        /// <param name="id">The resource identifier to copy</param>
-        public ResourceIdentifier(ResourceIdentifier id)
-        {
-            m_id = id.m_id;
-        }
-
-        /// <summary>
-        /// Constructs a new library based resource identifier
-        /// </summary>
-        /// <param name="name">The name of the resource, may include path information with the \"/\" character</param>
-        /// <param name="type">The type of resource the identifier names</param>
-        public ResourceIdentifier(string name, ResourceTypes type)
-        {
-            if (string.IsNullOrEmpty(name))
-                throw new ArgumentNullException("name"); //NOXLATE
-            if (name.IndexOf(".") > 0 || name.IndexOf("//") > 0 || name.IndexOf(":") > 0) //NOXLATE
-                throw new ArgumentException(Strings.ErrorResourceIdentifierInvalidChars, "name"); //NOXLATE
-            if (!Enum.IsDefined(typeof(ResourceTypes), type))
-                throw new ArgumentException(Strings.ErrorUnknownResourceType, "type"); //NOXLATE
-            m_id = StringConstants.RootIdentifier + name + EnumHelper.ResourceName(type, true);
-        }
-
-        /// <summary>
-        /// Constructs a new session based resource identifier
-        /// </summary>
-        /// <param name="name">The name of the resource, may include path information with the \"/\" character</param>
-        /// <param name="type">The type of resource the identifier names</param>
-        /// <param name="sessionId">The session id to use</param>
-        public ResourceIdentifier(string name, ResourceTypes type, string sessionId)
-            : this(name, type)
-        {
-            this.ConvertToSession(sessionId);
-        }
-
-        /// <summary>
-        /// Gets a value indicating if the resource is blank
-        /// </summary>
-        public bool IsEmpty { get { return string.IsNullOrEmpty(m_id); } }
-
-        /// <summary>
-        /// Gets or sets the name of the resource
-        /// </summary>
-        public string Name
-        {
-            get { return GetName(m_id); }
-            set { m_id = SetName(m_id, value); }
-        }
-
-        /// <summary>
-        /// Gets or sets the name and extension of the resource
-        /// </summary>
-        public string Fullname
-        {
-            get { return GetFullname(m_id); }
-            set { m_id = SetName(m_id, value); }
-        }
-
-        /// <summary>
-        /// Gets or sets the extension of the resourceId
-        /// </summary>
-        public string Extension
-        {
-            get { return GetExtension(m_id); }
-            set { m_id = SetExtension(m_id, value); }
-        }
-
-        /// <summary>
-        /// Gets the full path of the resource, that is the path without repository information
-        /// </summary>
-        public string Fullpath
-        {
-            get { return GetFullpath(m_id); }
-            set { m_id = SetPath(m_id, value); }
-        }
-
-        /// <summary>
-        /// Gets the path of the resource, that is the path without repository information and no extension
-        /// </summary>
-        public string Path
-        {
-            get { return GetPath(m_id); }
-            set { m_id = SetPath(m_id, value); }
-        }
-
-        /// <summary>
-        /// Gets or sets the path to the resource, including the repository
-        /// </summary>
-        public string RepositoryPath
-        {
-            get { return GetRepositoryPath(m_id); }
-            set { m_id = SetRepositoryPath(m_id, value); }
-        }
-
-        /// <summary>
-        /// Gets a value indicating if the resource is in the library repository
-        /// </summary>
-        public bool IsInLibrary
-        {
-            get { return GetRepository(m_id) == StringConstants.RootIdentifier; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating if the resource is in the session repository
-        /// </summary>
-        public bool IsInSessionRepository
-        {
-            get { return !this.IsInLibrary; }
-        }
-
-        /// <summary>
-        /// Converts this instance to be in the library repository
-        /// </summary>
-        public void ConvertToLibrary()
-        {
-            m_id = ResourceIdentifier.ConvertToLibrary(m_id);
-        }
-
-        /// <summary>
-        /// Converts this instance to be in the session repository
-        /// </summary>
-        /// <param name="sessionId">The sessionid</param>
-        public void ConvertToSession(string sessionId)
-        {
-            m_id = ResourceIdentifier.ConvertToSession(m_id, sessionId);
-        }
-
-        /// <summary>
-        /// Helper operator that makes using the resource identifiers easier
-        /// </summary>
-        /// <param name="id">The id to convert to a string</param>
-        /// <returns>The converted string</returns>
-        public static implicit operator string(ResourceIdentifier id)
-        {
-            return id == null ? null : id.m_id;
-        }
-
-        /// <summary>
-        /// Helper operator that makes using the resource identifiers easier
-        /// </summary>
-        /// <param name="id">The id to convert into a resource indetifier class</param>
-        /// <returns>The resource identifier</returns>
-        public static implicit operator ResourceIdentifier(string id)
-        {
-            return new ResourceIdentifier(id);
-        }
-
-        /// <summary>
-        /// Returns the full resource id as a string
-        /// </summary>
-        /// <returns>The full resource id as a string</returns>
-        public override string ToString()
-        {
-            return m_id;
-        }
-
-        /// <summary>
-        /// Gets the resource type
-        /// </summary>
-        public string ResourceType
-        {
-            get { return GetResourceTypeAsString(m_id); }
-        }
-
-        /// <summary>
-        /// Gets the length of the resource identifier as a string
-        /// </summary>
-        public int Length { get { return m_id == null ? 0 : m_id.Length; } }
-
-        /// <summary>
-        /// Gets or sets the full resource identifier
-        /// </summary>
-        public string ResourceId
-        {
-            get { return m_id; }
-            set { m_id = value; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating if the resource identifier points to a folder
-        /// </summary>
-        public bool IsFolder
-        {
-            get { return ResourceIdentifier.IsFolderResource(m_id); }
-        }
-
-        /// <summary>
-        /// Gets a value indicating if the resource identifier is valid
-        /// </summary>
-        public bool IsValid
-        {
-            get { return ResourceIdentifier.Validate(m_id); }
-        }
-
-        /// <summary>
-        /// Normalizes the identifier, that is prepends a slash if the identifier points to a folder
-        /// </summary>
-        public void Normalize()
-        {
-            m_id = ResourceIdentifier.Normalize(m_id);
-        }
-
-        /// <summary>
-        /// Gets the containing folder path for the resource, including the repository
-        /// </summary>
-        public string ParentFolder
-        {
-            get { return ResourceIdentifier.GetParentFolder(m_id, true /* Because it was initialized with a ResourceTypes enum */); }
-        }
-
-        #region Static handlers
-
-        /// <summary>
-        /// Gets the name of a resource, given its identifier
-        /// </summary>
-        /// <param name="identifier">The identifier to look for</param>
-        /// <returns>The name of the resource</returns>
-        public static string GetName(string identifier)
-        {
-            if (string.IsNullOrEmpty(identifier))
-                throw new ArgumentNullException("identifier"); //NOXLATE
-
-            string temp = GetPath(identifier);
-
-            if (string.IsNullOrEmpty(temp))
-                throw new ArgumentException(Strings.ErrorInvalidResourceIdentifier, "identifier"); //NOXLATE
-
-            return temp.Substring(temp.LastIndexOf("/") + 1); //NOXLATE
-        }
-
-        /// <summary>
-        /// Sets the name of the resource, with or without the extension
-        /// </summary>
-        /// <param name="identifier">The identifier to give a new name</param>
-        /// <param name="newname">The new name to assign</param>
-        /// <returns>The renamed identifier</returns>
-        public static string SetName(string identifier, string newname)
-        {
-            string temp = GetPath(identifier);
-            if (identifier.EndsWith("/")) //NOXLATE
-            {
-                if (!newname.EndsWith("/")) //NOXLATE
-                    newname += "/"; //NOXLATE
-            }
-            else
-                newname += "." + GetExtension(identifier); //NOXLATE
-
-            if (newname.IndexOf("/") > 0) //NOXLATE
-                throw new ArgumentException(Strings.ErrorResourceIdentifierNameInvalidChars, "newname");
-            temp = temp.Substring(0, temp.Length - GetName(identifier).Length) + newname;
-
-            return GetRepository(identifier) + temp;
-        }
-
-        /// <summary>
-        /// Sets the path of the identifier, with or without the extension
-        /// </summary>
-        /// <param name="identifier">The identifier to update</param>
-        /// <param name="newpath">The new path to user, with or without the extension</param>
-        /// <returns>The new identifier</returns>
-        public static string SetPath(string identifier, string newpath)
-        {
-            string temp = GetPath(identifier);
-            if (!identifier.EndsWith("/")) //NOXLATE
-                newpath += "." + GetExtension(identifier); //NOXLATE
-
-            return GetRepository(identifier) + newpath + (identifier.EndsWith("/") ? "/" : ""); //NOXLATE
-        }
-
-        /// <summary>
-        /// Changes the extension of the given resource
-        /// </summary>
-        /// <param name="identifier">The identifier to change the extension for</param>
-        /// <param name="newextension">The new extension to use</param>
-        /// <returns>The renmaed identifier</returns>
-        public static string SetExtension(string identifier, string newextension)
-        {
-            if (identifier.EndsWith("/")) //NOXLATE
-                throw new Exception(Strings.ErrorResourceIdCannotChangeExtensionForFolder);
-
-            if (!newextension.StartsWith(".")) //NOXLATE
-                newextension = "." + newextension; //NOXLATE
-
-            if (newextension.LastIndexOf(".") > 0) //NOXLATE
-                throw new ArgumentException(Strings.ErrorResourceIdInvalidExtension, "newextension"); //NOXLATE
-
-            return identifier.Substring(0, identifier.Length - GetExtension(identifier).Length - 1) + newextension;
-        }
-
-        /// <summary>
-        /// Gets the repository part of a resource identifier, eg.: "Library://" or "Session:xxxx//"
-        /// </summary>
-        /// <param name="identifier"></param>
-        /// <returns></returns>
-        public static string GetRepository(string identifier)
-        {
-            if (string.IsNullOrEmpty(identifier))
-                throw new ArgumentNullException("identifier"); //NOXLATE
-            int ix = identifier.IndexOf("//"); //NOXLATE
-            if (ix <= 0)
-                throw new ArgumentException(Strings.ErrorInvalidResourceIdentifier, "identifier"); //NOXLATE
-
-            string repo = identifier.Substring(0, ix);
-            if (repo != "Library:" && !repo.StartsWith("Session:")) //NOXLATE
-                throw new ArgumentException(Strings.ErrorInvalidResourceIdentifierType, "identifier"); //NOXLATE
-
-            return repo + "//"; //NOXLATE
-        }
-
-        /// <summary>
-        /// Returns the full path of the resource, that is the resourceId without the repository information
-        /// </summary>
-        /// <param name="identifier">The identifier to get the path from</param>
-        /// <returns>The path of the identifier</returns>
-        public static string GetFullpath(string identifier)
-        {
-            if (string.IsNullOrEmpty(identifier))
-                throw new ArgumentNullException("identifier"); //NOXLATE
-            return identifier.Substring(GetRepository(identifier).Length);
-        }
-
-        /// <summary>
-        /// Returns the path of the resource, that is the resourceId without the repository information and extension
-        /// </summary>
-        /// <param name="identifier">The identifier to get the path from</param>
-        /// <returns>The path of the identifier</returns>
-        public static string GetPath(string identifier)
-        {
-            if (string.IsNullOrEmpty(identifier))
-                throw new ArgumentNullException("identifier"); //NOXLATE
-            return identifier.Substring(GetRepository(identifier).Length, identifier.Length - GetExtension(identifier).Length - GetRepository(identifier).Length - 1);
-        }
-
-        /// <summary>
-        /// Gets the type of this resource.
-        /// </summary>
-        /// <remarks>Use this method over <see cref="M:OSGeo.MapGuide.MaestroAPI.Resource.ResourceIdentifier.GetResourceType"/> if the Maestro API may not be aware of the new resource type</remarks>
-        /// <param name="identifier"></param>
-        /// <returns></returns>
-        public static string GetResourceTypeAsString(string identifier)
-        {
-            return GetExtension(identifier);
-        }
-
-        /// <summary>
-        /// Gets the known type of the resource.
-        /// </summary>
-        /// <param name="identifier">The identifier.</param>
-        /// <returns></returns>
-        private static ResourceTypes GetResourceType(string identifier)
-        {
-            var ext = GetExtension(identifier);
-            if (ext == "Map") //NOXLATE
-                return ResourceTypes.RuntimeMap;
-            else
-                return (ResourceTypes)Enum.Parse(typeof(ResourceTypes), ext);
-        }
-
-        /// <summary>
-        /// Returns the extension of a resource identifier
-        /// </summary>
-        /// <param name="identifier">The identifier to get the extension from</param>
-        /// <returns>The extension of the identifier</returns>
-        private static string GetExtension(string identifier)
-        {
-            if (string.IsNullOrEmpty(identifier))
-                throw new ArgumentNullException("identifier"); //NOXLATE
-
-            if (identifier.EndsWith("/")) //NOXLATE
-                return string.Empty;
-
-            int ix = identifier.LastIndexOf("."); //NOXLATE
-            if (ix <= 0)
-                throw new ArgumentException(Strings.ErrorInvalidResourceIdentifier, "identifier"); //NOXLATE
-
-            return identifier.Substring(ix + 1);
-        }
-
-        /// <summary>
-        /// Converts a resource id to be placed in the library
-        /// </summary>
-        /// <param name="identifier">The identifier to convert</param>
-        /// <returns>The converted identifier</returns>
-        public static string ConvertToLibrary(string identifier)
-        {
-            return StringConstants.RootIdentifier + identifier.Substring(GetRepository(identifier).Length);
-        }
-
-        /// <summary>
-        /// Converts a resource id to be placed in the library
-        /// </summary>
-        /// <param name="identifier">The identifier to convert</param>
-        /// <param name="sessionId">The session id of the repository it should be placed in</param>
-        /// <returns>The converted identifier</returns>
-        public static string ConvertToSession(string identifier, string sessionId)
-        {
-            return "Session:" + sessionId + "//" + identifier.Substring(GetRepository(identifier).Length); //NOXLATE
-        }
-
-        /// <summary>
-        /// Gets the name and extension of the identifier
-        /// </summary>
-        /// <param name="identifier">The identifier to extract the information from</param>
-        /// <returns>The full name of the identifier</returns>
-        public static string GetFullname(string identifier)
-        {
-            if (identifier.EndsWith("/")) //NOXLATE
-                return GetName(identifier);
-            else
-                return GetName(identifier) + "." + GetExtension(identifier); //NOXLATE
-        }
-
-        /// <summary>
-        /// Determines if a resource identifier is valid
-        /// </summary>
-        /// <param name="identifier">The identifier to validate</param>
-        /// <param name="strict">If true, will check if the type of the resource id is one that is supported by Maestro</param>
-        /// <returns>A value indicating if the identifier is valid</returns>
-        public static bool Validate(string identifier, bool strict = true)
-        {
-            try
-            {
-                GetRepository(identifier);
-                if (identifier.IndexOf(".") < 0 && !identifier.EndsWith("/")) //NOXLATE
-                    return false;
-
-                if (identifier == StringConstants.RootIdentifier)
-                    return true;
-
-                if (IsFolderResource(identifier))
-                    return true;
-
-                if (strict)
-                {
-                    var rt = GetResourceType(identifier);
-                }
-            }
-            catch
-            {
-                return false;
-            }
-
-            return true;
-        }
-
-        /// <summary>
-        /// Returns a value indicating if the resource points to a folder
-        /// </summary>
-        /// <param name="identifier">The identifier to evaluate</param>
-        /// <returns>A value indicating if the resource points to a folder</returns>
-        public static bool IsFolderResource(string identifier)
-        {
-            return identifier.EndsWith("/"); //NOXLATE
-        }
-
-        /// <summary>
-        /// Normalizes a identifier, that is prepends a slash if it is a folder resource
-        /// </summary>
-        /// <param name="identifier">The identifier to normalize</param>
-        /// <returns>The normalized identifier</returns>
-        public static string Normalize(string identifier)
-        {
-            if (identifier.LastIndexOf(".") <= identifier.LastIndexOf("/") && !identifier.EndsWith("/")) //NOXLATE
-                return identifier + "/"; //NOXLATE
-            else
-                return identifier;
-        }
-
-        /// <summary>
-        /// Determines if a resource identifier is valid and of the desired type
-        /// </summary>
-        /// <param name="identifier">The identifier to validate</param>
-        /// <param name="type">The type the resource identifer must be</param>
-        /// <returns>A value indicating if the identifier is valid</returns>
-        public static bool Validate(string identifier, ResourceTypes type)
-        {
-            if (!Validate(identifier))
-                return false;
-
-            if (type == ResourceTypes.Folder)
-                return IsFolderResource(identifier);
-            else
-                return EnumHelper.ResourceName(type) == GetExtension(identifier);
-        }
-
-        /// <summary>
-        /// Returns the path that contains the resource, including the repository
-        /// </summary>
-        /// <param name="identifier">The resource identifier to use</param>
-        /// <returns>The folder for the identifier</returns>
-        public static string GetRepositoryPath(string identifier)
-        {
-            if (!Validate(identifier))
-                throw new Exception("Invalid resource id: " + identifier); //NOXLATE
-            identifier = Normalize(identifier);
-
-            return identifier.Substring(0, identifier.LastIndexOf("/", identifier.Length)) + "/"; //NOXLATE
-        }
-
-        /// <summary>
-        /// Sets the path including the repository to the given value
-        /// </summary>
-        /// <param name="identifier">The identifier to change the folder for</param>
-        /// <param name="folder">The new folder</param>
-        /// <returns>An identifier in the new folder</returns>
-        public static string SetRepositoryPath(string identifier, string folder)
-        {
-            if (!folder.StartsWith("Library:") && !folder.StartsWith("Session:")) //NOXLATE
-            {
-                string res = identifier.EndsWith("/") ? string.Empty : GetFullname(identifier); //NOXLATE
-                string repo = GetRepository(identifier);
-                if (!folder.EndsWith("/") && !string.IsNullOrEmpty(folder)) //NOXLATE
-                    folder += "/"; //NOXLATE
-                return repo + folder + res;
-            }
-            else if (GetExtension(identifier) == string.Empty)
-            {
-                if (!folder.EndsWith("/")) //NOXLATE
-                    folder += "/"; //NOXLATE
-                return folder;
-            }
-            else
-            {
-                if (!folder.EndsWith("/")) //NOXLATE
-                    folder += "/"; //NOXLATE
-                return folder + GetFullname(identifier);
-            }
-        }
-
-        /// <summary>
-        /// Gets the parent folder.
-        /// </summary>
-        /// <param name="identifier">The identifier.</param>
-        /// <returns></returns>
-        public static string GetParentFolder(string identifier)
-        {
-            return GetParentFolder(identifier, false);
-        }
-
-        /// <summary>
-        /// Gets the parent folder.
-        /// </summary>
-        /// <param name="identifier">The identifier.</param>
-        /// <param name="strict">If true, the type of the identifier must be one that is supported by Maestro</param>
-        /// <returns></returns>
-        internal static string GetParentFolder(string identifier, bool strict)
-        {
-            if (!Validate(identifier, strict))
-                throw new Exception(Strings.ErrorInvalidResourceIdentifier);
-            identifier = Normalize(identifier);
-
-            if (identifier == GetRepository(identifier))
-                return identifier;
-
-            if (identifier.EndsWith("/")) //NOXLATE
-                identifier = identifier.Remove(identifier.Length - 1);
-
-            identifier = identifier.Remove(identifier.LastIndexOf("/") + 1); //NOXLATE
-
-            return identifier;
-        }
-
-        #endregion Static handlers
-
-        /// <summary>
-        /// Determines whether this resource id is session-based
-        /// </summary>
-        /// <param name="resourceID">The resource ID.</param>
-        /// <returns>
-        /// 	<c>true</c> if this resource id is session-based; otherwise, <c>false</c>.
-        /// </returns>
-        public static bool IsSessionBased(string resourceID)
-        {
-            return resourceID.StartsWith("Session:"); //NOXLATE
-        }
-    }
-}
\ No newline at end of file

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,188 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource
-{
-    /// <summary>
-    /// Represents a unique resource type / version pair
-    /// </summary>
-    public class ResourceTypeDescriptor
-    {
-        /// <summary>
-        /// Initializes a new instance of the <see cref="ResourceTypeDescriptor"/> class.
-        /// </summary>
-        /// <param name="resType">Type of the res.</param>
-        /// <param name="ver">The ver.</param>
-        public ResourceTypeDescriptor(string resType, string ver)
-        {
-            Check.NotEmpty(resType, "resType"); //NOXLATE
-            Check.NotEmpty(ver, "ver"); //NOXLATE
-
-            this.ResourceType = resType;
-            this.Version = ver;
-        }
-
-        /// <summary>
-        /// Gets the name of the validating XML schema
-        /// </summary>
-        public string XsdName
-        {
-            get
-            {
-                return ResourceType + "-" + Version + ".xsd"; //NOXLATE
-            }
-        }
-
-        /// <summary>
-        /// Gets or sets the type of the resource.
-        /// </summary>
-        /// <value>The type of the resource.</value>
-        public string ResourceType { get; set; }
-
-        /// <summary>
-        /// Gets or sets the version.
-        /// </summary>
-        /// <value>The version.</value>
-        public string Version { get; set; }
-
-        /// <summary>
-        /// Determines whether the specified <see cref="System.Object"/> is equal to this instance.
-        /// </summary>
-        /// <param name="obj">The <see cref="System.Object"/> to compare with this instance.</param>
-        /// <returns>
-        /// 	<c>true</c> if the specified <see cref="System.Object"/> is equal to this instance; otherwise, <c>false</c>.
-        /// </returns>
-        /// <exception cref="T:System.NullReferenceException">
-        /// The <paramref name="obj"/> parameter is null.
-        /// </exception>
-        public override bool Equals(object obj)
-        {
-            var desc = obj as ResourceTypeDescriptor;
-            if (desc == null)
-                return false;
-
-            return this.ToString() == desc.ToString();
-        }
-
-        /// <summary>
-        /// Returns a <see cref="System.String"/> that represents this instance.
-        /// </summary>
-        /// <returns>
-        /// A <see cref="System.String"/> that represents this instance.
-        /// </returns>
-        public override string ToString()
-        {
-            return this.ResourceType + this.Version;
-        }
-
-        /// <summary>
-        /// Returns a hash code for this instance.
-        /// </summary>
-        /// <returns>
-        /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
-        /// </returns>
-        public override int GetHashCode()
-        {
-            return this.ToString().GetHashCode();
-        }
-
-        /// <summary>
-        /// Application Definition v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor ApplicationDefinition
-        {
-            get { return new ResourceTypeDescriptor("ApplicationDefinition", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Feature Source v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor FeatureSource
-        {
-            get { return new ResourceTypeDescriptor("FeatureSource", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Drawing Source v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor DrawingSource
-        {
-            get { return new ResourceTypeDescriptor("DrawingSource", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Layer Definition v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor LayerDefinition
-        {
-            get { return new ResourceTypeDescriptor("LayerDefinition", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Load Procedure v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor LoadProcedure
-        {
-            get { return new ResourceTypeDescriptor("LoadProcedure", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Map Definition v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor MapDefinition
-        {
-            get { return new ResourceTypeDescriptor("MapDefinition", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Print Layout v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor PrintLayout
-        {
-            get { return new ResourceTypeDescriptor("PrintLayout", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Symbol Library v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor SymbolLibrary
-        {
-            get { return new ResourceTypeDescriptor("SymbolLibrary", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Symbol Definition v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor SymbolDefinition
-        {
-            get { return new ResourceTypeDescriptor("SymbolDefinition", "1.0.0"); } //NOXLATE
-        }
-
-        /// <summary>
-        /// Web Layout v1.0.0
-        /// </summary>
-        public static ResourceTypeDescriptor WebLayout
-        {
-            get { return new ResourceTypeDescriptor("WebLayout", "1.0.0"); } //NOXLATE
-        }
-    }
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ApplicationDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ApplicationDefinitionValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ApplicationDefinitionValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -36,6 +36,11 @@
     public class ApplicationDefinitionValidator : IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Validats the specified resources for common issues associated with this
         /// resource type
         /// </summary>
@@ -45,7 +50,7 @@
         /// <returns></returns>
         public ValidationIssue[] Validate(ResourceValidationContext context, IResource resource, bool recurse)
         {
-            if (resource.ResourceType != OSGeo.MapGuide.MaestroAPI.ResourceTypes.ApplicationDefinition.ToString())
+            if (resource.ResourceType != ResourceTypes.ApplicationDefinition.ToString())
                 return null;
 
             //TODO: Other items to check for
@@ -79,7 +84,7 @@
                             if (map.Type.ToLower() == "mapguide") //NOXLATE
                             {
                                 var mdfId = map.GetMapDefinition();
-                                if (string.IsNullOrEmpty(mdfId) || !resource.CurrentConnection.ResourceService.ResourceExists(mdfId))
+                                if (string.IsNullOrEmpty(mdfId) || !this.Connection.ResourceService.ResourceExists(mdfId))
                                 {
                                     issues.Add(new ValidationIssue(fusionApp, ValidationStatus.Error, ValidationStatusCode.Error_Fusion_InvalidMap, string.Format(Strings.ADF_MapInvalidError, mapGroup.id)));
                                 }
@@ -115,7 +120,7 @@
                         foreach (var mdf in mapDefsInGroup)
                         {
                             var wkt = mdf.CoordinateSystem;
-                            var csCode = resource.CurrentConnection.CoordinateSystemCatalog.ConvertWktToCoordinateSystemCode(wkt);
+                            var csCode = this.Connection.CoordinateSystemCatalog.ConvertWktToCoordinateSystemCode(wkt);
                             if (csCode.ToUpper() != "WGS84.PSEUDOMERCATOR") //NOXLATE
                             {
                                 issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_Fusion_MapCoordSysIncompatibleWithCommericalLayers, string.Format(Strings.ADF_MapWithIncompatibleCommericalCs, mdf.ResourceID)));
@@ -199,7 +204,7 @@
         /// <value></value>
         public ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.ApplicationDefinition.ToString(), "1.0.0"); }
+            get { return new ResourceTypeDescriptor(ResourceTypes.ApplicationDefinition.ToString(), "1.0.0"); }
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLayerDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLayerDefinitionValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLayerDefinitionValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.DrawingSource;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
@@ -40,6 +41,11 @@
     public abstract class BaseLayerDefinitionValidator : IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Validats the specified resources for common issues associated with this
         /// resource type
         /// </summary>
@@ -62,7 +68,7 @@
         /// <param name="resource"></param>
         /// <param name="recurse"></param>
         /// <returns></returns>
-        protected static ValidationIssue[] ValidateBase(ResourceValidationContext context, IResource resource, bool recurse)
+        protected ValidationIssue[] ValidateBase(ResourceValidationContext context, IResource resource, bool recurse)
         {
             Check.NotNull(context, "context"); //NOXLATE
 
@@ -105,7 +111,7 @@
                         bool foundSchema = false;
                         bool foundGeometry = false;
 
-                        cls = fs.GetClass(qualClassName);
+                        cls = this.Connection.FeatureService.GetClassDefinition(fs.ResourceID, qualClassName);
                         if (cls != null)
                         {
                             foundSchema = true;
@@ -309,9 +315,9 @@
 
                 if (dws != null)
                 {
-                    if (Array.IndexOf(ldef.CurrentConnection.Capabilities.SupportedServices, (int)ServiceType.Drawing) >= 0)
+                    if (Array.IndexOf(this.Connection.Capabilities.SupportedServices, (int)ServiceType.Drawing) >= 0)
                     {
-                        var dwSvc = (IDrawingService)ldef.CurrentConnection.GetService((int)ServiceType.Drawing);
+                        var dwSvc = (IDrawingService)this.Connection.GetService((int)ServiceType.Drawing);
 
                         //Check if specified section exists
                         var shtList = dwSvc.EnumerateDrawingSections(dws.ResourceID);

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLoadProcedureValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLoadProcedureValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLoadProcedureValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,4 +1,5 @@
-using OSGeo.MapGuide.ObjectModels.LoadProcedure;
+using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.ObjectModels.LoadProcedure;
 using System;
 
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
@@ -10,6 +11,11 @@
     public abstract class BaseLoadProcedureValidator : IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>
@@ -45,7 +51,7 @@
             if (context.IsAlreadyValidated(resource.ResourceID))
                 return null;
 
-            if (resource.ResourceType != OSGeo.MapGuide.MaestroAPI.ResourceTypes.LoadProcedure.ToString())
+            if (resource.ResourceType != ResourceTypes.LoadProcedure.ToString())
                 return null;
 
             if (resource.ResourceVersion != new Version(1, 0, 0))

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -37,6 +37,11 @@
     public abstract class BaseMapDefinitionValidator : IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>
@@ -65,7 +70,7 @@
         /// <param name="resource"></param>
         /// <param name="recurse"></param>
         /// <returns></returns>
-        protected static ValidationIssue[] ValidateBase(ResourceValidationContext context, IResource resource, bool recurse)
+        protected ValidationIssue[] ValidateBase(ResourceValidationContext context, IResource resource, bool recurse)
         {
             Check.NotNull(context, "context"); //NOXLATE
 
@@ -165,7 +170,7 @@
                             if (l.Selectable)
                             {
                                 //Test selectability requirement
-                                string[] idProps = fs.GetIdentityProperties(vl.FeatureName);
+                                string[] idProps = fs.GetIdentityProperties(this.Connection, vl.FeatureName);
                                 if (idProps == null || idProps.Length == 0)
                                 {
                                     issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_UnselectableLayer, string.Format(Strings.MDF_UnselectableLayer, l.Name, vl.FeatureName, fs.ResourceID)));
@@ -188,7 +193,7 @@
                                     //TODO: Switch to the correct version (2.1), once released
                                     if (scList.SpatialContext[0].CoordinateSystemWkt != mdef.CoordinateSystem)
                                     {
-                                        if (layer.SubLayer.LayerType == LayerType.Raster && mdef.CurrentConnection.SiteVersion <= SiteVersions.GetVersion(OSGeo.MapGuide.MaestroAPI.KnownSiteVersions.MapGuideOS2_0_2))
+                                        if (layer.SubLayer.LayerType == LayerType.Raster && this.Connection.SiteVersion <= SiteVersions.GetVersion(OSGeo.MapGuide.MaestroAPI.KnownSiteVersions.MapGuideOS2_0_2))
                                             issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_RasterReprojection, string.Format(Strings.MDF_RasterReprojectionError, fs.ResourceID)));
                                         else
                                             issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_LayerReprojection, string.Format(Strings.MDF_DataReprojectionWarning, fs.ResourceID)));
@@ -198,7 +203,7 @@
 
                                     if (vl.Geometry != null && !skipGeomCheck)
                                     {
-                                        var env = fs.GetSpatialExtent(vl.FeatureName, vl.Geometry);
+                                        var env = this.Connection.FeatureService.GetSpatialExtent(fs.ResourceID, vl.FeatureName, vl.Geometry);
                                         if (!env.Intersects(mapEnv))
                                             issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_DataOutsideMapBounds, string.Format(Strings.MDF_DataOutsideMapWarning, fs.ResourceID)));
                                     }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseSymbolDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseSymbolDefinitionValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseSymbolDefinitionValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,4 +1,5 @@
-using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
+using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
 using System.Collections.Generic;
 
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
@@ -8,6 +9,8 @@
     /// </summary>
     public abstract class BaseSymbolDefinitionValidator : IResourceValidator
     {
+        public IServerConnection Connection { get; set; }
+
         /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
@@ -38,7 +41,7 @@
         /// <param name="resource"></param>
         /// <param name="recurse"></param>
         /// <returns></returns>
-        protected static ValidationIssue[] ValidateBase(ResourceValidationContext context, IResource resource, bool recurse)
+        protected ValidationIssue[] ValidateBase(ResourceValidationContext context, IResource resource, bool recurse)
         {
             Check.NotNull(context, "context"); //NOXLATE
 
@@ -83,7 +86,7 @@
         /// <param name="ssym">The ssym.</param>
         /// <param name="context">The context.</param>
         /// <returns></returns>
-        protected static IEnumerable<ValidationIssue> ValidateSimpleSymbolDefinition(ISimpleSymbolDefinition ssym, ResourceValidationContext context)
+        protected IEnumerable<ValidationIssue> ValidateSimpleSymbolDefinition(ISimpleSymbolDefinition ssym, ResourceValidationContext context)
         {
             //Check that one geometry usage context has been specified
             if (ssym.AreaUsage == null &&
@@ -111,9 +114,9 @@
                             else
                             {
                                 var res = context.GetResource(imgRef.ResourceId);
-                                var resData = res.EnumerateResourceData();
+                                var resData = this.Connection.ResourceService.EnumerateResourceData(res.ResourceID);
                                 bool found = false;
-                                foreach (var item in resData)
+                                foreach (var item in resData.ResourceData)
                                 {
                                     if (item.Name == imgRef.LibraryItemName)
                                         found = true;
@@ -138,7 +141,7 @@
                 }
             }
 
-            string xml = ResourceTypeRegistry.SerializeAsString(ssym);
+            string xml = ObjectFactory.SerializeAsString(ssym);
 
             //Check non existent symbol parameters
             foreach (var paramDef in ssym.ParameterDefinition.Parameter)

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -15,6 +15,11 @@
     public abstract class BaseWebLayoutValidator : IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>
@@ -53,7 +58,7 @@
             if (context.IsAlreadyValidated(resource.ResourceID))
                 return null;
 
-            if (resource.ResourceType != OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString())
+            if (resource.ResourceType != ResourceTypes.WebLayout.ToString())
                 return null;
 
             List<ValidationIssue> issues = new List<ValidationIssue>();

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.DrawingSource;
 using System.Collections.Generic;
 
@@ -30,7 +31,19 @@
     /// </summary>
     public class DrawingSourceValidator : IResourceValidator
     {
+        private string _version;
+
+        internal DrawingSourceValidator(string version = "1.0.0")
+        {
+            _version = version;
+        }
+
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Validats the specified resources for common issues associated with this
         /// resource type
         /// </summary>
@@ -68,7 +81,7 @@
         /// <value></value>
         public ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.DrawingSource.ToString(), "1.0.0"); } //NOXLATE
+            get { return new ResourceTypeDescriptor(ResourceTypes.DrawingSource.ToString(), _version); } //NOXLATE
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using System;
@@ -34,7 +35,19 @@
     /// </summary>
     public class FeatureSourceValidator : IResourceValidator
     {
+        private string _version;
+
+        internal FeatureSourceValidator(string version = "1.0.0")
+        {
+            _version = version;
+        }
+
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Validats the specified resources for common issues associated with this
         /// resource type
         /// </summary>
@@ -55,7 +68,7 @@
             List<ValidationIssue> issues = new List<ValidationIssue>();
 
             IFeatureSource feature = (IFeatureSource)resource;
-            IFeatureService featSvc = feature.CurrentConnection.FeatureService;
+            IFeatureService featSvc = this.Connection.FeatureService;
 
             //Feature Join Optimization check
             foreach (var ext in feature.Extension)
@@ -141,8 +154,8 @@
                 {
                     //Find the MG_USER_CREDENTIALS resource data item
                     bool bFound = false;
-                    var resData = feature.EnumerateResourceData();
-                    foreach (var data in resData)
+                    var resData = this.Connection.ResourceService.EnumerateResourceData(feature.ResourceID);
+                    foreach (var data in resData.ResourceData)
                     {
                         if (data.Name == StringConstants.MgUserCredentialsResourceData)
                         {
@@ -217,7 +230,7 @@
         /// <value></value>
         public ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(ResourceTypes.FeatureSource.ToString(), "1.0.0"); } //NOXLATE
+            get { return new ResourceTypeDescriptor(ResourceTypes.FeatureSource.ToString(), _version); } //NOXLATE
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
     /// <summary>
@@ -27,13 +29,20 @@
     /// </summary>
     public class LayerDefinitionValidator : BaseLayerDefinitionValidator
     {
+        private string _version;
+
+        internal LayerDefinitionValidator(string version = "1.0.0")
+        {
+            _version = version;
+        }
+
         /// <summary>
         /// Gets the supported resource and version.
         /// </summary>
         /// <value>The supported resource and version.</value>
         public override ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.0.0"); }
+            get { return new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), _version); }
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
     /// <summary>
@@ -27,13 +29,20 @@
     /// </summary>
     public class LoadProcedureValidator : BaseLoadProcedureValidator
     {
+        private string _version;
+
+        internal LoadProcedureValidator(string version = "1.0.0")
+        {
+            _version = version;
+        }
+
         /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>
         public override ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.LoadProcedure.ToString(), "1.0.0"); }
+            get { return new ResourceTypeDescriptor(ResourceTypes.LoadProcedure.ToString(), _version); }
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
     /// <summary>
@@ -27,13 +29,20 @@
     /// </summary>
     public class MapDefinitionValidator : BaseMapDefinitionValidator
     {
+        private string _version;
+
+        internal MapDefinitionValidator(string version = "1.0.0")
+        {
+            _version = version;
+        }
+
         /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>
         public override ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), "1.0.0"); }
+            get { return new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), _version); }
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/PrintLayoutValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/PrintLayoutValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/PrintLayoutValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
     /// <summary>
@@ -28,6 +30,11 @@
     public class PrintLayoutValidator : IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Capabilities;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System.Collections.Generic;
@@ -40,24 +41,26 @@
         private Dictionary<string, FeatureSourceDescription> _schemas;
         private Dictionary<string, FdoSpatialContextList> _spatialContexts;
 
-        private IResourceService _resSvc;
-        private IFeatureService _featSvc;
+        private IServerConnection _conn;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ResourceValidationContext"/> class.
         /// </summary>
-        /// <param name="resSvc">The res SVC.</param>
-        /// <param name="featSvc">The feat SVC.</param>
-        public ResourceValidationContext(IResourceService resSvc, IFeatureService featSvc)
+        /// <param name="conn">The server connection</param>
+        public ResourceValidationContext(IServerConnection conn)
         {
-            _resSvc = resSvc;
-            _featSvc = featSvc;
+            _conn = conn;
             _validated = new Dictionary<string, string>();
             _resources = new Dictionary<string, IResource>();
             _schemas = new Dictionary<string, FeatureSourceDescription>();
             _spatialContexts = new Dictionary<string, FdoSpatialContextList>();
         }
 
+        internal IServerConnection Connection
+        {
+            get { return _conn; }
+        }
+
         /// <summary>
         /// Clears all cached items and validated resources
         /// </summary>
@@ -82,7 +85,7 @@
                 return _spatialContexts[resourceId];
             }
 
-            var scList = _featSvc.GetSpatialContextInfo(resourceId, false);
+            var scList = _conn.FeatureService.GetSpatialContextInfo(resourceId, false);
             _spatialContexts[resourceId] = scList;
 
             return scList;
@@ -101,7 +104,7 @@
                 return _schemas[resourceId];
             }
 
-            var desc = _featSvc.DescribeFeatureSource(resourceId);
+            var desc = _conn.FeatureService.DescribeFeatureSource(resourceId);
             _schemas[resourceId] = desc;
 
             return desc;
@@ -120,7 +123,7 @@
                 return _resources[resourceId];
             }
 
-            var res = _resSvc.GetResource(resourceId);
+            var res = _conn.ResourceService.GetResource(resourceId);
             _resources[resourceId] = res;
 
             return res;
@@ -161,7 +164,7 @@
         /// <returns></returns>
         public bool ResourceExists(string resourceId)
         {
-            return _resSvc.ResourceExists(resourceId);
+            return _conn.ResourceService.ResourceExists(resourceId);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorLoader.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorLoader.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorLoader.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -38,16 +38,35 @@
                 return;
 
             ResourceValidatorSet.RegisterValidator(new DrawingSourceValidator());
+            ResourceValidatorSet.RegisterValidator(new SymbolLibraryValidator());
+            ResourceValidatorSet.RegisterValidator(new PrintLayoutValidator());
             ResourceValidatorSet.RegisterValidator(new FeatureSourceValidator());
-            ResourceValidatorSet.RegisterValidator(new LayerDefinitionValidator());
-            ResourceValidatorSet.RegisterValidator(new MapDefinitionValidator());
-            ResourceValidatorSet.RegisterValidator(new WebLayoutValidator());
             ResourceValidatorSet.RegisterValidator(new ApplicationDefinitionValidator());
-            ResourceValidatorSet.RegisterValidator(new LoadProcedureValidator());
-            ResourceValidatorSet.RegisterValidator(new SymbolDefinitionValidator());
-            ResourceValidatorSet.RegisterValidator(new SymbolLibraryValidator());
-            ResourceValidatorSet.RegisterValidator(new PrintLayoutValidator());
 
+            //NOTE: As of right now, all resources (regardless of version) are validated
+            //with the same logic with each respective validator. In the event that a specific
+            //resource requires its own validation class, it should be registered here.
+
+            ResourceValidatorSet.RegisterValidator(new LayerDefinitionValidator("1.0.0"));
+            ResourceValidatorSet.RegisterValidator(new LayerDefinitionValidator("1.1.0"));
+            ResourceValidatorSet.RegisterValidator(new LayerDefinitionValidator("1.2.0"));
+            ResourceValidatorSet.RegisterValidator(new LayerDefinitionValidator("1.3.0"));
+            ResourceValidatorSet.RegisterValidator(new LayerDefinitionValidator("2.3.0"));
+            ResourceValidatorSet.RegisterValidator(new LayerDefinitionValidator("2.4.0"));
+            ResourceValidatorSet.RegisterValidator(new MapDefinitionValidator("1.0.0"));
+            ResourceValidatorSet.RegisterValidator(new MapDefinitionValidator("2.3.0"));
+            ResourceValidatorSet.RegisterValidator(new MapDefinitionValidator("2.4.0"));
+            ResourceValidatorSet.RegisterValidator(new WebLayoutValidator("1.0.0"));
+            ResourceValidatorSet.RegisterValidator(new WebLayoutValidator("1.1.0"));
+            ResourceValidatorSet.RegisterValidator(new WebLayoutValidator("2.4.0"));
+            ResourceValidatorSet.RegisterValidator(new WebLayoutValidator("2.6.0"));
+            ResourceValidatorSet.RegisterValidator(new LoadProcedureValidator("1.0.0"));
+            ResourceValidatorSet.RegisterValidator(new LoadProcedureValidator("1.1.0"));
+            ResourceValidatorSet.RegisterValidator(new LoadProcedureValidator("2.2.0"));
+            ResourceValidatorSet.RegisterValidator(new SymbolDefinitionValidator("1.0.0"));
+            ResourceValidatorSet.RegisterValidator(new SymbolDefinitionValidator("1.1.0"));
+            ResourceValidatorSet.RegisterValidator(new SymbolDefinitionValidator("2.4.0"));
+
             m_initialized = true;
         }
     }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 
@@ -83,6 +84,9 @@
             {
                 foreach (IResourceValidator v in m_validators)
                 {
+                    //Ensure the current connection is set before validating
+                    v.Connection = context.Connection;
+
                     if (!v.SupportedResourceAndVersion.Equals(item.GetResourceTypeDescriptor()))
                         continue;
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
     /// <summary>
@@ -27,13 +29,20 @@
     /// </summary>
     public class SymbolDefinitionValidator : BaseSymbolDefinitionValidator
     {
+        private string _version;
+
+        internal SymbolDefinitionValidator(string version = "1.0.0")
+        {
+            _version = version;
+        }
+
         /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>
         public override ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(ResourceTypes.SymbolDefinition.ToString(), "1.0.0"); } //NOXLATE
+            get { return new ResourceTypeDescriptor(ResourceTypes.SymbolDefinition.ToString(), _version); } //NOXLATE
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolLibraryValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolLibraryValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolLibraryValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
     /// <summary>
@@ -28,6 +30,11 @@
     public class SymbolLibraryValidator : IResourceValidator
     {
         /// <summary>
+        /// The server connection which validation will be performed against
+        /// </summary>
+        public IServerConnection Connection { get; set; }
+
+        /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationResultSet.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationResultSet.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationResultSet.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 
@@ -49,7 +50,7 @@
         public ValidationResultSet(IEnumerable<ValidationIssue> issues)
             : this()
         {
-            Check.NotNull(issues, "issues"); //NOXLATE
+            Check.ArgumentNotNull(issues, "issues"); //NOXLATE
 
             AddIssues(issues);
         }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
     /// <summary>
@@ -27,13 +29,20 @@
     /// </summary>
     public class WebLayoutValidator : BaseWebLayoutValidator
     {
+        private string _version;
+
+        internal WebLayoutValidator(string version = "1.0.0")
+        {
+            _version = version;
+        }
+
         /// <summary>
         /// Gets the resource type and version this validator supports
         /// </summary>
         /// <value></value>
         public override ResourceTypeDescriptor SupportedResourceAndVersion
         {
-            get { return new ResourceTypeDescriptor(OSGeo.MapGuide.MaestroAPI.ResourceTypes.WebLayout.ToString(), "1.0.0"); } //NOXLATE
+            get { return new ResourceTypeDescriptor(ResourceTypes.WebLayout.ToString(), _version); } //NOXLATE
         }
     }
 }
\ No newline at end of file

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,299 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-using OSGeo.MapGuide.MaestroAPI.Exceptions;
-using OSGeo.MapGuide.MaestroAPI.Resource;
-using OSGeo.MapGuide.ObjectModels;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Xml;
-
-namespace OSGeo.MapGuide.MaestroAPI
-{
-    /// <summary>
-    ///
-    /// </summary>
-    public delegate IResource ResourceDeserializationCallback(string xml);
-
-    /// <summary>
-    ///
-    /// </summary>
-    public delegate Stream ResourceSerializationCallback(IResource res);
-
-    /// <summary>
-    /// A resource serializer
-    /// </summary>
-    public class ResourceSerializer
-    {
-        /// <summary>
-        /// Gets or sets the serialize method.
-        /// </summary>
-        /// <value>The serialize method.</value>
-        public ResourceSerializationCallback Serialize { get; set; }
-
-        /// <summary>
-        /// Gets or sets the deserialize method.
-        /// </summary>
-        /// <value>The deserialize method.</value>
-        public ResourceDeserializationCallback Deserialize { get; set; }
-    }
-
-    //TODO: Expand on documentation as this is an important class
-
-    /// <summary>
-    /// A registry of serializers allowing automatic serialization/deserialization of any XML
-    /// content based on its version and resource type.
-    /// </summary>
-    public static class ResourceTypeRegistry
-    {
-        private static Dictionary<ResourceTypeDescriptor, ResourceSerializer> _serializers;
-
-        static ResourceTypeRegistry()
-        {
-            _serializers = new Dictionary<ResourceTypeDescriptor, ResourceSerializer>();
-
-            //ApplicationDefinition 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.ApplicationDefinition,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.ApplicationDefinition.v1_0_0.ApplicationDefinitionType.Deserialize(xml); }
-                });
-
-            //DrawingSource 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.DrawingSource,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.DrawingSource.v1_0_0.DrawingSource.Deserialize(xml); }
-                });
-
-            //FeatureSource 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.FeatureSource,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.FeatureSource.v1_0_0.FeatureSourceType.Deserialize(xml); }
-                });
-
-            //LayerDefinition 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.LayerDefinition,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.LayerDefinition.v1_0_0.LayerDefinition.Deserialize(xml); }
-                });
-
-            //LoadProcedure 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.LoadProcedure,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.LoadProcedure.v1_0_0.LoadProcedure.Deserialize(xml); }
-                });
-
-            //MapDefinition 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.MapDefinition,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return OSGeo.MapGuide.ObjectModels.MapDefinition.v1_0_0.MdfEntryPoint.Serialize(res); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.MapDefinition.v1_0_0.MdfEntryPoint.Deserialize(xml); }
-                });
-
-            //PrintLayout 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.PrintLayout,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.PrintLayout.v1_0_0.PrintLayout.Deserialize(xml); }
-                });
-
-            //SymbolDefinition 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.SymbolDefinition,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) =>
-                    {
-                        //HACK: We have to peek at the XML to determine if this is simple or compound.
-                        var doc = new XmlDocument();
-                        doc.LoadXml(xml);
-                        if (doc.DocumentElement.Name == "SimpleSymbolDefinition") //NOXLATE
-                        {
-                            return OSGeo.MapGuide.ObjectModels.SymbolDefinition.v1_0_0.SimpleSymbolDefinition.Deserialize(xml);
-                        }
-                        else
-                        {
-                            if (doc.DocumentElement.Name == "CompoundSymbolDefinition") //NOXLATE
-                                return OSGeo.MapGuide.ObjectModels.SymbolDefinition.v1_0_0.CompoundSymbolDefinition.Deserialize(xml);
-                            else //WTF?
-                                throw new SerializationException(Strings.ErrorCouldNotDetermineSymbolType);
-                        }
-                    }
-                });
-
-            //SymbolLibrary 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.SymbolLibrary,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.SymbolLibrary.v1_0_0.SymbolLibraryType.Deserialize(xml); }
-                });
-
-            //WebLayout 1.0.0
-            _serializers.Add(
-                ResourceTypeDescriptor.WebLayout,
-                new ResourceSerializer()
-                {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.WebLayout.v1_0_0.WebLayoutType.Deserialize(xml); }
-                });
-        }
-
-        /// <summary>
-        /// Registers a resource serializer
-        /// </summary>
-        /// <param name="desc">The desc.</param>
-        /// <param name="serializer">The serializer.</param>
-        public static void RegisterResource(ResourceTypeDescriptor desc, ResourceSerializer serializer)
-        {
-            if (_serializers.ContainsKey(desc))
-                throw new ArgumentException(string.Format(Strings.ERR_SERIALIZER_ALREADY_REGISTERED, desc.ResourceType, desc.Version), "desc"); //NOXLATE
-
-            _serializers.Add(desc, serializer);
-        }
-
-        /// <summary>
-        /// Registers a resource serializer
-        /// </summary>
-        /// <param name="desc">The desc.</param>
-        /// <param name="serializeMethod">The serialize method.</param>
-        /// <param name="deserializeMethod">The deserialize method.</param>
-        public static void RegisterResource(ResourceTypeDescriptor desc, ResourceSerializationCallback serializeMethod, ResourceDeserializationCallback deserializeMethod)
-        {
-            RegisterResource(desc, new ResourceSerializer() { Deserialize = deserializeMethod, Serialize = serializeMethod });
-        }
-
-        internal static void Init()
-        {
-            //does nothing, it's just for kicking the static constructor into gear
-        }
-
-        /// <summary>
-        /// Deserializes the specified stream for the specified resource type.
-        /// </summary>
-        /// <param name="resourceType">Type of the resource.</param>
-        /// <param name="stream">The stream.</param>
-        /// <returns></returns>
-        public static IResource Deserialize(string resourceType, Stream stream)
-        {
-            //UGLY: We have to peek inside the stream to determine the version number
-
-            //House the stream inside a rewindable memory stream
-            using (var ms = new MemoryStream())
-            {
-                Utility.CopyStream(stream, ms);
-                ms.Position = 0L; //Rewind
-
-                var rd = ResourceContentVersionChecker.GetVersionFromXmlStream(ms);
-                Debug.Assert(rd.ResourceType.Equals(resourceType.ToString()));
-
-                ms.Position = 0L; //Rewind
-
-                using (var reader = new StreamReader(ms))
-                {
-                    var xml = reader.ReadToEnd();
-                    if (_serializers.ContainsKey(rd))
-                        return _serializers[rd].Deserialize(xml);
-                    else
-                        return new UntypedResource(xml, resourceType, rd.Version);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Serializes the specified resource.
-        /// </summary>
-        /// <param name="res">The resource.</param>
-        /// <returns></returns>
-        public static Stream Serialize(IResource res)
-        {
-            var rd = res.GetResourceTypeDescriptor();
-            if (!_serializers.ContainsKey(rd))
-            {
-                var utr = res as UntypedResource;
-                if (utr == null)
-                    throw new SerializationException(Strings.ERR_NO_SERIALIZER + rd.ToString());
-                return utr.SerializeToStream();
-            }
-
-            return _serializers[rd].Serialize(res);
-        }
-
-        /// <summary>
-        /// Serializes the specified resource.
-        /// </summary>
-        /// <param name="res"></param>
-        /// <returns></returns>
-        public static string SerializeAsString(IResource res)
-        {
-            using (var stream = Serialize(res))
-            {
-                using (var sr = new StreamReader(stream))
-                {
-                    return sr.ReadToEnd();
-                }
-            }
-        }
-
-        /// <summary>
-        /// Deserializes the specified XML.
-        /// </summary>
-        /// <param name="xml">The XML.</param>
-        /// <returns></returns>
-        public static IResource Deserialize(string xml)
-        {
-            var checker = new ResourceContentVersionChecker(xml);
-            var rd = checker.GetVersion();
-            if (rd == null)
-                throw new SerializationException(Strings.ERR_NOT_RESOURCE_CONTENT_XML);
-
-            if (!_serializers.ContainsKey(rd))
-            {
-                return new UntypedResource(xml, rd.ResourceType, rd.Version);
-            }
-
-            return _serializers[rd].Deserialize(xml);
-        }
-    }
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Globalization;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSchema.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSchema.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSchema.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,8 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Xml;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/IFdoSerializable.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/IFdoSerializable.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/IFdoSerializable.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,46 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-using System.Xml;
-
-namespace OSGeo.MapGuide.MaestroAPI.Schema
-{
-    /// <summary>
-    /// Defines an interface for reading and writing content to and from FDO XML documents
-    /// </summary>
-    public interface IFdoSerializable
-    {
-        /// <summary>
-        /// Writes the current element's content
-        /// </summary>
-        /// <param name="doc"></param>
-        /// <param name="currentNode"></param>
-        void WriteXml(XmlDocument doc, XmlNode currentNode);
-
-        /// <summary>
-        /// Set the current element's content from the current XML node
-        /// </summary>
-        /// <param name="node"></param>
-        /// <param name="mgr"></param>
-        void ReadXml(XmlNode node, XmlNamespaceManager mgr);
-    }
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using System;
 
 namespace OSGeo.MapGuide.MaestroAPI.Schema

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/XmlNamespaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/XmlNamespaces.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/XmlNamespaces.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,60 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-#endregion Disclaimer / License
-
-namespace OSGeo.MapGuide.MaestroAPI.Schema
-{
-    /// <summary>
-    /// A set of XML namespaces commonly used in FDO XML documents
-    /// </summary>
-    public static class XmlNamespaces
-    {
-        /// <summary>
-        /// XML Schema namespace
-        /// </summary>
-        public const string XS = "http://www.w3.org/2001/XMLSchema"; //NOXLATE
-
-        /// <summary>
-        /// XML Schema Instance namespace
-        /// </summary>
-        public const string XSI = "http://www.w3.org/2001/XMLSchema-instance"; //NOXLATE
-
-        /// <summary>
-        /// XLink namespace
-        /// </summary>
-        public const string XLINK = "http://www.w3.org/1999/xlink"; //NOXLATE
-
-        /// <summary>
-        /// GML (Geography Markup Language) namespace
-        /// </summary>
-        public const string GML = "http://www.opengis.net/gml"; //NOXLATE
-
-        /// <summary>
-        /// FDO (Feature Data Objects) namespace
-        /// </summary>
-        public const string FDO = "http://fdo.osgeo.org/schemas"; //NOXLATE
-
-        /// <summary>
-        /// FDS namespace
-        /// </summary>
-        public const string FDS = "http://fdo.osgeo.org/schemas/fds"; //NOXLATE
-    }
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/ConfigurationDocument.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/ConfigurationDocument.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/ConfigurationDocument.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 
 namespace OSGeo.MapGuide.MaestroAPI.SchemaOverrides

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 using System.Collections.Generic;
 using System.Drawing;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsConfigurationDocument.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsConfigurationDocument.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsConfigurationDocument.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -190,8 +190,9 @@
         /// context from the given Feature Source is used
         /// </summary>
         /// <param name="fs"></param>
+        /// <param name="conn"></param>
         /// <returns></returns>
-        public string GetDefaultSpatialContext(IFeatureSource fs)
+        public string GetDefaultSpatialContext(IFeatureSource fs, IServerConnection conn)
         {
             //BOGUS: This was not as sufficient as I originally thought, nevertheless this contains
             //information that would not exist if we constructed the document the old fashioned way.
@@ -202,7 +203,7 @@
             }
             else
             {
-                var list = fs.GetSpatialInfo(false);
+                var list = conn.FeatureService.GetSpatialContextInfo(fs.ResourceID, false);
                 if (list.SpatialContext.Count > 0)
                 {
                     defaultScName = list.SpatialContext[0].Name;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsLayerDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsLayerDefinition.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/WmsLayerDefinition.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels.Common;
 using System;
 
 namespace OSGeo.MapGuide.MaestroAPI.SchemaOverrides

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Services/IResourceService.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Services/IResourceService.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Services/IResourceService.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System.IO;
 using ObjCommon = OSGeo.MapGuide.ObjectModels.Common;
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.Designer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.Designer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.Designer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.34209
+//     Runtime Version:4.0.30319.18444
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -61,33 +61,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Select More.
-        /// </summary>
-        public static string ADF_Flyout_SelectMore {
-            get {
-                return ResourceManager.GetString("ADF_Flyout_SelectMore", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to View.
-        /// </summary>
-        public static string ADF_Flyout_View {
-            get {
-                return ResourceManager.GetString("ADF_Flyout_View", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom.
-        /// </summary>
-        public static string ADF_Flyout_Zoom {
-            get {
-                return ResourceManager.GetString("ADF_Flyout_Zoom", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to A non-existent widget by the id of {0} is being referenced from a menu/container : {1}.
         /// </summary>
         public static string ADF_InvalidWidgetReferenceInContainer {
@@ -160,152 +133,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Create buffers around the selected features.
-        /// </summary>
-        public static string ADF_Widget_Buffer_Desc {
-            get {
-                return ResourceManager.GetString("ADF_Widget_Buffer_Desc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Buffer.
-        /// </summary>
-        public static string ADF_Widget_Buffer_Label {
-            get {
-                return ResourceManager.GetString("ADF_Widget_Buffer_Label", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Measure distances and areas on the map.
-        /// </summary>
-        public static string ADF_Widget_Measure_Desc {
-            get {
-                return ResourceManager.GetString("ADF_Widget_Measure_Desc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Measure.
-        /// </summary>
-        public static string ADF_Widget_Measure_Label {
-            get {
-                return ResourceManager.GetString("ADF_Widget_Measure_Label", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Go to next view.
-        /// </summary>
-        public static string ADF_Widget_NextView_Desc {
-            get {
-                return ResourceManager.GetString("ADF_Widget_NextView_Desc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Next.
-        /// </summary>
-        public static string ADF_Widget_NextView_Label {
-            get {
-                return ResourceManager.GetString("ADF_Widget_NextView_Label", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Go to previous view.
-        /// </summary>
-        public static string ADF_Widget_PreviousView_Desc {
-            get {
-                return ResourceManager.GetString("ADF_Widget_PreviousView_Desc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Previous.
-        /// </summary>
-        public static string ADF_Widget_PreviousView_Label {
-            get {
-                return ResourceManager.GetString("ADF_Widget_PreviousView_Label", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom in by a preset increment.
-        /// </summary>
-        public static string ADF_Widget_ZoomIn_Desc {
-            get {
-                return ResourceManager.GetString("ADF_Widget_ZoomIn_Desc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom In.
-        /// </summary>
-        public static string ADF_Widget_ZoomIn_Label {
-            get {
-                return ResourceManager.GetString("ADF_Widget_ZoomIn_Label", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom out by a preset increment.
-        /// </summary>
-        public static string ADF_Widget_ZoomOut_Desc {
-            get {
-                return ResourceManager.GetString("ADF_Widget_ZoomOut_Desc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Out.
-        /// </summary>
-        public static string ADF_Widget_ZoomOut_Label {
-            get {
-                return ResourceManager.GetString("ADF_Widget_ZoomOut_Label", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to <?xml version="1.0"?>
-        ///<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
-        ///  <TemplateUrl>fusion/templates/mapguide/slate/index.html</TemplateUrl>
-        ///  <MapSet>
-        ///    <MapGroup id="MgMainMapId">
-        ///      <Map>
-        ///        <Type>MapGuide</Type>
-        ///        <SingleTile>true</SingleTile>
-        ///        <Extension>
-        ///          <ResourceId />
-        ///          <SelectionAsOverlay>true</SelectionAsOverla [rest of string was truncated]";.
-        /// </summary>
-        public static string BaseTemplate_ApplicationDefinition {
-            get {
-                return ResourceManager.GetString("BaseTemplate_ApplicationDefinition", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to <?xml version="1.0"?>
-        ///<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
-        ///  <TemplateUrl>fusion/templates/mapguide/slate/index.html</TemplateUrl>
-        ///  <MapSet>
-        ///    <MapGroup id="MgMainMapId">
-        ///      <Map>
-        ///        <Type>MapGuide</Type>
-        ///        <SingleTile>true</SingleTile>
-        ///        <Extension>
-        ///          <ResourceId />
-        ///          <SelectionAsOverlay>true</SelectionAsOverla [rest of string was truncated]";.
-        /// </summary>
-        public static string BaseTemplate240_ApplicationDefinition {
-            get {
-                return ResourceManager.GetString("BaseTemplate240_ApplicationDefinition", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Could not create load procedure of type: .
         /// </summary>
         public static string CannotCreateLoadProcedureSubType {
@@ -423,24 +250,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to This feature source does not connect an externally aliased file.
-        /// </summary>
-        public static string ERR_FS_NO_ALIAS {
-            get {
-                return ResourceManager.GetString("ERR_FS_NO_ALIAS", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to This feature source does not connect to an embedded data file.
-        /// </summary>
-        public static string ERR_FS_NO_EMBEDDED_DATA {
-            get {
-                return ResourceManager.GetString("ERR_FS_NO_EMBEDDED_DATA", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Could fetch and initialize identity properties for {1} This is likely a bug in MapGuide {0}{2}.
         /// </summary>
         public static string ERR_INIT_IDENTITY_PROPS {
@@ -468,15 +277,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Could not find matching serializer for this resource: .
-        /// </summary>
-        public static string ERR_NO_SERIALIZER {
-            get {
-                return ResourceManager.GetString("ERR_NO_SERIALIZER", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to There is no upgrade path to the desired resource version.
         /// </summary>
         public static string ERR_NO_UPGRADE_PATH {
@@ -486,15 +286,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to XML content does not match any known resource.
-        /// </summary>
-        public static string ERR_NOT_RESOURCE_CONTENT_XML {
-            get {
-                return ResourceManager.GetString("ERR_NOT_RESOURCE_CONTENT_XML", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to The specified property {0} is not of type: {1}.
         /// </summary>
         public static string ERR_PROPERTY_VALUE_NOT_OF_TYPE {
@@ -513,15 +304,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to A resource serializer has already been registered for {0} v{1}.
-        /// </summary>
-        public static string ERR_SERIALIZER_ALREADY_REGISTERED {
-            get {
-                return ResourceManager.GetString("ERR_SERIALIZER_ALREADY_REGISTERED", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Service Type not supported: {0}.
         /// </summary>
         public static string ERR_SERVICE_NOT_SUPPORTED {
@@ -684,15 +466,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Commerical layer options are only available for non-MapGuide maps.
-        /// </summary>
-        public static string ErrorCmsOptionsOnMapGuideMap {
-            get {
-                return ResourceManager.GetString("ErrorCmsOptionsOnMapGuideMap", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to This connection cannot auto-restart sessions. Most likely because this connection was just initialized with a session id and not with the credentials required to rebuild a new session.
         /// </summary>
         public static string ErrorConnectionCannotAutoRestartSession {
@@ -702,15 +475,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Could not determine symbol type.
-        /// </summary>
-        public static string ErrorCouldNotDetermineSymbolType {
-            get {
-                return ResourceManager.GetString("ErrorCouldNotDetermineSymbolType", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Current record is empty.
         /// </summary>
         public static string ErrorCurrentRecordIsEmpty {
@@ -1332,15 +1096,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Factory method already registered for version: .
-        /// </summary>
-        public static string FactoryMethodAlreadyRegistered {
-            get {
-                return ResourceManager.GetString("FactoryMethodAlreadyRegistered", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Due to a limitation in the public APIs provided by MapGuide. This Feature Source cannot be packaged by Maestro's packager without discarding the MG_USER_CREDENTIALS element. The workaround is to either re-secure these Feature Sources after loading the Maestro-created package, or to use the official packaging method which will preserve MG_USER_CREDENTIALS in its encrypted state.
         /// </summary>
         public static string FS_CannotPackageSecuredCredentials {
@@ -1944,15 +1699,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Factory method already registered for load procedure type: .
-        /// </summary>
-        public static string LoadProcFactoryMethodAlreadyRegistered {
-            get {
-                return ResourceManager.GetString("LoadProcFactoryMethodAlreadyRegistered", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Convert to SDF option is not supported by Maestro.
         /// </summary>
         public static string LPROC_ConvertToSdf3NotSupported {
@@ -2223,15 +1969,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Not a folder resource id: {0}.
-        /// </summary>
-        public static string NotAFolder {
-            get {
-                return ResourceManager.GetString("NotAFolder", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to (null).
         /// </summary>
         public static string NullString {
@@ -2376,33 +2113,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Precondition failure: .
-        /// </summary>
-        public static string PrecondFailure {
-            get {
-                return ResourceManager.GetString("PrecondFailure", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to String is empty: .
-        /// </summary>
-        public static string PrecondStringEmpty {
-            get {
-                return ResourceManager.GetString("PrecondStringEmpty", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Value is null: .
-        /// </summary>
-        public static string PrecondValueNull {
-            get {
-                return ResourceManager.GetString("PrecondValueNull", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Copying Folder ....
         /// </summary>
         public static string ProgressCopyingFolder {
@@ -2565,51 +2275,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Unknown layer version: .
-        /// </summary>
-        public static string UnknownLayerVersion {
-            get {
-                return ResourceManager.GetString("UnknownLayerVersion", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Unknown Map Definition version: .
-        /// </summary>
-        public static string UnknownMapDefinitionVersion {
-            get {
-                return ResourceManager.GetString("UnknownMapDefinitionVersion", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Unknown Symbol Definition version: .
-        /// </summary>
-        public static string UnknownSymbolDefVersion {
-            get {
-                return ResourceManager.GetString("UnknownSymbolDefVersion", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Unknown Watermark Definition version: .
-        /// </summary>
-        public static string UnknownWatermarkDefinitionVersion {
-            get {
-                return ResourceManager.GetString("UnknownWatermarkDefinitionVersion", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Unknown Web Layout version: .
-        /// </summary>
-        public static string UnknownWebLayoutVersion {
-            get {
-                return ResourceManager.GetString("UnknownWebLayoutVersion", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to The resource type cannot be previewed.
         /// </summary>
         public static string UnpreviewableResourceType {
@@ -2628,303 +2293,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Display information about this application.
-        /// </summary>
-        public static string WL_Desc_About {
-            get {
-                return ResourceManager.GetString("WL_Desc_About", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Create buffers around the selected features.
-        /// </summary>
-        public static string WL_Desc_Buffer {
-            get {
-                return ResourceManager.GetString("WL_Desc_Buffer", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Clear the current selection.
-        /// </summary>
-        public static string WL_Desc_ClearSelection {
-            get {
-                return ResourceManager.GetString("WL_Desc_ClearSelection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Copy current view of map to clipboard.
-        /// </summary>
-        public static string WL_Desc_Copy {
-            get {
-                return ResourceManager.GetString("WL_Desc_Copy", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Get Printer-friendly page.
-        /// </summary>
-        public static string WL_Desc_GetPrintablePage {
-            get {
-                return ResourceManager.GetString("WL_Desc_GetPrintablePage", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Launch help for this application.
-        /// </summary>
-        public static string WL_Desc_Help {
-            get {
-                return ResourceManager.GetString("WL_Desc_Help", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom to initial map center and scale.
-        /// </summary>
-        public static string WL_Desc_InitialCenterScale {
-            get {
-                return ResourceManager.GetString("WL_Desc_InitialCenterScale", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Fit the extents of the map to the window.
-        /// </summary>
-        public static string WL_Desc_InitialMapView {
-            get {
-                return ResourceManager.GetString("WL_Desc_InitialMapView", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Click to enable/disable display of map tooltips.
-        /// </summary>
-        public static string WL_Desc_MapTip {
-            get {
-                return ResourceManager.GetString("WL_Desc_MapTip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Measure distances on the map.
-        /// </summary>
-        public static string WL_Desc_Measure {
-            get {
-                return ResourceManager.GetString("WL_Desc_Measure", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Go to next view.
-        /// </summary>
-        public static string WL_Desc_NextView {
-            get {
-                return ResourceManager.GetString("WL_Desc_NextView", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Drag the map to view areas out of range.
-        /// </summary>
-        public static string WL_Desc_Pan {
-            get {
-                return ResourceManager.GetString("WL_Desc_Pan", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan down by a preset increment.
-        /// </summary>
-        public static string WL_Desc_PanDown {
-            get {
-                return ResourceManager.GetString("WL_Desc_PanDown", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan left by a preset increment.
-        /// </summary>
-        public static string WL_Desc_PanLeft {
-            get {
-                return ResourceManager.GetString("WL_Desc_PanLeft", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan right by a preset increment.
-        /// </summary>
-        public static string WL_Desc_PanRight {
-            get {
-                return ResourceManager.GetString("WL_Desc_PanRight", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan up by a preset increment.
-        /// </summary>
-        public static string WL_Desc_PanUp {
-            get {
-                return ResourceManager.GetString("WL_Desc_PanUp", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Go to previous view.
-        /// </summary>
-        public static string WL_Desc_PrevView {
-            get {
-                return ResourceManager.GetString("WL_Desc_PrevView", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Print with optional layout.
-        /// </summary>
-        public static string WL_Desc_Print {
-            get {
-                return ResourceManager.GetString("WL_Desc_Print", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Refresh map to reload all layers keeping current center and scale.
-        /// </summary>
-        public static string WL_Desc_RefreshMap {
-            get {
-                return ResourceManager.GetString("WL_Desc_RefreshMap", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select features by clicking and dragging.
-        /// </summary>
-        public static string WL_Desc_Select {
-            get {
-                return ResourceManager.GetString("WL_Desc_Select", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Click and drag to select all features that fall within.
-        /// </summary>
-        public static string WL_Desc_SelectPolygon {
-            get {
-                return ResourceManager.GetString("WL_Desc_SelectPolygon", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Click and drag to select all features inside the circle.
-        /// </summary>
-        public static string WL_Desc_SelectRadius {
-            get {
-                return ResourceManager.GetString("WL_Desc_SelectRadius", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select features that fall within currently selected areas.
-        /// </summary>
-        public static string WL_Desc_SelectWithin {
-            get {
-                return ResourceManager.GetString("WL_Desc_SelectWithin", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Return to previous task page.
-        /// </summary>
-        public static string WL_Desc_TaskBack {
-            get {
-                return ResourceManager.GetString("WL_Desc_TaskBack", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Forward to next task page.
-        /// </summary>
-        public static string WL_Desc_TaskForward {
-            get {
-                return ResourceManager.GetString("WL_Desc_TaskForward", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Return to home task page.
-        /// </summary>
-        public static string WL_Desc_TaskHome {
-            get {
-                return ResourceManager.GetString("WL_Desc_TaskHome", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to View a list of available tasks.
-        /// </summary>
-        public static string WL_Desc_TaskList {
-            get {
-                return ResourceManager.GetString("WL_Desc_TaskList", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to View Options.
-        /// </summary>
-        public static string WL_Desc_ViewOptions {
-            get {
-                return ResourceManager.GetString("WL_Desc_ViewOptions", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom dynamically by clicking and dragging.
-        /// </summary>
-        public static string WL_Desc_ZoomDynamic {
-            get {
-                return ResourceManager.GetString("WL_Desc_ZoomDynamic", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom in by a preset increment.
-        /// </summary>
-        public static string WL_Desc_ZoomIn {
-            get {
-                return ResourceManager.GetString("WL_Desc_ZoomIn", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom out by a preset increment.
-        /// </summary>
-        public static string WL_Desc_ZoomOut {
-            get {
-                return ResourceManager.GetString("WL_Desc_ZoomOut", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom in on an area.
-        /// </summary>
-        public static string WL_Desc_ZoomRect {
-            get {
-                return ResourceManager.GetString("WL_Desc_ZoomRect", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom to the extents of selected features.
-        /// </summary>
-        public static string WL_Desc_ZoomSelection {
-            get {
-                return ResourceManager.GetString("WL_Desc_ZoomSelection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to There web layout has more than one command named: {0}.
         /// </summary>
         public static string WL_DuplicateCommandName {
@@ -2943,312 +2311,6 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to About.
-        /// </summary>
-        public static string WL_Label_About {
-            get {
-                return ResourceManager.GetString("WL_Label_About", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Buffer.
-        /// </summary>
-        public static string WL_Label_Buffer {
-            get {
-                return ResourceManager.GetString("WL_Label_Buffer", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Clear Selection.
-        /// </summary>
-        public static string WL_Label_ClearSelection {
-            get {
-                return ResourceManager.GetString("WL_Label_ClearSelection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Copy.
-        /// </summary>
-        public static string WL_Label_Copy {
-            get {
-                return ResourceManager.GetString("WL_Label_Copy", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Get Printable Page.
-        /// </summary>
-        public static string WL_Label_GetPrintablePage {
-            get {
-                return ResourceManager.GetString("WL_Label_GetPrintablePage", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Help.
-        /// </summary>
-        public static string WL_Label_Help {
-            get {
-                return ResourceManager.GetString("WL_Label_Help", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Initial Center and Scale.
-        /// </summary>
-        public static string WL_Label_InitialCenterScale {
-            get {
-                return ResourceManager.GetString("WL_Label_InitialCenterScale", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Initial Map View.
-        /// </summary>
-        public static string WL_Label_InitialMapView {
-            get {
-                return ResourceManager.GetString("WL_Label_InitialMapView", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Measure.
-        /// </summary>
-        public static string WL_Label_Measure {
-            get {
-                return ResourceManager.GetString("WL_Label_Measure", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Next View.
-        /// </summary>
-        public static string WL_Label_NextView {
-            get {
-                return ResourceManager.GetString("WL_Label_NextView", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan Mode.
-        /// </summary>
-        public static string WL_Label_Pan {
-            get {
-                return ResourceManager.GetString("WL_Label_Pan", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan Down.
-        /// </summary>
-        public static string WL_Label_PanDown {
-            get {
-                return ResourceManager.GetString("WL_Label_PanDown", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan Left.
-        /// </summary>
-        public static string WL_Label_PanLeft {
-            get {
-                return ResourceManager.GetString("WL_Label_PanLeft", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan Right.
-        /// </summary>
-        public static string WL_Label_PanRight {
-            get {
-                return ResourceManager.GetString("WL_Label_PanRight", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan Up.
-        /// </summary>
-        public static string WL_Label_PanUp {
-            get {
-                return ResourceManager.GetString("WL_Label_PanUp", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Previous View.
-        /// </summary>
-        public static string WL_Label_PrevView {
-            get {
-                return ResourceManager.GetString("WL_Label_PrevView", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Print.
-        /// </summary>
-        public static string WL_Label_Print {
-            get {
-                return ResourceManager.GetString("WL_Label_Print", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Refresh Map.
-        /// </summary>
-        public static string WL_Label_RefreshMap {
-            get {
-                return ResourceManager.GetString("WL_Label_RefreshMap", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select.
-        /// </summary>
-        public static string WL_Label_Select {
-            get {
-                return ResourceManager.GetString("WL_Label_Select", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select More.
-        /// </summary>
-        public static string WL_Label_SelectMore {
-            get {
-                return ResourceManager.GetString("WL_Label_SelectMore", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select Polygon.
-        /// </summary>
-        public static string WL_Label_SelectPolygon {
-            get {
-                return ResourceManager.GetString("WL_Label_SelectPolygon", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select Radius.
-        /// </summary>
-        public static string WL_Label_SelectRadius {
-            get {
-                return ResourceManager.GetString("WL_Label_SelectRadius", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select Within.
-        /// </summary>
-        public static string WL_Label_SelectWithin {
-            get {
-                return ResourceManager.GetString("WL_Label_SelectWithin", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Back.
-        /// </summary>
-        public static string WL_Label_TaskBack {
-            get {
-                return ResourceManager.GetString("WL_Label_TaskBack", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Forward.
-        /// </summary>
-        public static string WL_Label_TaskForward {
-            get {
-                return ResourceManager.GetString("WL_Label_TaskForward", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Home.
-        /// </summary>
-        public static string WL_Label_TaskHome {
-            get {
-                return ResourceManager.GetString("WL_Label_TaskHome", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Task List.
-        /// </summary>
-        public static string WL_Label_TaskList {
-            get {
-                return ResourceManager.GetString("WL_Label_TaskList", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to View Options.
-        /// </summary>
-        public static string WL_Label_ViewOptions {
-            get {
-                return ResourceManager.GetString("WL_Label_ViewOptions", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom.
-        /// </summary>
-        public static string WL_Label_Zoom {
-            get {
-                return ResourceManager.GetString("WL_Label_Zoom", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Dynamic.
-        /// </summary>
-        public static string WL_Label_ZoomDynamic {
-            get {
-                return ResourceManager.GetString("WL_Label_ZoomDynamic", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom In.
-        /// </summary>
-        public static string WL_Label_ZoomIn {
-            get {
-                return ResourceManager.GetString("WL_Label_ZoomIn", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Out.
-        /// </summary>
-        public static string WL_Label_ZoomOut {
-            get {
-                return ResourceManager.GetString("WL_Label_ZoomOut", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Rectangle.
-        /// </summary>
-        public static string WL_Label_ZoomRect {
-            get {
-                return ResourceManager.GetString("WL_Label_ZoomRect", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Selection.
-        /// </summary>
-        public static string WL_Label_ZoomSelection {
-            get {
-                return ResourceManager.GetString("WL_Label_ZoomSelection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   Looks up a localized string similar to Error validating MapDefinition {0}, message: {1}.
         /// </summary>
         public static string WL_MapValidationError {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.resx
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.resx	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Strings.resx	2014-12-27 15:14:41 UTC (rev 8468)
@@ -117,15 +117,6 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <data name="ADF_Flyout_SelectMore" xml:space="preserve">
-    <value>Select More</value>
-  </data>
-  <data name="ADF_Flyout_View" xml:space="preserve">
-    <value>View</value>
-  </data>
-  <data name="ADF_Flyout_Zoom" xml:space="preserve">
-    <value>Zoom</value>
-  </data>
   <data name="ADF_InvalidWidgetReferenceInContainer" xml:space="preserve">
     <value>A non-existent widget by the id of {0} is being referenced from a menu/container : {1}</value>
   </data>
@@ -150,2292 +141,6 @@
   <data name="ADF_ViewOutsideMapExtents" xml:space="preserve">
     <value>Fusion application specifies a start view that is outside the map's initial extents</value>
   </data>
-  <data name="ADF_Widget_Buffer_Desc" xml:space="preserve">
-    <value>Create buffers around the selected features</value>
-  </data>
-  <data name="ADF_Widget_Buffer_Label" xml:space="preserve">
-    <value>Buffer</value>
-  </data>
-  <data name="ADF_Widget_Measure_Desc" xml:space="preserve">
-    <value>Measure distances and areas on the map</value>
-  </data>
-  <data name="ADF_Widget_Measure_Label" xml:space="preserve">
-    <value>Measure</value>
-  </data>
-  <data name="ADF_Widget_NextView_Desc" xml:space="preserve">
-    <value>Go to next view</value>
-  </data>
-  <data name="ADF_Widget_NextView_Label" xml:space="preserve">
-    <value>Next</value>
-  </data>
-  <data name="ADF_Widget_PreviousView_Desc" xml:space="preserve">
-    <value>Go to previous view</value>
-  </data>
-  <data name="ADF_Widget_PreviousView_Label" xml:space="preserve">
-    <value>Previous</value>
-  </data>
-  <data name="ADF_Widget_ZoomIn_Desc" xml:space="preserve">
-    <value>Zoom in by a preset increment</value>
-  </data>
-  <data name="ADF_Widget_ZoomIn_Label" xml:space="preserve">
-    <value>Zoom In</value>
-  </data>
-  <data name="ADF_Widget_ZoomOut_Desc" xml:space="preserve">
-    <value>Zoom out by a preset increment</value>
-  </data>
-  <data name="ADF_Widget_ZoomOut_Label" xml:space="preserve">
-    <value>Zoom Out</value>
-  </data>
-  <data name="BaseTemplate240_ApplicationDefinition" xml:space="preserve">
-    <value><?xml version="1.0"?>
-<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
-  <TemplateUrl>fusion/templates/mapguide/slate/index.html</TemplateUrl>
-  <MapSet>
-    <MapGroup id="MgMainMapId">
-      <Map>
-        <Type>MapGuide</Type>
-        <SingleTile>true</SingleTile>
-        <Extension>
-          <ResourceId />
-          <SelectionAsOverlay>true</SelectionAsOverlay>
-          <SelectionColor>0x0000FFA0</SelectionColor>
-        </Extension>
-      </Map>
-      <Extension />
-    </MapGroup>
-  </MapSet>
-  <WidgetSet>
-    <Container xsi:type="UiItemContainerType">
-      <Name>Toolbar</Name>
-      <Type>Toolbar</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>RefreshMap</Widget>
-      </Item>
-        <Item xsi:type="WidgetItemType">
-            <Function>Widget</Function>
-            <Widget>Maptip</Widget>
-        </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>SelectRadius</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>SelectPolygon</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ClearSelection</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BufferPanel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Measure</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>FeatureInfo</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Query</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Theme</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Redline</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Print</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ViewOptions</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>About</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Help</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>ToolbarSecondary</Name>
-      <Type>Toolbar</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Select</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Pan</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Zoom</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomIn</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomOut</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>InitialMapView</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomToSelection</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>PreviousView</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>NextView</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>ToolbarVertical</Name>
-      <Type>Toolbar</Type>
-      <Position>left</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>SelectNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>PanNoLabel</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomInNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomOutNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>InitialMapViewNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomToSelectionNoLabel</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>PreviousViewNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>NextViewNoLabel</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>Statusbar</Name>
-      <Type>Splitterbar</Type>
-      <Position>bottom</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusCoords</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusSelection</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusScale</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusViewSize</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>FileMenu</Name>
-      <Type>Toolbar</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>MapMenu</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BasemapSwitcher</Widget>
-      </Item>
-      <Item xsi:type="FlyoutItemType">
-        <Function>Flyout</Function>
-        <Label>View</Label>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowOverviewMap</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowTaskWindow</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowLegendWindow</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowSelectionWindow</Widget>
-        </Item>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>MapRightClickMenu</Name>
-      <Type>ContextMenu</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>RefreshMap</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Pan</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Zoom</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomIn</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomOut</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="FlyoutItemType">
-        <Function>Flyout</Function>
-        <Label>Zoom</Label>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>InitialMapView</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>PreviousView</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>NextView</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ZoomToSelection</Widget>
-        </Item>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Select</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ClearSelection</Widget>
-      </Item>
-      <Item xsi:type="FlyoutItemType">
-        <Function>Flyout</Function>
-        <Label>Select More</Label>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>SelectRadius</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>SelectPolygon</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>SelectWithin</Widget>
-        </Item>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BufferPanel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Measure</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>FeatureInfo</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Query</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Theme</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Redline</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ViewOptions</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Help</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>About</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>TaskMenu</Name>
-      <Type>ContextMenu</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BufferPanel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Measure</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>FeatureInfo</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Query</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Theme</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Redline</Widget>
-      </Item>
-    </Container>
-    <MapWidget>
-      <Name>Map</Name>
-      <Type>Map</Type>
-      <Extension>
-        <MenuContainer>MapRightClickMenu</MenuContainer>
-      </Extension>
-      <MapId>MgMainMapId</MapId>
-    </MapWidget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>About</Name>
-      <Type>About</Type>
-      <Location />
-      <Extension>
-        <AboutURL>widgets/About/About.html</AboutURL>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>about</ImageClass>
-      <Label>About</Label>
-      <Tooltip>Click to show information about this application</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>ActivityIndicator</Name>
-      <Type>ActivityIndicator</Type>
-      <Location />
-      <Extension>
-        <ElementId />
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>BasemapSwitcher</Name>
-      <Type>BasemapSwitcher</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>options</ImageClass>
-      <Label>External Providers</Label>
-      <Tooltip>Click to change the basemap</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>BufferPanel</Name>
-      <Type>BufferPanel</Type>
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>buffer</ImageClass>
-      <Label>Buffer</Label>
-      <Tooltip>Click to create a buffer</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ClearSelection</Name>
-      <Type>ClearSelection</Type>
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-clear</ImageClass>
-      <Label>Clear Selection</Label>
-      <Tooltip>Click to clear the current selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>PreviousView</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Previous</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-back</ImageClass>
-      <Label>Previous</Label>
-      <Tooltip>Zoom to previous extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>NextView</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Next</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-forward</ImageClass>
-      <Label>Next</Label>
-      <Tooltip>Zoom to next extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Help</Name>
-      <Type>Help</Type>
-      <Location />
-      <Extension>
-        <Target>HelpWindow</Target>
-        <Url>widgets/Help/Help.html</Url>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>help</ImageClass>
-      <Label>Help</Label>
-      <Tooltip>Click to get help</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>InitialMapView</Name>
-      <Type>InitialMapView</Type>
-      <Location />
-      <Extension>
-        <ViewType>initial</ViewType>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-full</ImageClass>
-      <Label>Zoom Extents</Label>
-      <Tooltip>Click to zoom to the full map extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>Legend</Name>
-      <Type>Legend</Type>
-      <Location />
-      <Extension>
-        <HideInvisibleLayers>true</HideInvisibleLayers>
-        <ShowRootFolder>false</ShowRootFolder>
-        <DisabledLayerIcon>images/icons/legend-layer.png</DisabledLayerIcon>
-        <RootFolderIcon>images/icons/legend-map.png</RootFolderIcon>
-        <ShowMapFolder>false</ShowMapFolder>
-        <LayerThemeIcon>images/icons/legend-theme.png</LayerThemeIcon>
-        <LayerRasterIcon>images/icons/legend-raster.png</LayerRasterIcon>
-        <LayerInfoIcon>images/icons/tree_layer_info.png</LayerInfoIcon>
-        <LayerDWFIcon>images/icons/legend-DWF.png</LayerDWFIcon>
-        <GroupInfoIcon>images/icons/tree_group_info.png</GroupInfoIcon>
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>MapMenu</Name>
-      <Type>MapMenu</Type>
-      <Location />
-      <Extension>
-        <Folder />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Maps</Label>
-      <Tooltip>Choose a map theme</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Maptip</Name>
-      <Type>Maptip</Type>
-      <Location />
-      <Extension>
-        <Tolerance>2</Tolerance>
-        <Target>MaptipWindow</Target>
-        <WinFeatures>menubar=no,location=no,resizable=no,status=no</WinFeatures>
-        <Delay>350</Delay>
-        <Layer />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Maptip</Label>
-      <Tooltip>Click to Enable/Disable get information about features from Server</Tooltip>
-      <StatusText>Click to Enable/Disable get information about features from Server</StatusText>
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Measure</Name>
-      <Type>Measure</Type>
-      <Location />
-      <Extension>
-        <DistancePrecision>4</DistancePrecision>
-        <MeasureTooltipContainer>MeasureContainerBox</MeasureTooltipContainer>
-        <MeasureTooltipType>static</MeasureTooltipType>
-        <MeasureTipPositionLeft>15</MeasureTipPositionLeft>
-        <Units>none</Units>
-        <LineStyleWidth>2</LineStyleWidth>
-        <MeasureTipPositionTop>100</MeasureTipPositionTop>
-        <LineStyleColor>rgba(0,0,255,0.3)</LineStyleColor>
-        <FillStyle>rgba(0,0,255, 0.3)</FillStyle>
-        <Target>TaskPane</Target>
-        <AreaPrecision>4</AreaPrecision>
-        <Type>Both</Type>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>measure</ImageClass>
-      <Label>Measure</Label>
-      <Tooltip>Measure distances and areas on the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>FeatureInfo</Name>
-      <Type>FeatureInfo</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>featureinfo</ImageClass>
-      <Label>Feature Info</Label>
-      <Tooltip>Click to display selected feature info</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Query</Name>
-      <Type>Query</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>query</ImageClass>
-      <Label>Query</Label>
-      <Tooltip>Click to execute a custom query</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Theme</Name>
-      <Type>Theme</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>theme</ImageClass>
-      <Label>Theme</Label>
-      <Tooltip>Click to create a themed layer</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Redline</Name>
-      <Type>Redline</Type>
-      <Location />
-      <Extension>
-        <FeatureStyle />
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>redline</ImageClass>
-      <Label>Redline</Label>
-      <Tooltip>Click to draw redline features</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>Navigator</Name>
-      <Type>Navigator</Type>
-      <Location />
-      <Extension />
-    </Widget>
-    <Widget>
-      <Name>OverviewMap</Name>
-      <Type>OverviewMap</Type>
-      <Location />
-      <Extension>
-        <MinRatio>32</MinRatio>
-        <MapId />
-        <MaxRatio>128</MaxRatio>
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Pan</Name>
-      <Type>Pan</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>pan</ImageClass>
-      <Label>Pan</Label>
-      <Tooltip>Click and drag to pan the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Print</Name>
-      <Type>Print</Type>
-      <Extension>
-        <ShowPrintUI>true</ShowPrintUI>
-        <ShowNorthArrow>false</ShowNorthArrow>
-        <PageTitle />
-        <ImageBaseUrl />
-        <ShowLegend>false</ShowLegend>
-        <ShowTitle>false</ShowTitle>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>file-print</ImageClass>
-      <Label>Print</Label>
-      <Tooltip>Print the current map view</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>RefreshMap</Name>
-      <Type>RefreshMap</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-refresh</ImageClass>
-      <Label>Refresh</Label>
-      <Tooltip>Click to redraw the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SaveMap</Name>
-      <Type>SaveMap</Type>
-      <Extension>
-        <Format>png</Format>
-        <Scale />
-        <ResourceId />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>file-save</ImageClass>
-      <Label>Save map</Label>
-      <Tooltip>Click to save the map as an image</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Select</Name>
-      <Type>Select</Type>
-      <Location />
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <SelectionType>INTERSECTS</SelectionType>
-        <QueryActiveLayer>false</QueryActiveLayer>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select</ImageClass>
-      <Label>Select</Label>
-      <Tooltip>Click to select features</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>SelectionPanel</Name>
-      <Type>SelectionPanel</Type>
-      <Location />
-      <Extension />
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectPolygon</Name>
-      <Type>SelectPolygon</Type>
-      <Location />
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <SelectionType>INTERSECTS</SelectionType>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-polygon</ImageClass>
-      <Label>Select Polygon</Label>
-      <Tooltip>Draw a polygon to perform a selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectRadius</Name>
-      <Type>SelectRadius</Type>
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <RadiusTooltipType>dynamic</RadiusTooltipType>
-        <RadiusTooltipContainer />
-        <SelectionType>INTERSECTS</SelectionType>
-        <DefaultRadius>20</DefaultRadius>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-radius</ImageClass>
-      <Label>Select Radius</Label>
-      <Tooltip>Click to select within a radius</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectWithin</Name>
-      <Type>SelectWithin</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-        <DisableIfSelectionEmpty>true</DisableIfSelectionEmpty>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-features</ImageClass>
-      <Label>Select within</Label>
-      <Tooltip>Click to select features within this selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>TaskPane</Name>
-      <Type>TaskPane</Type>
-      <Location />
-      <Extension>
-        <MenuContainer>TaskMenu</MenuContainer>
-        <InitialTask />
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ViewOptions</Name>
-      <Type>ViewOptions</Type>
-      <Location />
-      <Extension>
-        <DisplayUnits />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>options</ImageClass>
-      <Label>Options</Label>
-      <Tooltip>Click to change the units displayed</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Zoom</Name>
-      <Type>Zoom</Type>
-      <Extension>
-        <Tolerance>5</Tolerance>
-        <Factor>2</Factor>
-        <Direction>in</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in</ImageClass>
-      <Label>Zoom Rectangle</Label>
-      <Tooltip>Click or click and drag on the map to zoom in</Tooltip>
-      <StatusText>Click or click and drag on the map to zoom in</StatusText>
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomOut</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>0.5</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-out-fixed</ImageClass>
-      <Label>Zoom Out</Label>
-      <Tooltip>Zoom out to display a larger area</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomIn</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>2.0</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in-fixed</ImageClass>
-      <Label>Zoom In</Label>
-      <Tooltip>Zoom in to display more detail</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomToSelection</Name>
-      <Type>ZoomToSelection</Type>
-      <Location />
-      <Extension>
-        <MaximumZoomDimension>-1</MaximumZoomDimension>
-        <ZoomFactor>2</ZoomFactor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-zoom</ImageClass>
-      <Label>Zoom Selection</Label>
-      <Tooltip>Click to zoom to the selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>InitialMapViewNoLabel</Name>
-      <Type>InitialMapView</Type>
-      <Location />
-      <Extension>
-        <ViewType>initial</ViewType>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-full</ImageClass>
-      <Label />
-      <Tooltip>Click to zoom to the full map extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>NextViewNoLabel</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Next</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-forward</ImageClass>
-      <Label />
-      <Tooltip>Zoom to next extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>PanNoLabel</Name>
-      <Type>Pan</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>pan</ImageClass>
-      <Label />
-      <Tooltip>Click and drag to pan the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>PreviousViewNoLabel</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Previous</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-back</ImageClass>
-      <Label />
-      <Tooltip>Zoom to previous extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectNoLabel</Name>
-      <Type>Select</Type>
-      <Location />
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <SelectionType>INTERSECTS</SelectionType>
-        <QueryActiveLayer>false</QueryActiveLayer>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select</ImageClass>
-      <Label />
-      <Tooltip>Click to select features</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomNoLabel</Name>
-      <Type>Zoom</Type>
-      <Extension>
-        <Tolerance>5</Tolerance>
-        <Factor>2</Factor>
-        <Direction>in</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in</ImageClass>
-      <Label />
-      <Tooltip>Click or click and drag on the map to zoom in</Tooltip>
-      <StatusText>Click or click and drag on the map to zoom in</StatusText>
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomInNoLabel</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>2.0</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in-fixed</ImageClass>
-      <Label />
-      <Tooltip>Zoom in to display more detail</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomOutNoLabel</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>0.5</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-out-fixed</ImageClass>
-      <Label />
-      <Tooltip>Zoom out to display a larger area</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomToSelectionNoLabel</Name>
-      <Type>ZoomToSelection</Type>
-      <Location />
-      <Extension>
-        <MaximumZoomDimension>-1</MaximumZoomDimension>
-        <ZoomFactor>2</ZoomFactor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-zoom</ImageClass>
-      <Label />
-      <Tooltip>Click to zoom to the selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowOverviewMap</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showOverviewMap()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Overview Map</Label>
-      <Tooltip>Display the overview map window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowTaskWindow</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showTaskPane()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Task Pane</Label>
-      <Tooltip>Display the task pane window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowLegendWindow</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showLegend()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Legend</Label>
-      <Tooltip>Display the legend window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowSelectionWindow</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showSelectionPanel()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Selection Panel</Label>
-      <Tooltip>Display the selection window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>StatusCoords</Name>
-      <Type>CursorPosition</Type>
-      <Extension>
-        <Precision>4</Precision>
-        <Template>x: {x}, y: {y}</Template>
-        <Units>dd</Units>
-      </Extension>
-    </Widget>
-    <Widget>
-      <Name>StatusSelection</Name>
-      <Type>SelectionInfo</Type>
-      <Location />
-      <Extension>
-        <EmptyText>No features selected</EmptyText>
-        <Template>{0} feature(s) selected on {1} layer(s)</Template>
-      </Extension>
-    </Widget>
-    <Widget>
-      <Name>StatusScale</Name>
-      <Type>EditableScale</Type>
-      <Extension>
-        <Precision>4</Precision>
-      </Extension>
-    </Widget>
-    <Widget>
-      <Name>StatusViewSize</Name>
-      <Type>ViewSize</Type>
-      <Location />
-      <Extension>
-        <Precision>2</Precision>
-        <Template>{w} x {h} {units}</Template>
-        <Units>Meters</Units>
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>StatusOverviewMap</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showOverviewMap()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>iconNavigator</ImageClass>
-      <Label />
-      <Tooltip>Display the overview map window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>StatusNavigator</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showOverviewMap()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>iconNavigator</ImageClass>
-      <Label />
-      <Tooltip>Display the overview map window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-  </WidgetSet>
-  <Extension />
-</ApplicationDefinition></value>
-  </data>
-  <data name="BaseTemplate_ApplicationDefinition" xml:space="preserve">
-    <value><?xml version="1.0"?>
-<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
-  <TemplateUrl>fusion/templates/mapguide/slate/index.html</TemplateUrl>
-  <MapSet>
-    <MapGroup id="MgMainMapId">
-      <Map>
-        <Type>MapGuide</Type>
-        <SingleTile>true</SingleTile>
-        <Extension>
-          <ResourceId />
-          <SelectionAsOverlay>true</SelectionAsOverlay>
-          <SelectionColor>0x0000FFA0</SelectionColor>
-        </Extension>
-      </Map>
-      <Extension />
-    </MapGroup>
-  </MapSet>
-  <WidgetSet>
-    <Container xsi:type="UiItemContainerType">
-      <Name>Toolbar</Name>
-      <Type>Toolbar</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>RefreshMap</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>SelectRadius</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>SelectPolygon</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ClearSelection</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BufferPanel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Measure</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>FeatureInfo</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Query</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Theme</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Redline</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Print</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ViewOptions</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>About</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Help</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>ToolbarSecondary</Name>
-      <Type>Toolbar</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Select</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Pan</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Zoom</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomIn</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomOut</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>InitialMapView</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomToSelection</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>PreviousView</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>NextView</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>ToolbarVertical</Name>
-      <Type>Toolbar</Type>
-      <Position>left</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>SelectNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>PanNoLabel</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomInNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomOutNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>InitialMapViewNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomToSelectionNoLabel</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>PreviousViewNoLabel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>NextViewNoLabel</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>Statusbar</Name>
-      <Type>Splitterbar</Type>
-      <Position>bottom</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusCoords</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusSelection</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusScale</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>StatusViewSize</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>FileMenu</Name>
-      <Type>Toolbar</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>MapMenu</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BasemapSwitcher</Widget>
-      </Item>
-      <Item xsi:type="FlyoutItemType">
-        <Function>Flyout</Function>
-        <Label>View</Label>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowOverviewMap</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowTaskWindow</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowLegendWindow</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ShowSelectionWindow</Widget>
-        </Item>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>MapRightClickMenu</Name>
-      <Type>ContextMenu</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>RefreshMap</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Pan</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Zoom</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomIn</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ZoomOut</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="FlyoutItemType">
-        <Function>Flyout</Function>
-        <Label>Zoom</Label>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>InitialMapView</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>PreviousView</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>NextView</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>ZoomToSelection</Widget>
-        </Item>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Select</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ClearSelection</Widget>
-      </Item>
-      <Item xsi:type="FlyoutItemType">
-        <Function>Flyout</Function>
-        <Label>Select More</Label>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>SelectRadius</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>SelectPolygon</Widget>
-        </Item>
-        <Item xsi:type="WidgetItemType">
-          <Function>Widget</Function>
-          <Widget>SelectWithin</Widget>
-        </Item>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BufferPanel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Measure</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>FeatureInfo</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Query</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Theme</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Redline</Widget>
-      </Item>
-      <Item xsi:type="SeparatorItemType">
-        <Function>Separator</Function>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>ViewOptions</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Help</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>About</Widget>
-      </Item>
-    </Container>
-    <Container xsi:type="UiItemContainerType">
-      <Name>TaskMenu</Name>
-      <Type>ContextMenu</Type>
-      <Position>top</Position>
-      <Extension />
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>BufferPanel</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Measure</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>FeatureInfo</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Query</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Theme</Widget>
-      </Item>
-      <Item xsi:type="WidgetItemType">
-        <Function>Widget</Function>
-        <Widget>Redline</Widget>
-      </Item>
-    </Container>
-    <MapWidget>
-      <Name>Map</Name>
-      <Type>Map</Type>
-      <Extension>
-        <MenuContainer>MapRightClickMenu</MenuContainer>
-      </Extension>
-      <MapId>MgMainMapId</MapId>
-    </MapWidget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>About</Name>
-      <Type>About</Type>
-      <Location />
-      <Extension>
-        <AboutURL>widgets/About/About.html</AboutURL>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>about</ImageClass>
-      <Label>About</Label>
-      <Tooltip>Click to show information about this application</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>ActivityIndicator</Name>
-      <Type>ActivityIndicator</Type>
-      <Location />
-      <Extension>
-        <ElementId />
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>BasemapSwitcher</Name>
-      <Type>BasemapSwitcher</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>options</ImageClass>
-      <Label>External Providers</Label>
-      <Tooltip>Click to change the basemap</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>BufferPanel</Name>
-      <Type>BufferPanel</Type>
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>buffer</ImageClass>
-      <Label>Buffer</Label>
-      <Tooltip>Click to create a buffer</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ClearSelection</Name>
-      <Type>ClearSelection</Type>
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-clear</ImageClass>
-      <Label>Clear Selection</Label>
-      <Tooltip>Click to clear the current selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>PreviousView</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Previous</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-back</ImageClass>
-      <Label>Previous</Label>
-      <Tooltip>Zoom to previous extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>NextView</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Next</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-forward</ImageClass>
-      <Label>Next</Label>
-      <Tooltip>Zoom to next extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Help</Name>
-      <Type>Help</Type>
-      <Location />
-      <Extension>
-        <Target>HelpWindow</Target>
-        <Url>widgets/Help/Help.html</Url>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>help</ImageClass>
-      <Label>Help</Label>
-      <Tooltip>Click to get help</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>InitialMapView</Name>
-      <Type>InitialMapView</Type>
-      <Location />
-      <Extension>
-        <ViewType>initial</ViewType>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-full</ImageClass>
-      <Label>Zoom Extents</Label>
-      <Tooltip>Click to zoom to the full map extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>Legend</Name>
-      <Type>Legend</Type>
-      <Location />
-      <Extension>
-        <HideInvisibleLayers>true</HideInvisibleLayers>
-        <ShowRootFolder>false</ShowRootFolder>
-        <DisabledLayerIcon>images/icons/legend-layer.png</DisabledLayerIcon>
-        <RootFolderIcon>images/icons/legend-map.png</RootFolderIcon>
-        <ShowMapFolder>false</ShowMapFolder>
-        <LayerThemeIcon>images/icons/legend-theme.png</LayerThemeIcon>
-        <LayerRasterIcon>images/icons/legend-raster.png</LayerRasterIcon>
-        <LayerInfoIcon>images/icons/tree_layer_info.png</LayerInfoIcon>
-        <LayerDWFIcon>images/icons/legend-DWF.png</LayerDWFIcon>
-        <GroupInfoIcon>images/icons/tree_group_info.png</GroupInfoIcon>
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>MapMenu</Name>
-      <Type>MapMenu</Type>
-      <Location />
-      <Extension>
-        <Folder />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Maps</Label>
-      <Tooltip>Choose a map theme</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>Maptip</Name>
-      <Type>Maptip</Type>
-      <Location />
-      <Extension>
-        <Tolerance>2</Tolerance>
-        <Target>MaptipWindow</Target>
-        <WinFeatures>menubar=no,location=no,resizable=no,status=no</WinFeatures>
-        <Delay>350</Delay>
-        <Layer />
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Measure</Name>
-      <Type>Measure</Type>
-      <Location />
-      <Extension>
-        <DistancePrecision>4</DistancePrecision>
-        <MeasureTooltipContainer>MeasureContainerBox</MeasureTooltipContainer>
-        <MeasureTooltipType>static</MeasureTooltipType>
-        <MeasureTipPositionLeft>15</MeasureTipPositionLeft>
-        <Units>none</Units>
-        <LineStyleWidth>2</LineStyleWidth>
-        <MeasureTipPositionTop>100</MeasureTipPositionTop>
-        <LineStyleColor>rgba(0,0,255,0.3)</LineStyleColor>
-        <FillStyle>rgba(0,0,255, 0.3)</FillStyle>
-        <Target>TaskPane</Target>
-        <AreaPrecision>4</AreaPrecision>
-        <Type>Both</Type>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>measure</ImageClass>
-      <Label>Measure</Label>
-      <Tooltip>Measure distances and areas on the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>FeatureInfo</Name>
-      <Type>FeatureInfo</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>featureinfo</ImageClass>
-      <Label>Feature Info</Label>
-      <Tooltip>Click to display selected feature info</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Query</Name>
-      <Type>Query</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>query</ImageClass>
-      <Label>Query</Label>
-      <Tooltip>Click to execute a custom query</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Theme</Name>
-      <Type>Theme</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>theme</ImageClass>
-      <Label>Theme</Label>
-      <Tooltip>Click to create a themed layer</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Redline</Name>
-      <Type>Redline</Type>
-      <Location />
-      <Extension>
-        <FeatureStyle />
-        <Target>TaskPane</Target>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>redline</ImageClass>
-      <Label>Redline</Label>
-      <Tooltip>Click to draw redline features</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>Navigator</Name>
-      <Type>Navigator</Type>
-      <Location />
-      <Extension />
-    </Widget>
-    <Widget>
-      <Name>OverviewMap</Name>
-      <Type>OverviewMap</Type>
-      <Location />
-      <Extension>
-        <MinRatio>32</MinRatio>
-        <MapId />
-        <MaxRatio>128</MaxRatio>
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Pan</Name>
-      <Type>Pan</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>pan</ImageClass>
-      <Label>Pan</Label>
-      <Tooltip>Click and drag to pan the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Print</Name>
-      <Type>Print</Type>
-      <Extension>
-        <ShowPrintUI>true</ShowPrintUI>
-        <ShowNorthArrow>false</ShowNorthArrow>
-        <PageTitle />
-        <ImageBaseUrl />
-        <ShowLegend>false</ShowLegend>
-        <ShowTitle>false</ShowTitle>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>file-print</ImageClass>
-      <Label>Print</Label>
-      <Tooltip>Print the current map view</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>RefreshMap</Name>
-      <Type>RefreshMap</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-refresh</ImageClass>
-      <Label>Refresh</Label>
-      <Tooltip>Click to redraw the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SaveMap</Name>
-      <Type>SaveMap</Type>
-      <Extension>
-        <Format>png</Format>
-        <Scale />
-        <ResourceId />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>file-save</ImageClass>
-      <Label>Save map</Label>
-      <Tooltip>Click to save the map as an image</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Select</Name>
-      <Type>Select</Type>
-      <Location />
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <SelectionType>INTERSECTS</SelectionType>
-        <QueryActiveLayer>false</QueryActiveLayer>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select</ImageClass>
-      <Label>Select</Label>
-      <Tooltip>Click to select features</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>SelectionPanel</Name>
-      <Type>SelectionPanel</Type>
-      <Location />
-      <Extension />
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectPolygon</Name>
-      <Type>SelectPolygon</Type>
-      <Location />
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <SelectionType>INTERSECTS</SelectionType>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-polygon</ImageClass>
-      <Label>Select Polygon</Label>
-      <Tooltip>Draw a polygon to perform a selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectRadius</Name>
-      <Type>SelectRadius</Type>
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <RadiusTooltipType>dynamic</RadiusTooltipType>
-        <RadiusTooltipContainer />
-        <SelectionType>INTERSECTS</SelectionType>
-        <DefaultRadius>20</DefaultRadius>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-radius</ImageClass>
-      <Label>Select Radius</Label>
-      <Tooltip>Click to select within a radius</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectWithin</Name>
-      <Type>SelectWithin</Type>
-      <Location />
-      <Extension>
-        <Target>TaskPane</Target>
-        <DisableIfSelectionEmpty>true</DisableIfSelectionEmpty>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-features</ImageClass>
-      <Label>Select within</Label>
-      <Tooltip>Click to select features within this selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>TaskPane</Name>
-      <Type>TaskPane</Type>
-      <Location />
-      <Extension>
-        <MenuContainer>TaskMenu</MenuContainer>
-        <InitialTask />
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ViewOptions</Name>
-      <Type>ViewOptions</Type>
-      <Location />
-      <Extension>
-        <DisplayUnits />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>options</ImageClass>
-      <Label>Options</Label>
-      <Tooltip>Click to change the units displayed</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>Zoom</Name>
-      <Type>Zoom</Type>
-      <Extension>
-        <Tolerance>5</Tolerance>
-        <Factor>2</Factor>
-        <Direction>in</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in</ImageClass>
-      <Label>Zoom Rectangle</Label>
-      <Tooltip>Click or click and drag on the map to zoom in</Tooltip>
-      <StatusText>Click or click and drag on the map to zoom in</StatusText>
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomOut</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>0.5</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-out-fixed</ImageClass>
-      <Label>Zoom Out</Label>
-      <Tooltip>Zoom out to display a larger area</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomIn</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>2.0</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in-fixed</ImageClass>
-      <Label>Zoom In</Label>
-      <Tooltip>Zoom in to display more detail</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomToSelection</Name>
-      <Type>ZoomToSelection</Type>
-      <Location />
-      <Extension>
-        <MaximumZoomDimension>-1</MaximumZoomDimension>
-        <ZoomFactor>2</ZoomFactor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-zoom</ImageClass>
-      <Label>Zoom Selection</Label>
-      <Tooltip>Click to zoom to the selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>InitialMapViewNoLabel</Name>
-      <Type>InitialMapView</Type>
-      <Location />
-      <Extension>
-        <ViewType>initial</ViewType>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-full</ImageClass>
-      <Label />
-      <Tooltip>Click to zoom to the full map extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>NextViewNoLabel</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Next</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-forward</ImageClass>
-      <Label />
-      <Tooltip>Zoom to next extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>PanNoLabel</Name>
-      <Type>Pan</Type>
-      <Location />
-      <Extension />
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>pan</ImageClass>
-      <Label />
-      <Tooltip>Click and drag to pan the map</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>PreviousViewNoLabel</Name>
-      <Type>ExtentHistory</Type>
-      <Extension>
-        <Direction>Previous</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>view-back</ImageClass>
-      <Label />
-      <Tooltip>Zoom to previous extents</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>SelectNoLabel</Name>
-      <Type>Select</Type>
-      <Location />
-      <Extension>
-        <Tolerance>3</Tolerance>
-        <SelectionType>INTERSECTS</SelectionType>
-        <QueryActiveLayer>false</QueryActiveLayer>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select</ImageClass>
-      <Label />
-      <Tooltip>Click to select features</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomNoLabel</Name>
-      <Type>Zoom</Type>
-      <Extension>
-        <Tolerance>5</Tolerance>
-        <Factor>2</Factor>
-        <Direction>in</Direction>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in</ImageClass>
-      <Label />
-      <Tooltip>Click or click and drag on the map to zoom in</Tooltip>
-      <StatusText>Click or click and drag on the map to zoom in</StatusText>
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomInNoLabel</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>2.0</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-in-fixed</ImageClass>
-      <Label />
-      <Tooltip>Zoom in to display more detail</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomOutNoLabel</Name>
-      <Type>ZoomOnClick</Type>
-      <Location />
-      <Extension>
-        <Factor>0.5</Factor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>zoom-out-fixed</ImageClass>
-      <Label />
-      <Tooltip>Zoom out to display a larger area</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ZoomToSelectionNoLabel</Name>
-      <Type>ZoomToSelection</Type>
-      <Location />
-      <Extension>
-        <MaximumZoomDimension>-1</MaximumZoomDimension>
-        <ZoomFactor>2</ZoomFactor>
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>select-zoom</ImageClass>
-      <Label />
-      <Tooltip>Click to zoom to the selection</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowOverviewMap</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showOverviewMap()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Overview Map</Label>
-      <Tooltip>Display the overview map window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowTaskWindow</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showTaskPane()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Task Pane</Label>
-      <Tooltip>Display the task pane window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowLegendWindow</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showLegend()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Legend</Label>
-      <Tooltip>Display the legend window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>ShowSelectionWindow</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showSelectionPanel()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl />
-      <ImageClass />
-      <Label>Show Selection Panel</Label>
-      <Tooltip>Display the selection window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget>
-      <Name>StatusCoords</Name>
-      <Type>CursorPosition</Type>
-      <Extension>
-        <Precision>4</Precision>
-        <Template>x: {x}, y: {y}</Template>
-        <Units>dd</Units>
-      </Extension>
-    </Widget>
-    <Widget>
-      <Name>StatusSelection</Name>
-      <Type>SelectionInfo</Type>
-      <Location />
-      <Extension>
-        <EmptyText>No features selected</EmptyText>
-        <Template>{0} feature(s) selected on {1} layer(s)</Template>
-      </Extension>
-    </Widget>
-    <Widget>
-      <Name>StatusScale</Name>
-      <Type>EditableScale</Type>
-      <Extension>
-        <Precision>4</Precision>
-      </Extension>
-    </Widget>
-    <Widget>
-      <Name>StatusViewSize</Name>
-      <Type>ViewSize</Type>
-      <Location />
-      <Extension>
-        <Precision>2</Precision>
-        <Template>{w} x {h} {units}</Template>
-        <Units>Meters</Units>
-      </Extension>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>StatusOverviewMap</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showOverviewMap()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>iconNavigator</ImageClass>
-      <Label />
-      <Tooltip>Display the overview map window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-    <Widget xsi:type="UiWidgetType">
-      <Name>StatusNavigator</Name>
-      <Type>InvokeScript</Type>
-      <Location />
-      <Extension>
-        <Script>showOverviewMap()</Script>
-        <Target />
-      </Extension>
-      <ImageUrl>images/icons.png</ImageUrl>
-      <ImageClass>iconNavigator</ImageClass>
-      <Label />
-      <Tooltip>Display the overview map window</Tooltip>
-      <StatusText />
-      <Disabled>false</Disabled>
-    </Widget>
-  </WidgetSet>
-  <Extension />
-</ApplicationDefinition></value>
-  </data>
   <data name="CannotCreateLoadProcedureSubType" xml:space="preserve">
     <value>Could not create load procedure of type: </value>
   </data>
@@ -2463,18 +168,6 @@
   <data name="ErrorArgContainsReservedCharacters" xml:space="preserve">
     <value>{0} contains reserved characters</value>
   </data>
-  <data name="ErrorBadDocumentExpectedAttribute" xml:space="preserve">
-    <value>Bad document. Expected attribute: {0}</value>
-  </data>
-  <data name="ErrorBadDocumentExpectedElement" xml:space="preserve">
-    <value>Bad document. Expected element {0}</value>
-  </data>
-  <data name="ErrorBadDocumentInvalidBbox" xml:space="preserve">
-    <value>Bad document. Invalid bounding box</value>
-  </data>
-  <data name="ErrorBadHtmlColor" xml:space="preserve">
-    <value>Bad HTML color: {0}</value>
-  </data>
   <data name="ErrorBadNullEncodedString" xml:space="preserve">
     <value>Bad null encoded string</value>
   </data>
@@ -2511,12 +204,6 @@
   <data name="ErrorBoundingBoxDoesNotHave2Dimensions" xml:space="preserve">
     <value>Bounding box for map had {0} dimensions. Expected 2 dimensions</value>
   </data>
-  <data name="ErrorCmsOptionsOnMapGuideMap" xml:space="preserve">
-    <value>Commerical layer options are only available for non-MapGuide maps</value>
-  </data>
-  <data name="ErrorCouldNotDetermineSymbolType" xml:space="preserve">
-    <value>Could not determine symbol type</value>
-  </data>
   <data name="ErrorCurrentRecordIsEmpty" xml:space="preserve">
     <value>Current record is empty</value>
   </data>
@@ -2544,12 +231,6 @@
   <data name="ErrorInvalidResourceHeaderRootElement" xml:space="preserve">
     <value>Header must be either ResourceFolderHeaderType or ResourceDocumentHeaderType</value>
   </data>
-  <data name="ErrorInvalidResourceIdentifier" xml:space="preserve">
-    <value>Invalid resource identifier</value>
-  </data>
-  <data name="ErrorInvalidResourceIdentifierType" xml:space="preserve">
-    <value>Invalid resource identifier type. Must be Library or Session</value>
-  </data>
   <data name="ErrorJaggedResultSet" xml:space="preserve">
     <value>Incoming record must be structurally identical</value>
   </data>
@@ -2739,27 +420,15 @@
   <data name="ERR_CONVERTER_ALREADY_REGISTERED" xml:space="preserve">
     <value>A resource converter for {0} is already registered</value>
   </data>
-  <data name="ERR_FS_NO_ALIAS" xml:space="preserve">
-    <value>This feature source does not connect an externally aliased file</value>
-  </data>
-  <data name="ERR_FS_NO_EMBEDDED_DATA" xml:space="preserve">
-    <value>This feature source does not connect to an embedded data file</value>
-  </data>
   <data name="ERR_INIT_IDENTITY_PROPS" xml:space="preserve">
     <value>Could fetch and initialize identity properties for {1} This is likely a bug in MapGuide {0}{2}</value>
   </data>
-  <data name="ERR_NOT_RESOURCE_CONTENT_XML" xml:space="preserve">
-    <value>XML content does not match any known resource</value>
-  </data>
   <data name="ERR_NO_DOWNGRADE_PATH" xml:space="preserve">
     <value>There is no downgrade path to the desired resource version</value>
   </data>
   <data name="ERR_NO_REGISTERED_VALIDATOR" xml:space="preserve">
     <value>There is no registered validator for {0} v{1}. Validation cannot be performed</value>
   </data>
-  <data name="ERR_NO_SERIALIZER" xml:space="preserve">
-    <value>Could not find matching serializer for this resource: </value>
-  </data>
   <data name="ERR_NO_UPGRADE_PATH" xml:space="preserve">
     <value>There is no upgrade path to the desired resource version</value>
   </data>
@@ -2769,15 +438,9 @@
   <data name="ERR_RESOURCE_NOT_ATTACHED" xml:space="preserve">
     <value>No connection attached to this resource</value>
   </data>
-  <data name="ERR_SERIALIZER_ALREADY_REGISTERED" xml:space="preserve">
-    <value>A resource serializer has already been registered for {0} v{1}</value>
-  </data>
   <data name="ERR_SERVICE_NOT_SUPPORTED" xml:space="preserve">
     <value>Service Type not supported: {0}</value>
   </data>
-  <data name="FactoryMethodAlreadyRegistered" xml:space="preserve">
-    <value>Factory method already registered for version: </value>
-  </data>
   <data name="FS_CannotPackageSecuredCredentials" xml:space="preserve">
     <value>Due to a limitation in the public APIs provided by MapGuide. This Feature Source cannot be packaged by Maestro's packager without discarding the MG_USER_CREDENTIALS element. The workaround is to either re-secure these Feature Sources after loading the Maestro-created package, or to use the official packaging method which will preserve MG_USER_CREDENTIALS in its encrypted state</value>
   </data>
@@ -2889,9 +552,6 @@
   <data name="LDF_UnsupportedLayerTypeWarning" xml:space="preserve">
     <value>The layer has no type, or the type is unsupported by Maestro</value>
   </data>
-  <data name="LoadProcFactoryMethodAlreadyRegistered" xml:space="preserve">
-    <value>Factory method already registered for load procedure type: </value>
-  </data>
   <data name="LPROC_ConvertToSdf3NotSupported" xml:space="preserve">
     <value>Convert to SDF option is not supported by Maestro</value>
   </data>
@@ -2979,21 +639,9 @@
   <data name="MovingResource" xml:space="preserve">
     <value>Moving resource ...</value>
   </data>
-  <data name="NotAFolder" xml:space="preserve">
-    <value>Not a folder resource id: {0}</value>
-  </data>
   <data name="NullString" xml:space="preserve">
     <value>(null)</value>
   </data>
-  <data name="PrecondFailure" xml:space="preserve">
-    <value>Precondition failure: </value>
-  </data>
-  <data name="PrecondStringEmpty" xml:space="preserve">
-    <value>String is empty: </value>
-  </data>
-  <data name="PrecondValueNull" xml:space="preserve">
-    <value>Value is null: </value>
-  </data>
   <data name="ProgressCopyingFolder" xml:space="preserve">
     <value>Copying Folder ...</value>
   </data>
@@ -3048,249 +696,12 @@
   <data name="TS_ThreadFailureError" xml:space="preserve">
     <value>All threads crashed, and the tile set was only partially created</value>
   </data>
-  <data name="UnknownLayerVersion" xml:space="preserve">
-    <value>Unknown layer version: </value>
-  </data>
-  <data name="UnknownMapDefinitionVersion" xml:space="preserve">
-    <value>Unknown Map Definition version: </value>
-  </data>
-  <data name="UnknownSymbolDefVersion" xml:space="preserve">
-    <value>Unknown Symbol Definition version: </value>
-  </data>
-  <data name="UnknownWatermarkDefinitionVersion" xml:space="preserve">
-    <value>Unknown Watermark Definition version: </value>
-  </data>
-  <data name="UnknownWebLayoutVersion" xml:space="preserve">
-    <value>Unknown Web Layout version: </value>
-  </data>
-  <data name="UnsupportedLoadProcedureType" xml:space="preserve">
-    <value>Unsupported Load Procedure Type</value>
-  </data>
-  <data name="WL_Desc_About" xml:space="preserve">
-    <value>Display information about this application</value>
-  </data>
-  <data name="WL_Desc_Buffer" xml:space="preserve">
-    <value>Create buffers around the selected features</value>
-  </data>
-  <data name="WL_Desc_ClearSelection" xml:space="preserve">
-    <value>Clear the current selection</value>
-  </data>
-  <data name="WL_Desc_Copy" xml:space="preserve">
-    <value>Copy current view of map to clipboard</value>
-  </data>
-  <data name="WL_Desc_GetPrintablePage" xml:space="preserve">
-    <value>Get Printer-friendly page</value>
-  </data>
-  <data name="WL_Desc_Help" xml:space="preserve">
-    <value>Launch help for this application</value>
-  </data>
-  <data name="WL_Desc_InitialCenterScale" xml:space="preserve">
-    <value>Zoom to initial map center and scale</value>
-  </data>
-  <data name="WL_Desc_InitialMapView" xml:space="preserve">
-    <value>Fit the extents of the map to the window</value>
-  </data>
-  <data name="WL_Desc_MapTip" xml:space="preserve">
-    <value>Click to enable/disable display of map tooltips</value>
-  </data>
-  <data name="WL_Desc_Measure" xml:space="preserve">
-    <value>Measure distances on the map</value>
-  </data>
-  <data name="WL_Desc_NextView" xml:space="preserve">
-    <value>Go to next view</value>
-  </data>
-  <data name="WL_Desc_Pan" xml:space="preserve">
-    <value>Drag the map to view areas out of range</value>
-  </data>
-  <data name="WL_Desc_PanDown" xml:space="preserve">
-    <value>Pan down by a preset increment</value>
-  </data>
-  <data name="WL_Desc_PanLeft" xml:space="preserve">
-    <value>Pan left by a preset increment</value>
-  </data>
-  <data name="WL_Desc_PanRight" xml:space="preserve">
-    <value>Pan right by a preset increment</value>
-  </data>
-  <data name="WL_Desc_PanUp" xml:space="preserve">
-    <value>Pan up by a preset increment</value>
-  </data>
-  <data name="WL_Desc_PrevView" xml:space="preserve">
-    <value>Go to previous view</value>
-  </data>
-  <data name="WL_Desc_Print" xml:space="preserve">
-    <value>Print with optional layout</value>
-  </data>
-  <data name="WL_Desc_RefreshMap" xml:space="preserve">
-    <value>Refresh map to reload all layers keeping current center and scale</value>
-  </data>
-  <data name="WL_Desc_Select" xml:space="preserve">
-    <value>Select features by clicking and dragging</value>
-  </data>
-  <data name="WL_Desc_SelectPolygon" xml:space="preserve">
-    <value>Click and drag to select all features that fall within</value>
-  </data>
-  <data name="WL_Desc_SelectRadius" xml:space="preserve">
-    <value>Click and drag to select all features inside the circle</value>
-  </data>
-  <data name="WL_Desc_SelectWithin" xml:space="preserve">
-    <value>Select features that fall within currently selected areas</value>
-  </data>
-  <data name="WL_Desc_TaskBack" xml:space="preserve">
-    <value>Return to previous task page</value>
-  </data>
-  <data name="WL_Desc_TaskForward" xml:space="preserve">
-    <value>Forward to next task page</value>
-  </data>
-  <data name="WL_Desc_TaskHome" xml:space="preserve">
-    <value>Return to home task page</value>
-  </data>
-  <data name="WL_Desc_TaskList" xml:space="preserve">
-    <value>View a list of available tasks</value>
-  </data>
-  <data name="WL_Desc_ViewOptions" xml:space="preserve">
-    <value>View Options</value>
-  </data>
-  <data name="WL_Desc_ZoomDynamic" xml:space="preserve">
-    <value>Zoom dynamically by clicking and dragging</value>
-  </data>
-  <data name="WL_Desc_ZoomIn" xml:space="preserve">
-    <value>Zoom in by a preset increment</value>
-  </data>
-  <data name="WL_Desc_ZoomOut" xml:space="preserve">
-    <value>Zoom out by a preset increment</value>
-  </data>
-  <data name="WL_Desc_ZoomRect" xml:space="preserve">
-    <value>Zoom in on an area</value>
-  </data>
-  <data name="WL_Desc_ZoomSelection" xml:space="preserve">
-    <value>Zoom to the extents of selected features</value>
-  </data>
   <data name="WL_DuplicateCommandName" xml:space="preserve">
     <value>There web layout has more than one command named: {0}</value>
   </data>
   <data name="WL_DuplicateSearchResultColumn" xml:space="preserve">
     <value>The search command {0} references more than one property named {1}</value>
   </data>
-  <data name="WL_Label_About" xml:space="preserve">
-    <value>About</value>
-  </data>
-  <data name="WL_Label_Buffer" xml:space="preserve">
-    <value>Buffer</value>
-  </data>
-  <data name="WL_Label_ClearSelection" xml:space="preserve">
-    <value>Clear Selection</value>
-  </data>
-  <data name="WL_Label_Copy" xml:space="preserve">
-    <value>Copy</value>
-  </data>
-  <data name="WL_Label_GetPrintablePage" xml:space="preserve">
-    <value>Get Printable Page</value>
-  </data>
-  <data name="WL_Label_Help" xml:space="preserve">
-    <value>Help</value>
-  </data>
-  <data name="WL_Label_InitialCenterScale" xml:space="preserve">
-    <value>Initial Center and Scale</value>
-  </data>
-  <data name="WL_Label_InitialMapView" xml:space="preserve">
-    <value>Initial Map View</value>
-  </data>
-  <data name="WL_Label_Measure" xml:space="preserve">
-    <value>Measure</value>
-  </data>
-  <data name="WL_Label_NextView" xml:space="preserve">
-    <value>Next View</value>
-  </data>
-  <data name="WL_Label_Pan" xml:space="preserve">
-    <value>Pan Mode</value>
-  </data>
-  <data name="WL_Label_PanDown" xml:space="preserve">
-    <value>Pan Down</value>
-  </data>
-  <data name="WL_Label_PanLeft" xml:space="preserve">
-    <value>Pan Left</value>
-  </data>
-  <data name="WL_Label_PanRight" xml:space="preserve">
-    <value>Pan Right</value>
-  </data>
-  <data name="WL_Label_PanUp" xml:space="preserve">
-    <value>Pan Up</value>
-  </data>
-  <data name="WL_Label_PrevView" xml:space="preserve">
-    <value>Previous View</value>
-  </data>
-  <data name="WL_Label_Print" xml:space="preserve">
-    <value>Print</value>
-  </data>
-  <data name="WL_Label_RefreshMap" xml:space="preserve">
-    <value>Refresh Map</value>
-  </data>
-  <data name="WL_Label_Select" xml:space="preserve">
-    <value>Select</value>
-  </data>
-  <data name="WL_Label_SelectMore" xml:space="preserve">
-    <value>Select More</value>
-  </data>
-  <data name="WL_Label_SelectPolygon" xml:space="preserve">
-    <value>Select Polygon</value>
-  </data>
-  <data name="WL_Label_SelectRadius" xml:space="preserve">
-    <value>Select Radius</value>
-  </data>
-  <data name="WL_Label_SelectWithin" xml:space="preserve">
-    <value>Select Within</value>
-  </data>
-  <data name="WL_Label_TaskBack" xml:space="preserve">
-    <value>Back</value>
-  </data>
-  <data name="WL_Label_TaskForward" xml:space="preserve">
-    <value>Forward</value>
-  </data>
-  <data name="WL_Label_TaskHome" xml:space="preserve">
-    <value>Home</value>
-  </data>
-  <data name="WL_Label_TaskList" xml:space="preserve">
-    <value>Task List</value>
-  </data>
-  <data name="WL_Label_ViewOptions" xml:space="preserve">
-    <value>View Options</value>
-  </data>
-  <data name="WL_Label_Zoom" xml:space="preserve">
-    <value>Zoom</value>
-  </data>
-  <data name="WL_Label_ZoomDynamic" xml:space="preserve">
-    <value>Zoom Dynamic</value>
-  </data>
-  <data name="WL_Label_ZoomIn" xml:space="preserve">
-    <value>Zoom In</value>
-  </data>
-  <data name="WL_Label_ZoomOut" xml:space="preserve">
-    <value>Zoom Out</value>
-  </data>
-  <data name="WL_Label_ZoomRect" xml:space="preserve">
-    <value>Zoom Rectangle</value>
-  </data>
-  <data name="WL_Label_ZoomSelection" xml:space="preserve">
-    <value>Zoom Selection</value>
-  </data>
-  <data name="WL_MapValidationError" xml:space="preserve">
-    <value>Error validating MapDefinition {0}, message: {1}</value>
-  </data>
-  <data name="WL_MissingMapError" xml:space="preserve">
-    <value>Layout does not specify a map</value>
-  </data>
-  <data name="WL_NonExistentMenuCommandReference" xml:space="preserve">
-    <value>Context Menu contains a reference to a command that doesn't exist: {0}</value>
-  </data>
-  <data name="WL_NonExistentTaskPaneCommandReference" xml:space="preserve">
-    <value>Task Pane contains a reference to a command that does not exist: {0}</value>
-  </data>
-  <data name="WL_NonExistentToolbarCommandReference" xml:space="preserve">
-    <value>Toolbar contains a reference to a command that does not exist: {0}</value>
-  </data>
-  <data name="WL_StartViewOutsideExtentsWarning" xml:space="preserve">
-    <value>Layout specifies a start view that is outside the map's initial extents</value>
-  </data>
   <data name="XmlValidationIssueTemplate" xml:space="preserve">
     <value>Line {0}, Char {1}: {2}</value>
   </data>
@@ -3438,4 +849,43 @@
   <data name="UnpreviewableResourceType" xml:space="preserve">
     <value>The resource type cannot be previewed</value>
   </data>
+  <data name="ErrorBadDocumentExpectedAttribute" xml:space="preserve">
+    <value>Bad document. Expected attribute: {0}</value>
+  </data>
+  <data name="ErrorBadDocumentExpectedElement" xml:space="preserve">
+    <value>Bad document. Expected element {0}</value>
+  </data>
+  <data name="ErrorBadDocumentInvalidBbox" xml:space="preserve">
+    <value>Bad document. Invalid bounding box</value>
+  </data>
+  <data name="ErrorBadHtmlColor" xml:space="preserve">
+    <value>Bad HTML color: {0}</value>
+  </data>
+  <data name="ErrorInvalidResourceIdentifier" xml:space="preserve">
+    <value>Invalid resource identifier</value>
+  </data>
+  <data name="ErrorInvalidResourceIdentifierType" xml:space="preserve">
+    <value>Invalid resource identifier type. Must be Library or Session</value>
+  </data>
+  <data name="UnsupportedLoadProcedureType" xml:space="preserve">
+    <value>Unsupported Load Procedure Type</value>
+  </data>
+  <data name="WL_MapValidationError" xml:space="preserve">
+    <value>Error validating MapDefinition {0}, message: {1}</value>
+  </data>
+  <data name="WL_MissingMapError" xml:space="preserve">
+    <value>Layout does not specify a map</value>
+  </data>
+  <data name="WL_NonExistentMenuCommandReference" xml:space="preserve">
+    <value>Context Menu contains a reference to a command that doesn't exist: {0}</value>
+  </data>
+  <data name="WL_NonExistentTaskPaneCommandReference" xml:space="preserve">
+    <value>Task Pane contains a reference to a command that does not exist: {0}</value>
+  </data>
+  <data name="WL_NonExistentToolbarCommandReference" xml:space="preserve">
+    <value>Toolbar contains a reference to a command that does not exist: {0}</value>
+  </data>
+  <data name="WL_StartViewOutsideExtentsWarning" xml:space="preserve">
+    <value>Layout specifies a start view that is outside the map's initial extents</value>
+  </data>
 </root>
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using System;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,11 +24,15 @@
 using OSGeo.MapGuide.MaestroAPI.CoordinateSystem;
 using OSGeo.MapGuide.MaestroAPI.IO;
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.MaestroAPI.Services;
 using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using OSGeo.MapGuide.ObjectModels.Capabilities;
 using OSGeo.MapGuide.ObjectModels.Capabilities.v1_0_0;
+using OSGeo.MapGuide.ObjectModels.DrawingSource;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
+using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
 using OSGeo.MapGuide.ObjectModels.WatermarkDefinition;
 using System;
 using System.Collections.Generic;
@@ -1076,11 +1080,11 @@
         /// <summary>
         /// Explodes a themed layer into filtered sub-layers where each sub-layer is filtered on the individual theme rule's filter
         /// </summary>
+        /// <param name="conn"></param>
         /// <param name="options"></param>
         /// <param name="progress"></param>
-        public static void ExplodeThemeIntoFilteredLayers(ExplodeThemeOptions options, LengthyOperationProgressCallBack progress)
+        public static void ExplodeThemeIntoFilteredLayers(IServerConnection conn, ExplodeThemeOptions options, LengthyOperationProgressCallBack progress)
         {
-            var conn = options.Layer.CurrentConnection;
             var origLayerId = options.Layer.ResourceID;
             string layerPrefix = options.LayerPrefix;
 
@@ -1092,7 +1096,7 @@
             {
                 var currentRule = origStyle.GetRuleAt(i);
 
-                var newLayer = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector, options.Layer.ResourceVersion);
+                var newLayer = ObjectFactory.CreateDefaultLayer(LayerType.Vector, options.Layer.ResourceVersion);
                 var vl = (IVectorLayerDefinition)newLayer.SubLayer;
                 vl.ResourceId = origVl.ResourceId;
                 vl.FeatureName = origVl.FeatureName;
@@ -1211,7 +1215,7 @@
                 lyrId = prefix + clsDef.Name + "(" + counter + ").LayerDefinition"; //NOXLATE
             }
 
-            var ld = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector, new Version(1, 0, 0));
+            var ld = ObjectFactory.CreateDefaultLayer(LayerType.Vector, new Version(1, 0, 0));
 
             //Assign default properties
             ld.ResourceID = lyrId;
@@ -1502,40 +1506,13 @@
         }
 
         /// <summary>
-        /// Gets the name of the active spatial context used by the given layer definition
-        /// </summary>
-        /// <param name="ldf"></param>
-        /// <returns></returns>
-        public static string GetLayerSpatialContext(ILayerDefinition ldf)
-        {
-            var conn = ldf.CurrentConnection;
-            var rl = ldf.SubLayer as IRasterLayerDefinition;
-            var vl = ldf.SubLayer as IVectorLayerDefinition;
-            if (vl != null)
-            {
-                var cls = conn.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName);
-                var gp = cls.FindProperty(vl.Geometry) as GeometricPropertyDefinition;
-                if (gp != null)
-                    return gp.SpatialContextAssociation;
-            }
-            else if (rl != null)
-            {
-                var cls = conn.FeatureService.GetClassDefinition(rl.ResourceId, rl.FeatureName);
-                var rp = cls.FindProperty(rl.Geometry) as RasterPropertyDefinition;
-                if (rp != null)
-                    return rp.SpatialContextAssociation;
-            }
-            return null;
-        }
-
-        /// <summary>
         /// Creates a preview map definition for the given watermark
         /// </summary>
         /// <param name="wmd"></param>
         /// <returns></returns>
         public static IMapDefinition2 CreateWatermarkPreviewMapDefinition(IWatermarkDefinition wmd)
         {
-            IMapDefinition2 map = (IMapDefinition2)ObjectFactory.CreateMapDefinition(wmd.CurrentConnection, wmd.SupportedMapDefinitionVersion, "Watermark Definition Preview"); //NOXLATE
+            IMapDefinition2 map = (IMapDefinition2)ObjectFactory.CreateMapDefinition(wmd.SupportedMapDefinitionVersion, "Watermark Definition Preview"); //NOXLATE
             map.CoordinateSystem = @"LOCAL_CS[""*XY-M*"", LOCAL_DATUM[""*X-Y*"", 10000], UNIT[""Meter"", 1], AXIS[""X"", EAST], AXIS[""Y"", NORTH]]"; //NOXLATE
             map.Extents = ObjectFactory.CreateEnvelope(-1000000, -1000000, 1000000, 1000000);
             map.AddWatermark(wmd);
@@ -1602,6 +1579,41 @@
 
             return Color.FromArgb(color.A, (int)red, (int)green, (int)blue);
         }
+
+        public static ISimpleSymbolDefinition CreateSimpleSymbol(IServerConnection conn, string name, string description)
+        {
+            return ObjectFactory.CreateSimpleSymbol(conn.Capabilities.GetMaxSupportedResourceVersion(ResourceTypes.SymbolDefinition.ToString()), name, description);
+        }
+
+        public static IMapDefinition CreateMapDefinition(IServerConnection conn, string name)
+        {
+            return ObjectFactory.CreateMapDefinition(conn.Capabilities.GetMaxSupportedResourceVersion(ResourceTypes.MapDefinition.ToString()), name);
+        }
+
+        public static IMapDefinition CreateMapDefinition(IServerConnection conn, string name, string csWkt, ObjectModels.Common.IEnvelope extent)
+        {
+            return ObjectFactory.CreateMapDefinition(conn.Capabilities.GetMaxSupportedResourceVersion(ResourceTypes.MapDefinition.ToString()),
+                                                     name,
+                                                     csWkt,
+                                                     extent);
+        }
+
+        public static ILayerDefinition CreateDefaultLayer(IServerConnection conn, LayerType layerType)
+        {
+            return ObjectFactory.CreateDefaultLayer(layerType, conn.Capabilities.GetMaxSupportedResourceVersion(ResourceTypes.LayerDefinition.ToString()));
+        }
+
+        public static IApplicationDefinition CreateFlexibleLayout(IServerConnection conn, string templateName)
+        {
+            Check.Precondition(Array.IndexOf(conn.Capabilities.SupportedServices, (int)ServiceType.Fusion) >= 0, "Required Fusion service not supported on this connection");
+
+            IFusionService service = (IFusionService)conn.GetService((int)ServiceType.Fusion);
+            var templates = service.GetApplicationTemplates();
+            var widgets = service.GetApplicationWidgets();
+            var containers = service.GetApplicationContainers();
+
+            return ObjectFactory.CreateFlexibleLayout(conn.SiteVersion, templates, widgets, containers, templateName);
+        }
     }
 
     /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/WeakEventHandler.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/WeakEventHandler.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/WeakEventHandler.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -20,6 +20,7 @@
 
 #endregion Disclaimer / License
 
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Reflection;
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/XmlValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/XmlValidator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/XmlValidator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -24,6 +24,7 @@
 {
     using OSGeo.MapGuide.MaestroAPI.Exceptions;
     using OSGeo.MapGuide.MaestroAPI.Resource;
+    using OSGeo.MapGuide.ObjectModels;
     using System;
     using System.Collections.Generic;
     using System.Collections.ObjectModel;
@@ -144,7 +145,7 @@
             try
             {
                 //Use original resource type to determine how to deserialize
-                res = ResourceTypeRegistry.Deserialize(xmlContent);
+                res = ObjectFactory.DeserializeXml(xmlContent);
             }
             catch (Exception ex)
             {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpGetResourceContents.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpGetResourceContents.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpGetResourceContents.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -23,6 +23,7 @@
 using OSGeo.MapGuide.MaestroAPI.Commands;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using System.Collections.Generic;
 using System.Threading;
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpResourcePreviewUrlGenerator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpResourcePreviewUrlGenerator.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpResourcePreviewUrlGenerator.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -38,16 +38,18 @@
     internal class HttpResourcePreviewUrlGenerator : ResourcePreviewUrlGenerator
     {
         private string _rootUrl;
+        private HttpServerConnection _conn;
 
-        public HttpResourcePreviewUrlGenerator(string rootUrl)
+        public HttpResourcePreviewUrlGenerator(HttpServerConnection conn, string rootUrl)
         {
+            _conn = conn;
             _rootUrl = rootUrl;
         }
 
         protected override string GenerateWatermarkPreviewUrl(ObjectModels.WatermarkDefinition.IWatermarkDefinition wmd, string locale, bool isNew, string sessionID)
         {
             //We demand a 2.3.0 Map Definition or higher
-            if (wmd.CurrentConnection.SiteVersion < new Version(2, 3))
+            if (_conn.SiteVersion < new Version(2, 3))
                 throw new InvalidOperationException(Strings.SiteVersionDoesntSupportWatermarks);
 
             IMapDefinition2 map = Utility.CreateWatermarkPreviewMapDefinition(wmd);
@@ -68,45 +70,43 @@
             return url;
         }
 
-        protected override string GenerateWebLayoutPreviewUrl(Resource.IResource res, string locale, bool isNew, string sessionID)
+        protected override string GenerateWebLayoutPreviewUrl(IResource res, string locale, bool isNew, string sessionID)
         {
             string url = GetRootUrl();
 
             var resId = "Session:" + sessionID + "//" + Guid.NewGuid() + ".WebLayout"; //NOXLATE
-            var conn = res.CurrentConnection;
-
-            conn.ResourceService.SaveResourceAs(res, resId);
+            
+            _conn.ResourceService.SaveResourceAs(res, resId);
             url += "mapviewerajax/?WEBLAYOUT=" + resId + "&SESSION=" + sessionID + "&LOCALE=" + GetLocale(locale); //NOXLATE
 
             return url;
         }
 
-        private string _GenerateMapPreviewUrl(Resource.IResource res, string locale, bool isNew, string sessionID, bool addDebugWatermark)
+        private string _GenerateMapPreviewUrl(IResource res, string locale, bool isNew, string sessionID, bool addDebugWatermark)
         {
             string url = GetRootUrl();
 
             var mdfId = "Session:" + sessionID + "//" + Guid.NewGuid() + ".MapDefinition"; //NOXLATE
-            var conn = res.CurrentConnection;
             var mdf = res as IMapDefinition;
             if (mdf != null)
             {
                 IMapDefinition2 mdf2 = mdf as IMapDefinition2;
                 if (mdf2 != null && addDebugWatermark)
-                    CreateDebugWatermark(mdf2, conn, null);
+                    CreateDebugWatermark(mdf2, _conn, null);
             }
-            conn.ResourceService.SaveResourceAs(res, mdfId);
+            _conn.ResourceService.SaveResourceAs(res, mdfId);
             //if (PropertyService.Get(ConfigProperties.PreviewViewerType, "AJAX").Equals("AJAX")) //NOXLATE
             if (this.UseAjaxViewer)
             {
                 //Create temp web layout to house this map
-                var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), mdfId);
+                var wl = ObjectFactory.CreateWebLayout(new Version(1, 0, 0), mdfId);
 
                 //Add a custom zoom command (to assist previews of layers that aren't [0, infinity] scale)
                 AttachPreviewCommands(wl);
 
                 var resId = "Session:" + sessionID + "//" + Guid.NewGuid() + ".WebLayout"; //NOXLATE
 
-                conn.ResourceService.SaveResourceAs(wl, resId);
+                _conn.ResourceService.SaveResourceAs(wl, resId);
                 url += "mapviewerajax/?WEBLAYOUT=" + resId + "&SESSION=" + sessionID + "&LOCALE=" + GetLocale(locale); //NOXLATE
             }
             else
@@ -124,7 +124,7 @@
             return url;
         }
 
-        protected override string GenerateMapPreviewUrl(Resource.IResource res, string locale, bool isNew, string sessionID)
+        protected override string GenerateMapPreviewUrl(IResource res, string locale, bool isNew, string sessionID)
         {
             return _GenerateMapPreviewUrl(res, locale, isNew, sessionID, this.AddDebugWatermark);
         }
@@ -134,14 +134,14 @@
             //Create temp map definition to house our current layer
             var mdfId = "Session:" + sessionId + "//" + Guid.NewGuid() + ".MapDefinition"; //NOXLATE
             string csWkt;
-            var extent = ldf.GetSpatialExtent(true, out csWkt);
+            var extent = ldf.GetSpatialExtent(_conn, true, out csWkt);
             if (extent == null)
                 throw new ApplicationException(Strings.FailedToCalculateFeatureSourceExtents);
 
-            string layerSc = Utility.GetLayerSpatialContext(ldf);
+            string layerSc = ldf.GetLayerSpatialContextName(_conn);
 
             //TODO: Based on the visible scales in this layer, size this extents accordingly
-            var mdf = ObjectFactory.CreateMapDefinition(conn, Strings.PreviewMap, csWkt, extent);
+            var mdf = Utility.CreateMapDefinition(conn, Strings.PreviewMap, csWkt, extent);
             IMapDefinition2 mdf2 = mdf as IMapDefinition2;
             if (mdf2 != null && this.AddDebugWatermark)
                 CreateDebugWatermark(mdf2, conn, layerSc);
@@ -152,29 +152,28 @@
             return mdf;
         }
 
-        protected override string GenerateLayerPreviewUrl(Resource.IResource res, string locale, bool isNew, string sessionID)
+        protected override string GenerateLayerPreviewUrl(IResource res, string locale, bool isNew, string sessionID)
         {
             string url = GetRootUrl();
 
             var ldf = (ILayerDefinition)res;
-            var conn = res.CurrentConnection;
 
             //Use feature source as name/label
             string layerName = ResourceIdentifier.GetName(ldf.SubLayer.ResourceId);
 
-            var mdf = CreateLayerPreviewMapDefinition(ldf, sessionID, layerName, conn);
+            var mdf = CreateLayerPreviewMapDefinition(ldf, sessionID, layerName, _conn);
             //if (PropertyService.Get(ConfigProperties.PreviewViewerType, "AJAX").Equals("AJAX")) //NOXLATE
             if (this.UseAjaxViewer)
             {
                 //Create temp web layout to house this map
-                var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), mdf.ResourceID);
+                var wl = ObjectFactory.CreateWebLayout(new Version(1, 0, 0), mdf.ResourceID);
 
                 //Add a custom zoom command (to assist previews of layers that aren't [0, infinity] scale)
                 AttachPreviewCommands(wl);
 
                 var resId = "Session:" + sessionID + "//" + Guid.NewGuid() + ".WebLayout"; //NOXLATE
 
-                conn.ResourceService.SaveResourceAs(wl, resId);
+                _conn.ResourceService.SaveResourceAs(wl, resId);
                 url += "mapviewerajax/?WEBLAYOUT=" + resId + "&SESSION=" + sessionID + "&LOCALE=" + GetLocale(locale); //NOXLATE
             }
             else
@@ -192,21 +191,20 @@
             return url;
         }
 
-        protected override string GenerateFlexLayoutPreviewUrl(Resource.IResource res, string locale, bool isNew, string sessionID)
+        protected override string GenerateFlexLayoutPreviewUrl(IResource res, string locale, bool isNew, string sessionID)
         {
             string url = GetRootUrl();
 
             //Create temp flex layout
             var appDef = (IApplicationDefinition)res;
-            var conn = appDef.CurrentConnection;
             var resId = "Session:" + sessionID + "//" + Guid.NewGuid() + ".ApplicationDefinition"; //NOXLATE
 
-            conn.ResourceService.SaveResourceAs(appDef, resId);
+            _conn.ResourceService.SaveResourceAs(appDef, resId);
             url += appDef.TemplateUrl + "?Session=" + sessionID + "&ApplicationDefinition=" + resId + "&locale=" + GetLocale(locale); //NOXLATE
             return url;
         }
 
-        protected override string GenerateFeatureSourcePreviewUrl(Resource.IResource res, string locale, bool isNew, string sessionID)
+        protected override string GenerateFeatureSourcePreviewUrl(IResource res, string locale, bool isNew, string sessionID)
         {
             string url = GetRootUrl();
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -31,6 +31,7 @@
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.SchemaOverrides;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition.v1_0_0;
 using OSGeo.MapGuide.ObjectModels.Capabilities;
@@ -2003,7 +2004,7 @@
 
         public override Resource.Preview.IResourcePreviewUrlGenerator GetPreviewUrlGenerator()
         {
-            return new HttpResourcePreviewUrlGenerator(m_reqBuilder.HostURI);
+            return new HttpResourcePreviewUrlGenerator(this, m_reqBuilder.HostURI);
         }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -108,6 +108,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalCapabilities.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalCapabilities.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalCapabilities.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Capability;
 using OSGeo.MapGuide.MaestroAPI.Commands;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 
 namespace OSGeo.MapGuide.MaestroAPI.Local

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalConnection.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalConnection.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/LocalConnection.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -31,6 +31,7 @@
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.SchemaOverrides;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Capabilities;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.LayerDefinition;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/OSGeo.MapGuide.MaestroAPI.Local.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/OSGeo.MapGuide.MaestroAPI.Local.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Local/OSGeo.MapGuide.MaestroAPI.Local.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -138,6 +138,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/Commands/LocalGetResourceContents.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/Commands/LocalGetResourceContents.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/Commands/LocalGetResourceContents.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -22,6 +22,7 @@
 
 using OSGeo.MapGuide.MaestroAPI.Commands;
 using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
@@ -87,8 +88,7 @@
                     {
                         var resType = ResourceIdentifier.GetResourceTypeAsString(resId);
 
-                        IResource r = ResourceTypeRegistry.Deserialize(resType, ms);
-                        r.CurrentConnection = this.Parent;
+                        IResource r = ObjectFactory.Deserialize(resType, ms);
                         r.ResourceID = resId;
                         resources.Add(resId, r);
                     }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeConnection.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeConnection.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeConnection.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -30,6 +30,7 @@
 using OSGeo.MapGuide.MaestroAPI.Schema;
 using OSGeo.MapGuide.MaestroAPI.SchemaOverrides;
 using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels;
 using OSGeo.MapGuide.ObjectModels.Capabilities;
 using OSGeo.MapGuide.ObjectModels.Common;
 using System;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/OSGeo.MapGuide.MaestroAPI.Native32-2.2.0.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/OSGeo.MapGuide.MaestroAPI.Native32-2.2.0.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/OSGeo.MapGuide.MaestroAPI.Native32-2.2.0.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -124,6 +124,10 @@
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ApplicationDefinitionTests.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ApplicationDefinitionTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ApplicationDefinitionTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -36,7 +36,7 @@
         [Test]
         public void ApplicationDefinitionDeserializationWithFullContentModel()
         {
-            IResource res = ObjectFactory.DeserializeResourceXml(Properties.Resources.AppDef_1_0_0);
+            IResource res = ObjectFactory.DeserializeXml(Properties.Resources.AppDef_1_0_0);
             Assert.NotNull(res);
             Assert.AreEqual(res.ResourceType, "ApplicationDefinition");
             Assert.AreEqual(res.ResourceVersion, new Version(1, 0, 0));

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/DrawingSourceTests.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/DrawingSourceTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/DrawingSourceTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -36,7 +36,7 @@
         [Test]
         public void DrawingSourceDeserializationWithFullContentModel()
         {
-            IResource res = ObjectFactory.DeserializeResourceXml(Properties.Resources.DrawingSource_1_0_0);
+            IResource res = ObjectFactory.DeserializeXml(Properties.Resources.DrawingSource_1_0_0);
             Assert.NotNull(res);
             Assert.AreEqual(res.ResourceType, "DrawingSource");
             Assert.AreEqual(res.ResourceVersion, new Version(1, 0, 0));

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/FeatureSourceTests.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/FeatureSourceTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/FeatureSourceTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -25,6 +25,7 @@
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
 using System;
 using System.Collections.Generic;
+using System.Collections.Specialized;
 using System.Linq;
 using System.Text;
 
@@ -36,12 +37,89 @@
         [Test]
         public void FeatureSourceDeserializationWithFullContentModel()
         {
-            IResource res = ObjectFactory.DeserializeResourceXml(Properties.Resources.FeatureSource_1_0_0);
+            IResource res = ObjectFactory.DeserializeXml(Properties.Resources.FeatureSource_1_0_0);
             Assert.NotNull(res);
             Assert.AreEqual(res.ResourceType, "FeatureSource");
             Assert.AreEqual(res.ResourceVersion, new Version(1, 0, 0));
             IFeatureSource fs = res as IFeatureSource;
             Assert.NotNull(fs);
         }
+
+        [Test]
+        public void TestFeatureSourceFileParameters()
+        {
+            var fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF");
+            Assert.IsTrue(fs.ConnectionString.Length == 0);
+
+            var connParams = new NameValueCollection();
+            connParams["File"] = "%MG_DATA_FILE_PATH%Foo.sdf";
+
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF", connParams);
+
+            Assert.IsTrue(fs.UsesEmbeddedDataFiles);
+            Assert.IsFalse(fs.UsesAliasedDataFiles);
+            Assert.AreEqual(fs.GetEmbeddedDataName(), "Foo.sdf");
+            Assert.Catch<InvalidOperationException>(() => fs.GetAliasedFileName());
+            Assert.Catch<InvalidOperationException>(() => fs.GetAliasName());
+
+            connParams.Clear();
+            connParams["File"] = "%MG_DATA_FILE_PATH%Bar.sdf";
+            connParams["ReadOnly"] = "TRUE";
+
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF", connParams);
+
+            Assert.IsTrue(fs.UsesEmbeddedDataFiles);
+            Assert.IsFalse(fs.UsesAliasedDataFiles);
+            Assert.AreEqual(fs.GetEmbeddedDataName(), "Bar.sdf");
+            Assert.Catch<InvalidOperationException>(() => fs.GetAliasedFileName());
+            Assert.Catch<InvalidOperationException>(() => fs.GetAliasName());
+
+            connParams.Clear();
+            connParams["DefaultFileLocation"] = "%MG_DATA_PATH_ALIAS[foobar]%";
+
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SHP", connParams);
+
+            Assert.IsTrue(fs.UsesAliasedDataFiles);
+            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
+            Assert.AreEqual(fs.GetAliasName(), "foobar");
+            Assert.IsEmpty(fs.GetAliasedFileName());
+            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
+
+            connParams.Clear();
+            connParams["DefaultFileLocation"] = "%MG_DATA_PATH_ALIAS[foobar]%Test.sdf";
+
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF", connParams);
+
+            Assert.IsTrue(fs.UsesAliasedDataFiles);
+            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
+            Assert.AreEqual(fs.GetAliasName(), "foobar");
+            Assert.AreEqual(fs.GetAliasedFileName(), "Test.sdf");
+            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
+
+            connParams.Clear();
+            connParams["DefaultFileLocation"] = "%MG_DATA_PATH_ALIAS[foobar]%Test.sdf";
+            connParams["ReadOnly"] = "TRUE";
+
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF", connParams);
+
+            Assert.IsTrue(fs.UsesAliasedDataFiles);
+            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
+            Assert.AreEqual(fs.GetAliasName(), "foobar");
+            Assert.AreEqual(fs.GetAliasedFileName(), "Test.sdf");
+            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
+
+            connParams.Clear();
+            connParams["Service"] = "(local)\\SQLEXPRESS";
+            connParams["DataStore"] = "TEST";
+
+            fs = ObjectFactory.CreateFeatureSource("OSGeo.SQLServerSpatial", connParams);
+
+            Assert.IsFalse(fs.UsesEmbeddedDataFiles);
+            Assert.IsFalse(fs.UsesAliasedDataFiles);
+
+            Assert.Catch<InvalidOperationException>(() => fs.GetAliasedFileName());
+            Assert.Catch<InvalidOperationException>(() => fs.GetAliasName());
+            Assert.Catch<InvalidOperationException>(() => fs.GetEmbeddedDataName());
+        }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/OSGeo.MapGuide.ObjectModel.Tests.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -57,6 +57,7 @@
       <DesignTime>True</DesignTime>
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
+    <Compile Include="ResourceTests.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ObjectFactoryTests.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ObjectFactoryTests.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ObjectFactoryTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -175,6 +175,14 @@
             Assert.AreEqual(0, user.User.Count);
         }
 
+        [Test]
+        public void CreateSecurityGroupTest()
+        {
+            var group = ObjectFactory.CreateSecurityGroup();
+            Assert.NotNull(group);
+            Assert.NotNull(group.Group);
+        }
+
         [Test()]
         public void CreateFeatureSourceExtensionTest()
         {
@@ -208,8 +216,9 @@
         [Test()]
         public void CreateEnvelopeTest()
         {
-            Assert.Throws<ArgumentException>(() => ObjectFactory.CreateEnvelope(2, -1, 1, 1));
-            Assert.Throws<ArgumentException>(() => ObjectFactory.CreateEnvelope(-1, 2, 1, 1));
+            Assert.Throws<ArgumentException>(() => ObjectFactory.CreateEnvelope(.1, -.1, -.1, .1));
+            Assert.Throws<ArgumentException>(() => ObjectFactory.CreateEnvelope(-.1, .1, .1, -.1));
+            Assert.Throws<ArgumentException>(() => ObjectFactory.CreateEnvelope(.1, .1, -.1, -.1));
             var env = ObjectFactory.CreateEnvelope(-1, -1, 1, 1);
             Assert.NotNull(env);
             Assert.AreEqual(-1, env.MinX);
@@ -333,6 +342,15 @@
         }
 
         [Test()]
+        public void CreateSymbolLibraryTest()
+        {
+            var lib = ObjectFactory.CreateSymbolLibrary();
+            Assert.NotNull(lib);
+            Assert.NotNull(lib.Symbol);
+            Assert.AreEqual(0, lib.Symbol.Count());
+        }
+
+        [Test()]
         public void CreateLoadProcedureTest()
         {
             foreach (LoadType lt in Enum.GetValues(typeof(LoadType)))

Added: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ResourceTests.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ResourceTests.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModel.Tests/ResourceTests.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -0,0 +1,485 @@
+#region Disclaimer / License
+
+// Copyright (C) 2014, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#endregion Disclaimer / License
+
+using Moq;
+using NUnit.Framework;
+using OSGeo.MapGuide.ObjectModels;
+using OSGeo.MapGuide.ObjectModels.LayerDefinition;
+using OSGeo.MapGuide.ObjectModels.LoadProcedure;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.ObjectModel.Tests
+{
+    [TestFixture]
+    public class ResourceTests
+    {
+        [Test]
+        public void TestCloning()
+        {
+            //Generated classes have built in Clone() methods. Verify they check out
+            var app = ObjectFactory.DeserializeEmbeddedFlexLayout(new Version(2, 2, 0));
+            var app2 = app.Clone();
+            Assert.AreNotSame(app, app2);
+
+            var fs = ObjectFactory.CreateFeatureSource("OSGeo.SDF");
+            var fs2 = fs.Clone();
+            Assert.AreNotSame(fs, fs2);
+
+            var ld = ObjectFactory.CreateDefaultLayer(LayerType.Vector, new Version(1, 0, 0));
+            var ld2 = ld.Clone();
+            Assert.AreNotSame(ld, ld2);
+
+            var md = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "TestMap");
+            var md2 = md.Clone();
+            Assert.AreNotSame(md, md2);
+
+            var wl = ObjectFactory.CreateWebLayout(new Version(1, 0, 0), "Library://Test.MapDefinition");
+            var wl2 = wl.Clone();
+            Assert.AreNotSame(wl, wl2);
+
+            var sl = ObjectFactory.CreateSymbolLibrary();
+            var sl2 = sl.Clone();
+            Assert.AreNotSame(sl, sl2);
+
+            var ssd = ObjectFactory.CreateSimpleSymbol(new Version(1, 0, 0), "Test", "Test Symbol");
+            var ssd2 = ssd.Clone();
+            Assert.AreNotSame(ssd, ssd2);
+
+            var csd = ObjectFactory.CreateCompoundSymbol(new Version(1, 0, 0), "Test", "Test Symbol");
+            var csd2 = csd.Clone();
+            Assert.AreNotSame(csd, csd2);
+
+            var pl = ObjectFactory.CreatePrintLayout();
+            var pl2 = pl.Clone();
+            Assert.AreNotSame(pl, pl2);
+        }
+
+        [Test]
+        public void TestValidResourceIdentifiers()
+        {
+            //Verify that only valid resource identifiers can be assigned to certain resource types.
+
+            IResource res = ObjectFactory.CreateFeatureSource("OSGeo.SDF");
+
+            #region Feature Source
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.FeatureSource";
+            }
+            catch (InvalidOperationException)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Feature Source
+
+            res = ObjectFactory.CreateDrawingSource();
+
+            #region Drawing Source
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.FeatureSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Drawing Source
+
+            res = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "Test Map");
+
+            #region Map Definition
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.MapDefinition";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Map Definition
+
+            res = ObjectFactory.CreateWebLayout(new Version(1, 0, 0), "Library://Test.MapDefinition");
+
+            #region Web Layout
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.WebLayout";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Web Layout
+
+            res = ObjectFactory.DeserializeEmbeddedFlexLayout(new Version(2, 2, 0));
+
+            #region Application Definition
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.ApplicationDefinition";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Application Definition
+
+            res = ObjectFactory.CreateSimpleSymbol(new Version(1, 0, 0), "Test", "Test Symbol");
+
+            #region Simple Symbol Definition
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.SymbolDefinition";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Simple Symbol Definition
+
+            res = ObjectFactory.CreateCompoundSymbol(new Version(1, 0, 0), "Test", "Test Symbol");
+
+            #region Compound Symbol Definition
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.SymbolDefinition";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Compound Symbol Definition
+
+            res = ObjectFactory.CreateLoadProcedure(LoadType.Sdf, null);
+
+            #region Load Procedure
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.LoadProcedure";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Load Procedure
+
+            res = ObjectFactory.CreateLoadProcedure(LoadType.Shp, null);
+
+            #region Load Procedure
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.LoadProcedure";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Load Procedure
+
+            res = ObjectFactory.CreatePrintLayout();
+
+            #region Print Layout
+
+            try
+            {
+                res.ResourceID = "dklgjlahekjedjfd";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.DrawingSource";
+                Assert.Fail("Should've thrown exception on invalid resource id");
+            }
+            catch (InvalidOperationException) { }
+
+            try
+            {
+                res.ResourceID = "Library://UnitTests/Test.PrintLayout";
+            }
+            catch (Exception)
+            {
+                Assert.Fail("Resource ID should've checked out");
+            }
+
+            #endregion Print Layout
+        }
+
+        [Test]
+        public void TestResourceTypeDescriptor()
+        {
+            var rtd = new ResourceTypeDescriptor(ResourceTypes.ApplicationDefinition.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "ApplicationDefinition-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.DrawingSource.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "DrawingSource-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.FeatureSource.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "FeatureSource-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "LayerDefinition-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.LayerDefinition.ToString(), "1.1.0");
+            Assert.AreEqual(rtd.XsdName, "LayerDefinition-1.1.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.LoadProcedure.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "LoadProcedure-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.MapDefinition.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "MapDefinition-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.DrawingSource.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "DrawingSource-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.PrintLayout.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "PrintLayout-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.SymbolDefinition.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "SymbolDefinition-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.SymbolLibrary.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "SymbolLibrary-1.0.0.xsd");
+
+            rtd = new ResourceTypeDescriptor(ResourceTypes.WebLayout.ToString(), "1.0.0");
+            Assert.AreEqual(rtd.XsdName, "WebLayout-1.0.0.xsd");
+        }
+    }
+}

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Check.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Check.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Check.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -30,7 +30,7 @@
     /// <summary>
     /// Pre-condition verifier utility class
     /// </summary>
-    internal static class Check
+    public static class Check
     {
         /// <summary>
         /// Check that condition evaluates to true

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/ObjectFactory.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -21,6 +21,7 @@
 #endregion Disclaimer / License
 
 using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
+using OSGeo.MapGuide.ObjectModels.ApplicationDefinition.v1_0_0;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.DrawingSource;
 using OSGeo.MapGuide.ObjectModels.FeatureSource;
@@ -29,6 +30,7 @@
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using OSGeo.MapGuide.ObjectModels.PrintLayout;
 using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
+using OSGeo.MapGuide.ObjectModels.SymbolLibrary;
 using OSGeo.MapGuide.ObjectModels.WatermarkDefinition;
 using OSGeo.MapGuide.ObjectModels.WebLayout;
 using System;
@@ -744,7 +746,384 @@
             return wl;
         }
 
+        public static IApplicationDefinition DeserializeEmbeddedFlexLayout(Version siteVersion)
+        {
+            Check.ArgumentNotNull(siteVersion, "siteVersion"); //NOXLATE
+            if (siteVersion >= VER_240)
+                return (IApplicationDefinition)ResourceTypeRegistry.Deserialize(Strings.BaseTemplate240_ApplicationDefinition);
+            else
+                return (IApplicationDefinition)ResourceTypeRegistry.Deserialize(Strings.BaseTemplate_ApplicationDefinition);
+        }
+
+        private static readonly string[] parameterizedWidgets =
+        {
+            KnownWidgetNames.CTRLClick,
+            KnownWidgetNames.ZoomOnClick,
+            KnownWidgetNames.ExtentHistory,
+            KnownWidgetNames.Buffer,
+            KnownWidgetNames.Measure,
+            KnownWidgetNames.InvokeScript,
+            KnownWidgetNames.InvokeURL,
+            KnownWidgetNames.Search,
+            KnownWidgetNames.CursorPosition,
+            KnownWidgetNames.SelectionInfo,
+            KnownWidgetNames.ViewSize
+        };
+
+        private static IUIWidget CreateVerticalWidget(IUIWidget widget)
+        {
+            var vert = widget.Clone();
+            vert.Name = "vert" + widget.Name; //NOXLATE
+            vert.Label = string.Empty;
+            return vert;
+        }
+
+        private static Version VER_240 = new Version(2, 4);
+
         /// <summary>
+        /// Creates a fusion flexible layout
+        /// </summary>
+        /// <param name="siteVersion">The site version</param>
+        /// <param name="templates">The set of available templates</param>
+        /// <param name="widgets">The set of available widgets</param>
+        /// <param name="containers">The set of available containers</param>
+        /// <param name="templateName">The name of the template. See <see cref="FusionTemplateNames"/> for the common pre-defined names</param>
+        /// <returns></returns>
+        public static IApplicationDefinition CreateFlexibleLayout(Version siteVersion,
+                                                                  IApplicationDefinitionTemplateInfoSet templates,
+                                                                  IApplicationDefinitionWidgetInfoSet widgets,
+                                                                  IApplicationDefinitionContainerInfoSet containers,
+                                                                  string templateName)
+        {
+            Check.ArgumentNotNull(templates, "templates"); //NOXLATE
+            Check.ArgumentNotNull(widgets, "widgets"); //NOXLATE
+            Check.ArgumentNotNull(containers, "containers"); //NOXLATE
+            Check.ArgumentNotNull(templateName, "templateName"); //NOXLATE
+
+            IApplicationDefinition appDef = new ApplicationDefinitionType()
+            {
+                MapSet = new System.ComponentModel.BindingList<MapGroupType>(),
+                WidgetSet = new System.ComponentModel.BindingList<WidgetSetType>()
+            };
+
+            //Find matching template. If it's a known template we should be able to
+            //build it programatically, otherwise return a deserialized copy from our
+            //embedded resource
+            var tpl = templates.FindTemplate(templateName);
+            if (tpl != null)
+            {
+                appDef.TemplateUrl = tpl.LocationUrl;
+                appDef.Title = tpl.Name;
+            }
+            else
+            {
+                //NOTE: Depending on MapGuide Server version, this document may be
+                //invalid (eg. References to widgets not available in that version)
+                return DeserializeEmbeddedFlexLayout(siteVersion);
+            }
+
+            //Toolbars, every template has them
+            var toolbar = appDef.CreateContainer("Toolbar", containers.FindContainer("Toolbar")); //NOXLATE
+            var secToolbar = appDef.CreateContainer("ToolbarSecondary", containers.FindContainer("Toolbar")); //NOXLATE
+            var vertToolbar = appDef.CreateContainer("ToolbarVertical", containers.FindContainer("Toolbar")); //NOXLATE
+
+            //Context menus, every template has them
+            var mapContextMenu = appDef.CreateContainer("MapContextMenu", containers.FindContainer("ContextMenu")); //NOXLATE
+            var taskPaneMenu = appDef.CreateContainer("TaskMenu", containers.FindContainer("ContextMenu")); //NOXLATE
+
+            //Menu
+            var menu = appDef.CreateContainer("FileMenu", containers.FindContainer("Toolbar")); //NOXLATE
+
+            //Status bar
+            var statusbar = appDef.CreateContainer("Statusbar", containers.FindContainer("Splitterbar")); //NOXLATE
+
+            string mapId = "MainMap"; //NOXLATE
+            //Set default map group
+            appDef.AddMapGroup(mapId, true, string.Empty);
+
+            //Create default widget set
+            var widgetSet = appDef.CreateWidgetSet(appDef.CreateMapWidget(mapId, mapContextMenu.Name));
+            appDef.AddWidgetSet(widgetSet);
+
+            //Add all known non-parameterized widgets to this widget set
+            foreach (var wgt in widgets.WidgetInfo)
+            {
+                if (Array.IndexOf(parameterizedWidgets, wgt.Type) < 0)
+                {
+                    var widget = appDef.CreateWidget(wgt.Type, wgt);
+                    widgetSet.AddWidget(widget);
+                }
+            }
+
+            //Add some parameterized ones
+
+            //Zoom In
+            var zoomIn = (IUIWidget)appDef.CreateWidget("ZoomIn", widgets.FindWidget(KnownWidgetNames.ZoomOnClick)); //NOXLATE
+            zoomIn.SetValue("Factor", "2"); //NOXLATE
+            zoomIn.StatusText = zoomIn.Tooltip = Strings.ADF_Widget_ZoomIn_Desc;
+            zoomIn.Label = Strings.ADF_Widget_ZoomIn_Label;
+            zoomIn.ImageUrl = "images/icons.png"; //NOXLATE
+            zoomIn.ImageClass = "zoom-in-fixed"; //NOXLATE
+            var vZoomIn = CreateVerticalWidget(zoomIn);
+
+            //Zoom Out
+            var zoomOut = (IUIWidget)appDef.CreateWidget("ZoomOut", widgets.FindWidget(KnownWidgetNames.ZoomOnClick)); //NOXLATE
+            zoomOut.SetValue("Factor", "0.5"); //NOXLATE
+            zoomOut.StatusText = zoomOut.Tooltip = Strings.ADF_Widget_ZoomOut_Desc;
+            zoomOut.Label = Strings.ADF_Widget_ZoomOut_Label;
+            zoomOut.ImageUrl = "images/icons.png"; //NOXLATE
+            zoomOut.ImageClass = "zoom-out-fixed"; //NOXLATE
+            var vZoomOut = CreateVerticalWidget(zoomOut);
+
+            //Previous View
+            var prevView = (IUIWidget)appDef.CreateWidget("PreviousView", widgets.FindWidget(KnownWidgetNames.ExtentHistory)); //NOXLATE
+            prevView.SetValue("Direction", "previous"); //NOXLATE
+            prevView.StatusText = prevView.Tooltip = Strings.ADF_Widget_PreviousView_Desc;
+            prevView.Label = Strings.ADF_Widget_PreviousView_Label;
+            prevView.ImageUrl = "images/icons.png"; //NOXLATE
+            prevView.ImageClass = "view-back"; //NOXLATE
+            var vPrevView = CreateVerticalWidget(prevView);
+
+            //Next View
+            var nextView = (IUIWidget)appDef.CreateWidget("NextView", widgets.FindWidget(KnownWidgetNames.ExtentHistory)); //NOXLATE
+            nextView.SetValue("Direction", "next"); //NOXLATE
+            nextView.StatusText = nextView.Tooltip = Strings.ADF_Widget_NextView_Desc;
+            nextView.Label = Strings.ADF_Widget_NextView_Label;
+            nextView.ImageUrl = "images/icons.png"; //NOXLATE
+            nextView.ImageClass = "view-forward"; //NOXLATE
+            var vNextView = CreateVerticalWidget(nextView);
+
+            //Buffer
+            var buffer = (IUIWidget)appDef.CreateWidget("tbBuffer", widgets.FindWidget(KnownWidgetNames.BufferPanel)); //NOXLATE
+            //buffer.SetValue("Target", "TaskPane"); //NOXLATE
+            buffer.StatusText = buffer.Tooltip = Strings.ADF_Widget_Buffer_Desc;
+            buffer.Tooltip = Strings.ADF_Widget_Buffer_Label;
+
+            //Measure
+            var measure = (IUIWidget)appDef.CreateWidget("Measure", widgets.FindWidget(KnownWidgetNames.Measure)); //NOXLATE
+            var measureParams = new NameValueCollection();
+            measureParams["Type"] = "both"; //NOXLATE
+            measureParams["MeasureTooltipContainer"] = "MeasureResult"; //NOXLATE
+            measureParams["MeasureTooltipType"] = "dynamic"; //NOXLATE
+            measureParams["DistancePrecision"] = "0"; //NOXLATE
+            measureParams["AreaPrecision"] = "0"; //NOXLATE
+            measureParams["Units"] = "meters"; //NOXLATE
+            measureParams["Target"] = "TaskPane"; //NOXLATE
+            measure.SetAllValues(measureParams);
+            measure.StatusText = buffer.Tooltip = Strings.ADF_Widget_Measure_Desc;
+            measure.Tooltip = Strings.ADF_Widget_Measure_Label;
+
+            //Show Overview
+            var showOverview = (IUIWidget)appDef.CreateWidget("showOverview", widgets.FindWidget(KnownWidgetNames.InvokeScript)); //NOXLATE
+            showOverview.Label = "Show Overview"; //NOXLATE
+            showOverview.SetValue("Script", "showOverviewMap()"); //NOXLATE
+
+            //Show Task Pane
+            var showTaskPane = (IUIWidget)appDef.CreateWidget("showTaskPane", widgets.FindWidget(KnownWidgetNames.InvokeScript)); //NOXLATE
+            showTaskPane.Label = "Show Task Pane"; //NOXLATE
+            showTaskPane.SetValue("Script", "showTaskPane()"); //NOXLATE
+
+            //Show Legend
+            var showLegend = (IUIWidget)appDef.CreateWidget("showLegend", widgets.FindWidget(KnownWidgetNames.InvokeScript)); //NOXLATE
+            showLegend.Label = "Show Legend"; //NOXLATE
+            showLegend.SetValue("Script", "showLegend()"); //NOXLATE
+
+            //Show Selection Panel
+            var showSelectionPanel = (IUIWidget)appDef.CreateWidget("showSelectionPanel", widgets.FindWidget(KnownWidgetNames.InvokeScript)); //NOXLATE
+            showSelectionPanel.Label = "Show Selection Panel"; //NOXLATE
+            showSelectionPanel.SetValue("Script", "showSelectionPanel()"); //NOXLATE
+
+            //Coordinate Tracker
+            var coordTracker = appDef.CreateWidget("statusCoordinates", widgets.FindWidget(KnownWidgetNames.CursorPosition)); //NOXLATE
+            coordTracker.SetValue("Template", "X: {x} {units}, Y: {y} {units}"); //NOXLATE
+            coordTracker.SetValue("Precision", "4"); //NOXLATE
+            coordTracker.SetValue("EmptyText", "&nbsp;"); //NOXLATE
+
+            //Selection Info
+            var selInfo = appDef.CreateWidget("statusSelection", widgets.FindWidget(KnownWidgetNames.SelectionInfo)); //NOXLATE
+            selInfo.SetValue("EmptyText", "No selection"); //NOXLATE
+
+            //View Size
+            var viewSize = appDef.CreateWidget("statusViewSize", widgets.FindWidget(KnownWidgetNames.ViewSize)); //NOXLATE
+            viewSize.SetValue("Template", "{w} x {h} ({units})"); //NOXLATE
+            viewSize.SetValue("Precision", "2"); //NOXLATE
+
+            widgetSet.AddWidget(zoomIn);
+            widgetSet.AddWidget(zoomOut);
+            widgetSet.AddWidget(prevView);
+            widgetSet.AddWidget(nextView);
+            widgetSet.AddWidget(buffer);
+            widgetSet.AddWidget(measure);
+            widgetSet.AddWidget(showOverview);
+            widgetSet.AddWidget(showTaskPane);
+            widgetSet.AddWidget(showLegend);
+            widgetSet.AddWidget(showSelectionPanel);
+            widgetSet.AddWidget(coordTracker);
+            widgetSet.AddWidget(selInfo);
+            widgetSet.AddWidget(viewSize);
+
+            widgetSet.AddWidget(vZoomIn);
+            widgetSet.AddWidget(vZoomOut);
+            widgetSet.AddWidget(vPrevView);
+            widgetSet.AddWidget(vNextView);
+
+            //Now here's where things may diverge completely between templates
+            //So let's try for something that is somewhat consistent
+
+            //Init primary toolbar
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Print));
+
+            //2.2 specific stuff
+            if (siteVersion >= new Version(2, 2))
+            {
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.QuickPlot));
+            }
+
+            toolbar.AddItem(appDef.CreateSeparator());
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.RefreshMap));
+            //2.4 requires maptips to be a toggle widget
+            if (siteVersion >= VER_240)
+            {
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Maptip));
+            }
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.SelectRadius));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.SelectPolygon));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ClearSelection));
+
+            toolbar.AddItem(appDef.CreateWidgetReference(buffer.Name));
+            toolbar.AddItem(appDef.CreateWidgetReference(measure.Name));
+
+            //2.2 specific stuff
+            if (siteVersion >= new Version(2, 2))
+            {
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.FeatureInfo));
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Query));
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Theme));
+                toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Redline));
+            }
+
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ViewOptions));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.About));
+            toolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Help));
+
+            //Init secondary toolbar
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Select));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Pan));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Zoom));
+            secToolbar.AddItem(appDef.CreateWidgetReference(zoomIn.Name));
+            secToolbar.AddItem(appDef.CreateWidgetReference(zoomOut.Name));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.InitialMapView));
+            secToolbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ZoomToSelection));
+            secToolbar.AddItem(appDef.CreateWidgetReference(prevView.Name));
+            secToolbar.AddItem(appDef.CreateWidgetReference(nextView.Name));
+
+            //Init vertical toolbar
+            widgetSet.AddWidget(CreateVerticalWidget((IUIWidget)appDef.CreateWidget(KnownWidgetNames.Select, widgets.FindWidget(KnownWidgetNames.Select))));
+            widgetSet.AddWidget(CreateVerticalWidget((IUIWidget)appDef.CreateWidget(KnownWidgetNames.Pan, widgets.FindWidget(KnownWidgetNames.Pan))));
+            widgetSet.AddWidget(CreateVerticalWidget((IUIWidget)appDef.CreateWidget(KnownWidgetNames.Zoom, widgets.FindWidget(KnownWidgetNames.Zoom))));
+            widgetSet.AddWidget(CreateVerticalWidget((IUIWidget)appDef.CreateWidget(KnownWidgetNames.InitialMapView, widgets.FindWidget(KnownWidgetNames.InitialMapView))));
+            widgetSet.AddWidget(CreateVerticalWidget((IUIWidget)appDef.CreateWidget(KnownWidgetNames.ZoomToSelection, widgets.FindWidget(KnownWidgetNames.ZoomToSelection))));
+
+            vertToolbar.AddItem(appDef.CreateWidgetReference("vert" + KnownWidgetNames.Select)); //NOXLATE
+            vertToolbar.AddItem(appDef.CreateWidgetReference("vert" + KnownWidgetNames.Pan)); //NOXLATE
+            vertToolbar.AddItem(appDef.CreateWidgetReference("vert" + KnownWidgetNames.Zoom)); //NOXLATE
+            vertToolbar.AddItem(appDef.CreateWidgetReference(vZoomIn.Name));
+            vertToolbar.AddItem(appDef.CreateWidgetReference(vZoomOut.Name));
+            vertToolbar.AddItem(appDef.CreateWidgetReference("vert" + KnownWidgetNames.InitialMapView)); //NOXLATE
+            vertToolbar.AddItem(appDef.CreateWidgetReference("vert" + KnownWidgetNames.ZoomToSelection)); //NOXLATE
+            vertToolbar.AddItem(appDef.CreateWidgetReference(vPrevView.Name));
+            vertToolbar.AddItem(appDef.CreateWidgetReference(vNextView.Name));
+
+            //Main menu
+            menu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.MapMenu));
+
+            //2.2 specific stuff
+            if (siteVersion >= new Version(2, 2))
+            {
+                menu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.BasemapSwitcher));
+            }
+            var viewMenu = appDef.CreateFlyout(Strings.ADF_Flyout_View);
+            viewMenu.AddItem(appDef.CreateWidgetReference(showOverview.Name));
+            viewMenu.AddItem(appDef.CreateWidgetReference(showTaskPane.Name));
+            viewMenu.AddItem(appDef.CreateWidgetReference(showLegend.Name));
+            viewMenu.AddItem(appDef.CreateWidgetReference(showSelectionPanel.Name));
+            menu.AddItem(viewMenu);
+
+            //status bar
+            statusbar.AddItem(appDef.CreateWidgetReference(coordTracker.Name));
+            statusbar.AddItem(appDef.CreateWidgetReference(selInfo.Name));
+            statusbar.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.EditableScale));
+            statusbar.AddItem(appDef.CreateWidgetReference(viewSize.Name));
+
+            //Map Context Menu
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.RefreshMap));
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Pan));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Zoom));
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(zoomIn.Name));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(zoomOut.Name));
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            var zoomMenu = appDef.CreateFlyout(Strings.ADF_Flyout_Zoom);
+
+            mapContextMenu.AddItem(zoomMenu);
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Select));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ClearSelection));
+            var selectMoreMenu = appDef.CreateFlyout(Strings.ADF_Flyout_SelectMore);
+
+            mapContextMenu.AddItem(selectMoreMenu);
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(buffer.Name));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(measure.Name));
+
+            if (siteVersion >= new Version(2, 2))
+            {
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.FeatureInfo));
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Query));
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Theme));
+                mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Redline));
+            }
+
+            mapContextMenu.AddItem(appDef.CreateSeparator());
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.ViewOptions));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Help));
+            mapContextMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.About));
+
+            //Tasks Context Menu
+            taskPaneMenu.AddItem(appDef.CreateWidgetReference(measure.Name));
+            taskPaneMenu.AddItem(appDef.CreateWidgetReference(buffer.Name));
+
+            if (siteVersion >= new Version(2, 2))
+            {
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.FeatureInfo));
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Query));
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Theme));
+                taskPaneMenu.AddItem(appDef.CreateWidgetReference(KnownWidgetNames.Redline));
+            }
+
+            //Now add them all to the main widget set
+            widgetSet.AddContainer(toolbar);
+            widgetSet.AddContainer(secToolbar);
+            widgetSet.AddContainer(vertToolbar);
+            widgetSet.AddContainer(menu);
+            widgetSet.AddContainer(statusbar);
+            widgetSet.AddContainer(mapContextMenu);
+            widgetSet.AddContainer(taskPaneMenu);
+
+            //Set positioning
+            toolbar.Position = "top"; //NOXLATE
+            secToolbar.Position = "top"; //NOXLATE
+            menu.Position = "top"; //NOXLATE
+            statusbar.Position = "bottom"; //NOXLATE
+            mapContextMenu.Position = "top"; //NOXLATE
+            taskPaneMenu.Position = "top"; //NOXLATE
+            vertToolbar.Position = "left"; //NOXLATE
+
+            return appDef;
+        }
+
+        /// <summary>
         /// Creates a simple label symbol
         /// </summary>
         /// <param name="version"></param>
@@ -1041,6 +1420,18 @@
         }
 
         /// <summary>
+        /// Creates a new symbol library
+        /// </summary>
+        /// <returns></returns>
+        public static ISymbolLibrary CreateSymbolLibrary()
+        {
+            return new OSGeo.MapGuide.ObjectModels.SymbolLibrary.v1_0_0.SymbolLibraryType()
+            {
+                Symbol = new System.ComponentModel.BindingList<SymbolLibrary.v1_0_0.SymbolType>()
+            };
+        }
+
+        /// <summary>
         /// Creates a 2d point
         /// </summary>
         /// <param name="x"></param>
@@ -1068,7 +1459,7 @@
         /// </summary>
         /// <param name="xml">The XML.</param>
         /// <returns></returns>
-        public static IResource DeserializeResourceXml(string xml)
+        public static IResource DeserializeXml(string xml)
         {
             return ResourceTypeRegistry.Deserialize(xml);
         }
@@ -1078,7 +1469,7 @@
         /// </summary>
         /// <param name="res">The resource.</param>
         /// <returns></returns>
-        public static Stream SerializeResource(IResource resource)
+        public static Stream Serialize(IResource resource)
         {
             return ResourceTypeRegistry.Serialize(resource);
         }
@@ -1088,7 +1479,7 @@
         /// </summary>
         /// <param name="res"></param>
         /// <returns></returns>
-        public static string SerializeResourceAsString(IResource resource)
+        public static string SerializeAsString(IResource resource)
         {
             return ResourceTypeRegistry.SerializeAsString(resource);
         }
@@ -1099,7 +1490,7 @@
         /// <param name="resourceType">Type of the resource.</param>
         /// <param name="stream">The stream.</param>
         /// <returns></returns>
-        public static IResource DeserializeResourceStream(string resourceType, Stream stream)
+        public static IResource Deserialize(string resourceType, Stream stream)
         {
             return ResourceTypeRegistry.Deserialize(resourceType, stream);
         }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Strings.Designer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Strings.Designer.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Strings.Designer.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -61,6 +61,179 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Select More.
+        /// </summary>
+        internal static string ADF_Flyout_SelectMore {
+            get {
+                return ResourceManager.GetString("ADF_Flyout_SelectMore", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to View.
+        /// </summary>
+        internal static string ADF_Flyout_View {
+            get {
+                return ResourceManager.GetString("ADF_Flyout_View", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom.
+        /// </summary>
+        internal static string ADF_Flyout_Zoom {
+            get {
+                return ResourceManager.GetString("ADF_Flyout_Zoom", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Create buffers around the selected features.
+        /// </summary>
+        internal static string ADF_Widget_Buffer_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Buffer_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Buffer.
+        /// </summary>
+        internal static string ADF_Widget_Buffer_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Buffer_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Measure distances and areas on the map.
+        /// </summary>
+        internal static string ADF_Widget_Measure_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Measure_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Measure.
+        /// </summary>
+        internal static string ADF_Widget_Measure_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_Measure_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Go to next view.
+        /// </summary>
+        internal static string ADF_Widget_NextView_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_NextView_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Next.
+        /// </summary>
+        internal static string ADF_Widget_NextView_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_NextView_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Go to previous view.
+        /// </summary>
+        internal static string ADF_Widget_PreviousView_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_PreviousView_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Previous.
+        /// </summary>
+        internal static string ADF_Widget_PreviousView_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_PreviousView_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom in by a preset increment.
+        /// </summary>
+        internal static string ADF_Widget_ZoomIn_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomIn_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom In.
+        /// </summary>
+        internal static string ADF_Widget_ZoomIn_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomIn_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom out by a preset increment.
+        /// </summary>
+        internal static string ADF_Widget_ZoomOut_Desc {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomOut_Desc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom Out.
+        /// </summary>
+        internal static string ADF_Widget_ZoomOut_Label {
+            get {
+                return ResourceManager.GetString("ADF_Widget_ZoomOut_Label", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <?xml version="1.0"?>
+        ///<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
+        ///  <TemplateUrl>fusion/templates/mapguide/slate/index.html</TemplateUrl>
+        ///  <MapSet>
+        ///    <MapGroup id="MgMainMapId">
+        ///      <Map>
+        ///        <Type>MapGuide</Type>
+        ///        <SingleTile>true</SingleTile>
+        ///        <Extension>
+        ///          <ResourceId />
+        ///          <SelectionAsOverlay>true</SelectionAsOverla [rest of string was truncated]";.
+        /// </summary>
+        internal static string BaseTemplate_ApplicationDefinition {
+            get {
+                return ResourceManager.GetString("BaseTemplate_ApplicationDefinition", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <?xml version="1.0"?>
+        ///<ApplicationDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="ApplicationDefinition-1.0.0.xsd">
+        ///  <TemplateUrl>fusion/templates/mapguide/slate/index.html</TemplateUrl>
+        ///  <MapSet>
+        ///    <MapGroup id="MgMainMapId">
+        ///      <Map>
+        ///        <Type>MapGuide</Type>
+        ///        <SingleTile>true</SingleTile>
+        ///        <Extension>
+        ///          <ResourceId />
+        ///          <SelectionAsOverlay>true</SelectionAsOverla [rest of string was truncated]";.
+        /// </summary>
+        internal static string BaseTemplate240_ApplicationDefinition {
+            get {
+                return ResourceManager.GetString("BaseTemplate240_ApplicationDefinition", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Could not create load procedure of type: .
         /// </summary>
         internal static string CannotCreateLoadProcedureSubType {

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

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Utility.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Utility.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/Utility.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -36,7 +36,7 @@
     /// <summary>
     /// Utility methods
     /// </summary>
-    public static class Utils
+    internal static class Utils
     {
         /// <summary>
         /// Parses a color in HTML notation (ea. #ffaabbff)

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v1_1_0/WebLayoutImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v1_1_0/WebLayoutImpl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v1_1_0/WebLayoutImpl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -87,7 +87,7 @@
         public CommandType[] Commands { get; set; }
     }
 
-    partial class WebLayoutType : IWebLayout, ICommandSet
+    partial class WebLayoutType : IWebLayout2, ICommandSet
     {
         internal WebLayoutType()
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_4_0/WebLayoutImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_4_0/WebLayoutImpl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_4_0/WebLayoutImpl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -88,7 +88,7 @@
         public CommandType[] Commands { get; set; }
     }
 
-    partial class WebLayoutType : IWebLayout, ICommandSet
+    partial class WebLayoutType : IWebLayout2, ICommandSet
     {
         internal WebLayoutType()
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_6_0/WebLayoutImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_6_0/WebLayoutImpl.cs	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ObjectModels/WebLayout/v2_6_0/WebLayoutImpl.cs	2014-12-27 15:14:41 UTC (rev 8468)
@@ -89,7 +89,7 @@
         public CommandType[] Commands { get; set; }
     }
 
-    partial class WebLayoutType : IWebLayout, ICommandSet
+    partial class WebLayoutType : IWebLayout3, ICommandSet
     {
         internal WebLayoutType()
         {

Modified: trunk/Tools/Maestro/RtMapInspector/RtMapInspector.csproj
===================================================================
--- trunk/Tools/Maestro/RtMapInspector/RtMapInspector.csproj	2014-12-27 09:57:30 UTC (rev 8467)
+++ trunk/Tools/Maestro/RtMapInspector/RtMapInspector.csproj	2014-12-27 15:14:41 UTC (rev 8468)
@@ -112,6 +112,10 @@
       <Project>{80FA3158-8B5F-48D1-A393-0378AFE48A7E}</Project>
       <Name>OSGeo.MapGuide.MaestroAPI</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OSGeo.MapGuide.ObjectModels\OSGeo.MapGuide.ObjectModels.csproj">
+      <Project>{48c5eb23-45ae-4c4c-8fab-635428ae8ca1}</Project>
+      <Name>OSGeo.MapGuide.ObjectModels</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">



More information about the mapguide-commits mailing list