[mapguide-commits] r7647 - in trunk/Tools/Maestro/Maestro.Editors: . MapDefinition

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Jun 26 23:09:35 PDT 2013


Author: jng
Date: 2013-06-26 23:09:34 -0700 (Wed, 26 Jun 2013)
New Revision: 7647

Modified:
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.resx
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Strings.Designer.cs
   trunk/Tools/Maestro/Maestro.Editors/Strings.resx
Log:
#2299: When typing a group name and the last key stroke produces a group name that already exists, *do not* set the group name and update child group references. Instead flag that field as an error via the ErrorProvider and state the reason (another group with the same name already exists). The flag can be dismissed on the next keystroke that produces a non-conflicting group name

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.Designer.cs	2013-06-26 15:16:49 UTC (rev 7646)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.Designer.cs	2013-06-27 06:09:34 UTC (rev 7647)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            this.components = new System.ComponentModel.Container();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GroupPropertiesCtrl));
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.chkExpanded = new System.Windows.Forms.CheckBox();
@@ -37,7 +38,9 @@
             this.txtName = new System.Windows.Forms.TextBox();
             this.label2 = new System.Windows.Forms.Label();
             this.label1 = new System.Windows.Forms.Label();
+            this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
             this.groupBox1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
             this.SuspendLayout();
             // 
             // groupBox1
@@ -80,6 +83,7 @@
             // 
             resources.ApplyResources(this.txtName, "txtName");
             this.txtName.Name = "txtName";
+            this.txtName.TextChanged += new System.EventHandler(this.txtName_TextChanged);
             // 
             // label2
             // 
@@ -91,6 +95,10 @@
             resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
             // 
+            // errorProvider
+            // 
+            this.errorProvider.ContainerControl = this;
+            // 
             // GroupPropertiesCtrl
             // 
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -99,6 +107,7 @@
             resources.ApplyResources(this, "$this");
             this.groupBox1.ResumeLayout(false);
             this.groupBox1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
             this.ResumeLayout(false);
 
         }
@@ -113,5 +122,6 @@
         private System.Windows.Forms.TextBox txtName;
         private System.Windows.Forms.Label label2;
         private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.ErrorProvider errorProvider;
     }
 }

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs	2013-06-26 15:16:49 UTC (rev 7646)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.cs	2013-06-27 06:09:34 UTC (rev 7647)
@@ -38,43 +38,69 @@
         }
 
         public event EventHandler GroupChanged;
+        private IMapDefinition _mdf;
+        private IMapLegendElementBase _el;
 
-        public GroupPropertiesCtrl(IMapLayerGroup group)
+        private bool _init = false;
+
+        public GroupPropertiesCtrl(IMapDefinition map, IMapLayerGroup group)
             : this()
         {
-            group.PropertyChanged += new PropertyChangedEventHandler(OnGroupChanged);
-
-            //TextBoxBinder.BindText(txtName, group, "Name");
-            IMapDefinition mdf = group.Parent;
-            string currentName = group.Name;
-            txtName.Text = currentName;
-            txtName.TextChanged += (s, e) =>
+            _init = true;
+            try
             {
-                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;
-            };
+                _mdf = map;
+                _el = group;
+                group.PropertyChanged += new PropertyChangedEventHandler(OnGroupChanged);
+                string currentName = group.Name;
+                txtName.Text = currentName;
+                //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");
+                TextBoxBinder.BindText(txtLegendLabel, group, "LegendLabel");
 
-            CheckBoxBinder.BindChecked(chkExpanded, group, "ExpandInLegend");
-            CheckBoxBinder.BindChecked(chkLegendVisible, group, "ShowInLegend");
-            CheckBoxBinder.BindChecked(chkVisible, group, "Visible");
+                CheckBoxBinder.BindChecked(chkExpanded, group, "ExpandInLegend");
+                CheckBoxBinder.BindChecked(chkLegendVisible, group, "ShowInLegend");
+                CheckBoxBinder.BindChecked(chkVisible, group, "Visible");
+            }
+            finally
+            {
+                _init = false;
+            }
         }
 
