[mapguide-commits] r5722 - in trunk/Tools/Maestro: Maestro.AddIn.ExtendedObjectModels/Templates Maestro.Base/Commands Maestro.Base/Editor Maestro.Base/Templates Maestro.Base/UI Maestro.Editors Maestro.Editors/LayerDefinition/Vector Maestro.Editors/LoadProcedure OSGeo.MapGuide.MaestroAPI/Commands OSGeo.MapGuide.MaestroAPI/ObjectModels OSGeo.MapGuide.MaestroAPI.Http

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue Apr 26 09:59:16 EDT 2011


Author: jng
Date: 2011-04-26 06:59:16 -0700 (Tue, 26 Apr 2011)
New Revision: 5722

Modified:
   trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/NewItemCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
   trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadProcedureEditorCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadTargetCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/SdfTransformationCtrl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs
Log:
This submission contains:
 - #1670: Set default folder for new load procedures to folder where New Resource command was invoked from
 - #1671: Make new resources default to dirty state
 - Add a new MarkDirty() API in IEditorService to force dirty state
 - Fix NullReferenceException when adding a spatial context override on a fresh feature source
 - Force dirty state when running "Load Resources" on the Load Procedure Editor as execution actually makes changes to the Load Procedure object being passed to it.
 - Fix SiteExplorer.RefreshModel() to check for non-existent resource ids. If the resource id is non-existent, we walk back up the parent hierarchy until we find a folder resource id that exists and refresh the model from that point.


Modified: trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.AddIn.ExtendedObjectModels/Templates/SQLiteLoadProcedureItemTemplate.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -59,7 +59,14 @@
                 dlg.Filter = Properties.Resources.Filter_Sqlite_Files;
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    return ObjectFactory.CreateLoadProcedure(conn, LoadType.Sqlite, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sqlite, dlg.FileNames);
+                    if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
+                    {
+                        proc.SubType.RootPath = startPoint;
+                        proc.SubType.SpatialDataSourcesPath = startPoint;
+                        proc.SubType.LayersPath = startPoint;
+                    }
+                    return proc;
                 }
                 return null;
             }

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/NewItemCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/NewItemCommand.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/NewItemCommand.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -62,7 +62,10 @@
 
                     var ed = orm.Open(res.ResourceID, conn, false, exp);
                     if (!string.IsNullOrEmpty(startPoint))
+                    {
                         ed.EditorService.SuggestedSaveFolder = startPoint;
+                        ed.EditorService.MarkDirty();
+                    }
                 }
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/ResourceEditorService.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -90,8 +90,7 @@
 
         void OnResourcePropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
         {
-            this.IsDirty = true;
-            OnDirtyStateChanged();
+            MarkDirty();
         }
 
         void OnDirtyStateChanged()
@@ -107,6 +106,12 @@
             private set;
         }
 
+        public void MarkDirty()
+        {
+            this.IsDirty = true;
+            OnDirtyStateChanged();
+        }
+
         public bool IsNew
         {
             get;

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/DwfLoadProcedureItemTemplate.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -49,7 +49,14 @@
                 dlg.Filter = Properties.Resources.Filter_Dwf_Files;
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    return ObjectFactory.CreateLoadProcedure(conn, LoadType.Dwf, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Dwf, dlg.FileNames);
+                    if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
+                    {
+                        proc.SubType.RootPath = startPoint;
+                        proc.SubType.SpatialDataSourcesPath = startPoint;
+                        proc.SubType.LayersPath = startPoint;
+                    }
+                    return proc;
                 }
                 return null;
             }

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/SdfLoadProcedureItemTemplate.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -49,7 +49,14 @@
                 dlg.Filter = Properties.Resources.Filter_Sdf_Files;
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    return ObjectFactory.CreateLoadProcedure(conn, LoadType.Sdf, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sdf, dlg.FileNames);
+                    if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
+                    {
+                        proc.SubType.RootPath = startPoint;
+                        proc.SubType.SpatialDataSourcesPath = startPoint;
+                        proc.SubType.LayersPath = startPoint;
+                    }
+                    return proc;
                 }
                 return null;
             }

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/ShpLoadProcedureItemTemplate.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -49,7 +49,14 @@
                 dlg.Filter = Properties.Resources.Filter_Shp_Files;
                 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    return ObjectFactory.CreateLoadProcedure(conn, LoadType.Shp, dlg.FileNames);
