[mapguide-commits] r6001 - in trunk/Tools/Maestro: Maestro.Editors/MapDefinition OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/ObjectModels

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue Jul 26 07:51:44 EDT 2011


Author: jng
Date: 2011-07-26 04:51:44 -0700 (Tue, 26 Jul 2011)
New Revision: 6001

Modified:
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinitionInterfaces.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs
Log:
#1759: Update all affected layers when a group's name has been changed.


Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs	2011-07-26 09:25:12 UTC (rev 6000)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs	2011-07-26 11:51:44 UTC (rev 6001)
@@ -44,7 +44,19 @@
         {
             group.PropertyChanged += new PropertyChangedEventHandler(OnGroupChanged);
 
-            TextBoxBinder.BindText(txtName, group, "Name");
+            //TextBoxBinder.BindText(txtName, group, "Name");
+            IMapDefinition mdf = group.Parent;
+            string currentName = group.Name;
+            txtName.Text = currentName;
+            txtName.TextChanged += (s, e) =>
+            {
+                string newName = txtName.Text;
+                group.Name = newName;
+                mdf.UpdateDynamicGroupName(currentName, newName);
+                System.Diagnostics.Debug.WriteLine(string.Format("Updated group name {0} -> {1}", currentName, newName));
+                currentName = newName;
+            };
+
             TextBoxBinder.BindText(txtLegendLabel, group, "LegendLabel");
 
             CheckBoxBinder.BindChecked(chkExpanded, group, "ExpandInLegend");

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinition.cs	2011-07-26 09:25:12 UTC (rev 6000)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinition.cs	2011-07-26 11:51:44 UTC (rev 6001)
@@ -91,7 +91,12 @@
 
         public static IResource Deserialize(string xml)
         {
-            return MapDefinition.Deserialize(xml);
+            var mdf = MapDefinition.Deserialize(xml);
+            foreach (var group in mdf.MapLayerGroup)
+            {
+                group.Parent = mdf;
+            }
+            return mdf;
         }
 
         public static Stream Serialize(IResource res)

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinitionInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinitionInterfaces.cs	2011-07-26 09:25:12 UTC (rev 6000)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/MapDefinitionInterfaces.cs	2011-07-26 11:51:44 UTC (rev 6001)
@@ -420,6 +420,23 @@
     public static class MapDefinitionExtensions
     {
         /// <summary>
+        /// Updates the group name references of all layers belonging to a particular group
+        /// </summary>
+        /// <param name="oldGroupName"></param>
+        /// <param name="newGroupName"></param>
+        public static void UpdateDynamicGroupName(this IMapDefinition map, string oldGroupName, string newGroupName)
+        {
+            Check.NotNull(map, "map");
+            Check.NotEmpty(oldGroupName, "oldGroupName");
+            Check.NotEmpty(newGroupName, "newGroupName");
+            var layers = map.GetLayersForGroup(oldGroupName);
+            foreach (var l in layers)
+            {
+                l.Group = newGroupName;
+            }
+        }
+
+        /// <summary>
         /// Removes a layer group and all layers associated with this group
         /// </summary>
         /// <param name="map"></param>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs	2011-07-26 09:25:12 UTC (rev 6000)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ResourceTypeRegistry.cs	2011-07-26 11:51:44 UTC (rev 6001)
@@ -132,8 +132,8 @@
                 ResourceTypeDescriptor.MapDefinition,
                 new ResourceSerializer()
                 {
-                    Serialize = (res) => { return res.SerializeToStream(); },
-                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.MapDefinition_1_0_0.MapDefinition.Deserialize(xml); }
+                    Serialize = (res) => { return OSGeo.MapGuide.ObjectModels.MapDefinition_1_0_0.MdfEntryPoint.Serialize(res); },
+                    Deserialize = (xml) => { return OSGeo.MapGuide.ObjectModels.MapDefinition_1_0_0.MdfEntryPoint.Deserialize(xml); }
                 });
 
             //PrintLayout 1.0.0



More information about the mapguide-commits mailing list