-        public GroupPropertiesCtrl(IBaseMapGroup group)
+        public GroupPropertiesCtrl(IMapDefinition map, IBaseMapGroup group)
             : this()
         {
-            group.PropertyChanged += new PropertyChangedEventHandler(OnGroupChanged);
+            _init = true;
+            try
+            {
+                _mdf = map;
+                _el = group;
+                group.PropertyChanged += new PropertyChangedEventHandler(OnGroupChanged);
 
-            TextBoxBinder.BindText(txtName, group, "Name");
-            TextBoxBinder.BindText(txtLegendLabel, group, "LegendLabel");
+                //TextBoxBinder.BindText(txtName, group, "Name");
+                TextBoxBinder.BindText(txtLegendLabel, group, "LegendLabel");
 
-            CheckBoxBinder.BindChecked(chkExpanded, group, "ExpandInLegend");
-            CheckBoxBinder.BindChecked(chkLegendVisible, group, "ShowInLegend");
-            CheckBoxBinder.BindChecked(chkVisible, group, "Visible");
+                CheckBoxBinder.BindChecked(chkExpanded, group, "ExpandInLegend");
+                CheckBoxBinder.BindChecked(chkLegendVisible, group, "ShowInLegend");
+                CheckBoxBinder.BindChecked(chkVisible, group, "Visible");
+            }
+            finally
+            {
+                _init = false;
+            }
         }
 
         void OnGroupChanged(object sender, PropertyChangedEventArgs e)
@@ -83,5 +109,46 @@
             if (handler != null)
                 handler(this, EventArgs.Empty);
         }
+
+        static int GetGroupCount(IMapDefinition map, string name)
+        {
+            int count = 0;
+            foreach (var grp in map.MapLayerGroup)
+            {
+                if (grp.Name == name)
+                    count++;
+            }
+            if (map.BaseMap != null)
+            {
+                foreach (var grp in map.BaseMap.BaseMapLayerGroup)
+                {
+                    if (grp.Name == name)
+                        count++;
+                }
+            }
+            System.Diagnostics.Debug.WriteLine("{0} groups with the name: {1}", count, name);
+            return count;
+        }
+
+        private void txtName_TextChanged(object sender, EventArgs e)
+        {
+            if (_init)
+                return;
+
+            string newName = txtName.Text;
+            //Before we apply to model, check if another one of the same name exists
+            if (GetGroupCount(_mdf, newName) == 0)
+            {
+                errorProvider.Clear();
+                string currentName = _el.Name;
+                _el.Name = newName;
+                _mdf.UpdateDynamicGroupName(currentName, newName);
+                System.Diagnostics.Debug.WriteLine(string.Format("Updated group name {0} -> {1}", currentName, newName));
+            }
+            else
+            {
+                errorProvider.SetError(txtName, string.Format(Strings.GroupAlreadyExists, newName));
+            }
+        }
     }
 }

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.resx	2013-06-26 15:16:49 UTC (rev 7646)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/GroupPropertiesCtrl.resx	2013-06-27 06:09:34 UTC (rev 7647)
@@ -112,16 +112,16 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <data name="chkExpanded.AutoSize" type="System.Boolean, mscorlib">
     <value>True</value>
   </data>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="chkExpanded.Location" type="System.Drawing.Point, System.Drawing">
     <value>18, 127</value>
   </data>
@@ -138,7 +138,7 @@
     <value>chkExpanded</value>
   </data>
   <data name=">>chkExpanded.Type" xml:space="preserve">
-    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>chkExpanded.Parent" xml:space="preserve">
     <value>groupBox1</value>
@@ -165,7 +165,7 @@
     <value>chkLegendVisible</value>
   </data>
   <data name=">>chkLegendVisible.Type" xml:space="preserve">
-    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>chkLegendVisible.Parent" xml:space="preserve">
     <value>groupBox1</value>
@@ -192,7 +192,7 @@
     <value>chkVisible</value>
   </data>
   <data name=">>chkVisible.Type" xml:space="preserve">
-    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>chkVisible.Parent" xml:space="preserve">
     <value>groupBox1</value>
@@ -200,7 +200,7 @@
   <data name=">>chkVisible.ZOrder" xml:space="preserve">
     <value>2</value>
   </data>
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <data name="txtLegendLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Top, Left, Right</value>
   </data>
@@ -208,7 +208,7 @@
     <value>107, 45</value>
   </data>
   <data name="txtLegendLabel.Size" type="System.Drawing.Size, System.Drawing">
-    <value>277, 20</value>
+    <value>266, 20</value>
   </data>
   <data name="txtLegendLabel.TabIndex" type="System.Int32, mscorlib">
     <value>11</value>