+                    var proc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Shp, dlg.FileNames);
+                    if (!string.IsNullOrEmpty(startPoint) && ResourceIdentifier.IsFolderResource(startPoint))
+                    {
+                        proc.SubType.RootPath = startPoint;
+                        proc.SubType.SpatialDataSourcesPath = startPoint;
+                        proc.SubType.LayersPath = startPoint;
+                    }
+                    return proc;
                 }
             }
             return null;

Modified: trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -119,11 +119,17 @@
                 var rid = new ResourceIdentifier(resId);
                 if (!rid.IsFolder)
                     resId = rid.ParentFolder;
-                
+
                 //If this node is not initially expanded, we get NRE on refresh
                 ExpandNode(resId);
 
                 var path = _model.GetPathFromResourceId(resId);
+                while (path == null)
+                {
+                    resId = ResourceIdentifier.GetParentFolder(resId);
+                    path = _model.GetPathFromResourceId(resId);
+                }
+
                 var node = trvResources.FindNode(path, true);
                 if (node != null)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Editors/IEditorService.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -172,6 +172,11 @@
         bool IsDirty { get; }
 
         /// <summary>
+        /// Forces the edited resource to be marked as dirty
+        /// </summary>
+        void MarkDirty();
+
+        /// <summary>
         /// Raised when the edited resource has changed
         /// </summary>
         event EventHandler DirtyStateChanged;

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Vector/VectorLayerSettingsSectionCtrl.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -73,6 +73,9 @@
 
         protected override void OnLoad(EventArgs e)
         {
+            if (this.DesignMode)
+                return;
+
             if (_cachedDesc == null)
                 _cachedDesc = _edsvc.FeatureService.DescribeFeatureSource(txtFeatureSource.Text);
 

Modified: trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadProcedureEditorCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadProcedureEditorCtrl.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadProcedureEditorCtrl.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -122,6 +122,11 @@
                 var result = pdlg.RunOperationAsync(this.ParentForm, worker, _ed, _lp);
                 MessageBox.Show(Properties.Resources.OperationCompleted);
                 _ed.RequestRefresh(_lp.SubType.RootPath);
+
+                //Load procedure may have modified this resource as part of executioin
+                _ed.SyncSessionCopy();
+                //HACK: Force dirty state as successful execution writes some extra XML content to the resource
+                _ed.MarkDirty();
             }
             catch (CancelException)
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadTargetCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadTargetCtrl.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/LoadTargetCtrl.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -39,24 +39,42 @@
         }
 
         private IEditorService _service;
+        private ILoadProcedure _loadProc;
+        private IBaseLoadProcedure _fProc;
 
         public override void Bind(IEditorService service)
         {
             service.RegisterCustomNotifier(this);
 
             _service = service;
-            var lp = _service.GetEditedResource() as ILoadProcedure;
-            var fproc = lp.SubType;
-            
-            TextBoxBinder.BindText(txtTargetRoot, fproc, "RootPath");
-            CheckBoxBinder.BindChecked(chkCreateFeatureSources, fproc, "GenerateSpatialDataSources");
-            CheckBoxBinder.BindChecked(chkCreateLayers, fproc, "GenerateLayers");
-            TextBoxBinder.BindText(txtFeatureSourceRoot, fproc, "SpatialDataSourcesPath");
-            TextBoxBinder.BindText(txtFeatureFolderName, fproc, "SpatialDataSourcesFolder");
-            TextBoxBinder.BindText(txtLayerRoot, fproc, "LayersPath");
-            TextBoxBinder.BindText(txtLayerFolderName, fproc, "LayersFolder");
+            _loadProc = _service.GetEditedResource() as ILoadProcedure;
+            _fProc = _loadProc.SubType;
+
+            TextBoxBinder.BindText(txtTargetRoot, _fProc, "RootPath");
+            CheckBoxBinder.BindChecked(chkCreateFeatureSources, _fProc, "GenerateSpatialDataSources");
+            CheckBoxBinder.BindChecked(chkCreateLayers, _fProc, "GenerateLayers");
+            TextBoxBinder.BindText(txtFeatureSourceRoot, _fProc, "SpatialDataSourcesPath");
+            TextBoxBinder.BindText(txtFeatureFolderName, _fProc, "SpatialDataSourcesFolder");
+            TextBoxBinder.BindText(txtLayerRoot, _fProc, "LayersPath");
+            TextBoxBinder.BindText(txtLayerFolderName, _fProc, "LayersFolder");
+
+            _fProc.PropertyChanged += OnLoadProcedurePropertyChanged;
         }
 
+        protected override void UnsubscribeEventHandlers()
+        {
+            if (_fProc != null)
+            {
+                _fProc.PropertyChanged -= OnLoadProcedurePropertyChanged;
+            }
+            base.UnsubscribeEventHandlers();
+        }
+
+        void OnLoadProcedurePropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            OnResourceChanged();
+        }
+
         private void btnBrowseRoot_Click(object sender, EventArgs e)
         {
             txtTargetRoot.Text = _service.SelectFolder();

Modified: trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/SdfTransformationCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/SdfTransformationCtrl.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/Maestro.Editors/LoadProcedure/SdfTransformationCtrl.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -55,7 +55,7 @@
             TextBoxBinder.BindText(txtCoordinateSystem, sdflp, "CoordinateSystem");
             NumericBinder.BindValueChanged(numGeneralizePercentage, sdflp, "Generalization");
             cmbSdfConflictStrategy.DataSource = Enum.GetValues(typeof(SdfKeyTreatmentType));
-            ComboBoxBinder.BindSelectedIndexChanged(cmbSdfConflictStrategy, "SelectedItem", sdflp, "SdfKeyTreatement");
+            ComboBoxBinder.BindSelectedIndexChanged(cmbSdfConflictStrategy, "SelectedItem", sdflp, "SdfKeyTreatment");
         }
 
         private void btnBrowseCs_Click(object sender, EventArgs e)

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -191,7 +191,7 @@
                 {
                     sproc.ResourceId.Add(it);
                 }
-                this.Parent.ResourceService.SaveResourceAs(proc, this.ResourceID);
+                //Before we'd save here, but instead let's mark the resource as dirty from the user side
             }
             return resourcesCreatedOrUpdated;
         }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -266,14 +266,24 @@
         {
             var sp = sc as SpatialContextType;
             if (sp != null)
+            {
+                if (this.SupplementalSpatialContextInfo == null)
+                    this.SupplementalSpatialContextInfo = new System.ComponentModel.BindingList<SpatialContextType>();
+
                 this.SupplementalSpatialContextInfo.Add(sp);
+            }
         }
 
         void IFeatureSource.RemoveSpatialContextOverride(ISpatialContextInfo sc)
         {
             var sp = sc as SpatialContextType;
             if (sp != null)
+            {
+                if (this.SupplementalSpatialContextInfo == null)
+                    return;
+
                 this.SupplementalSpatialContextInfo.Remove(sp);
+            }
         }
 
         [XmlIgnore]

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs	2011-04-26 12:18:25 UTC (rev 5721)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs	2011-04-26 13:59:16 UTC (rev 5722)
@@ -363,7 +363,11 @@
 		{
 			foreach(string s in param.Keys)
 			{
-				System.IO.MemoryStream content = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(param[s]));
+                string val = param[s];
+                if (string.IsNullOrEmpty(val))
+                    continue;
+
+                System.IO.MemoryStream content = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(val));
 				AppendFormContent(s, null, boundary, responseStream, content, null);
 			}
 		}



More information about the mapguide-commits mailing list