@@ -217,7 +217,7 @@
     <value>txtLegendLabel</value>
   </data>
   <data name=">>txtLegendLabel.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>txtLegendLabel.Parent" xml:space="preserve">
     <value>groupBox1</value>
@@ -232,7 +232,7 @@
     <value>107, 19</value>
   </data>
   <data name="txtName.Size" type="System.Drawing.Size, System.Drawing">
-    <value>277, 20</value>
+    <value>266, 20</value>
   </data>
   <data name="txtName.TabIndex" type="System.Int32, mscorlib">
     <value>10</value>
@@ -241,7 +241,7 @@
     <value>txtName</value>
   </data>
   <data name=">>txtName.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>txtName.Parent" xml:space="preserve">
     <value>groupBox1</value>
@@ -268,7 +268,7 @@
     <value>label2</value>
   </data>
   <data name=">>label2.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>label2.Parent" xml:space="preserve">
     <value>groupBox1</value>
@@ -295,7 +295,7 @@
     <value>label1</value>
   </data>
   <data name=">>label1.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>label1.Parent" xml:space="preserve">
     <value>groupBox1</value>
@@ -322,7 +322,7 @@
     <value>groupBox1</value>
   </data>
   <data name=">>groupBox1.Type" xml:space="preserve">
-    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>groupBox1.Parent" xml:space="preserve">
     <value>$this</value>
@@ -330,16 +330,25 @@
   <data name=">>groupBox1.ZOrder" xml:space="preserve">
     <value>0</value>
   </data>
-  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
   <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
     <value>400, 187</value>
   </data>
+  <data name=">>errorProvider.Name" xml:space="preserve">
+    <value>errorProvider</value>
+  </data>
+  <data name=">>errorProvider.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ErrorProvider, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
   <data name=">>$this.Name" xml:space="preserve">
     <value>GroupPropertiesCtrl</value>
   </data>
   <data name=">>$this.Type" xml:space="preserve">
-    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
 </root>
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs	2013-06-26 15:16:49 UTC (rev 7646)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/MapLayersSectionCtrl.cs	2013-06-27 06:09:34 UTC (rev 7647)
@@ -222,7 +222,7 @@
             btnConvertLayerGroupToBaseGroup.Enabled = true;
 
             propertiesPanel.Controls.Clear();
-            var item = new GroupPropertiesCtrl(group.Tag);
+            var item = new GroupPropertiesCtrl(_map, group.Tag);
             item.GroupChanged += (s, evt) => { OnResourceChanged(); };
             item.Dock = DockStyle.Fill;
             _activeLayer = null;
@@ -1007,7 +1007,7 @@
             btnBaseLayerGroupToRegular.Enabled = true;
 
             propertiesPanel.Controls.Clear();
-            var item = new GroupPropertiesCtrl(group.Tag);
+            var item = new GroupPropertiesCtrl(_map, group.Tag);
             item.GroupChanged += (s, evt) => { OnResourceChanged(); };
             item.Dock = DockStyle.Fill;
             _activeLayer = null;

Modified: trunk/Tools/Maestro/Maestro.Editors/Strings.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Strings.Designer.cs	2013-06-26 15:16:49 UTC (rev 7646)
+++ trunk/Tools/Maestro/Maestro.Editors/Strings.Designer.cs	2013-06-27 06:09:34 UTC (rev 7647)
@@ -1175,6 +1175,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to A group named "{0}" already exists. Choose a different name.
+        /// </summary>
+        internal static string GroupAlreadyExists {
+            get {
+                return ResourceManager.GetString("GroupAlreadyExists", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to The header file does not exist.
         /// </summary>
         internal static string HeaderFileMissing {

Modified: trunk/Tools/Maestro/Maestro.Editors/Strings.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Strings.resx	2013-06-26 15:16:49 UTC (rev 7646)
+++ trunk/Tools/Maestro/Maestro.Editors/Strings.resx	2013-06-27 06:09:34 UTC (rev 7647)
@@ -1521,4 +1521,7 @@
   <data name="OdbcConnStrMissingMgPlaceholders" xml:space="preserve">
     <value>The ODBC connection string requires a %MG_USERNAME% and %MG_PASSWORD% placeholder tokens present</value>
   </data>
+  <data name="GroupAlreadyExists" xml:space="preserve">
+    <value>A group named "{0}" already exists. Choose a different name</value>
+  </data>
 </root>
\ No newline at end of file



More information about the mapguide-commits mailing list