From 5d373a5e9504c70f8206685eca01a461f7cb25db Mon Sep 17 00:00:00 2001
From: Tim Young <tim.young@lightsys.org>
Date: Thu, 1 Mar 2018 12:29:54 -0600
Subject: [PATCH] Better behavior when resizing shape window

---
 .../Resources/languages/edustrings.resx       |  8 +++
 EduNetworkBuilder/ShapeEditor.Designer.cs     |  5 ++
 EduNetworkBuilder/ShapeEditor.cs              | 51 ++++++++++++++++---
 3 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/EduNetworkBuilder/Resources/languages/edustrings.resx b/EduNetworkBuilder/Resources/languages/edustrings.resx
index a4114ad..2e6f256 100644
--- a/EduNetworkBuilder/Resources/languages/edustrings.resx
+++ b/EduNetworkBuilder/Resources/languages/edustrings.resx
@@ -2049,4 +2049,12 @@
     <value>Cannot place a tree on top of a tree.</value>
     <comment>NB_TreePlacementError = Cannot place a tree on top of a tree.</comment>
   </data>
+  <data name="SE_MoveToEnd" xml:space="preserve">
+    <value>Move To End</value>
+    <comment>SE_MoveToEnd = Move to End</comment>
+  </data>
+  <data name="SE_MoveToTop" xml:space="preserve">
+    <value>Move To Top</value>
+    <comment>SE_MoveToTop = Move To Top</comment>
+  </data>
 </root>
\ No newline at end of file
diff --git a/EduNetworkBuilder/ShapeEditor.Designer.cs b/EduNetworkBuilder/ShapeEditor.Designer.cs
index 70815d1..630b458 100644
--- a/EduNetworkBuilder/ShapeEditor.Designer.cs
+++ b/EduNetworkBuilder/ShapeEditor.Designer.cs
@@ -51,6 +51,9 @@
             // 
             // lbShapeList
             // 
+            this.lbShapeList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
             this.lbShapeList.FormattingEnabled = true;
             this.lbShapeList.ItemHeight = 16;
             this.lbShapeList.Location = new System.Drawing.Point(12, 29);
@@ -72,6 +75,7 @@
             // 
             // btnDone
             // 
+            this.btnDone.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
             this.btnDone.Location = new System.Drawing.Point(201, 244);
             this.btnDone.Name = "btnDone";
             this.btnDone.Size = new System.Drawing.Size(75, 23);
@@ -146,6 +150,7 @@
             // 
             // panel1
             // 
+            this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
             this.panel1.Controls.Add(this.lblShape);
             this.panel1.Controls.Add(this.cbShape);
             this.panel1.Controls.Add(this.lblLine);
diff --git a/EduNetworkBuilder/ShapeEditor.cs b/EduNetworkBuilder/ShapeEditor.cs
index 84e6031..e5604be 100644
--- a/EduNetworkBuilder/ShapeEditor.cs
+++ b/EduNetworkBuilder/ShapeEditor.cs
@@ -42,12 +42,6 @@ namespace EduNetworkBuilder
                 cbLineColor.Items.Add(one);
             }
 
-            lbShapeList.Items.Clear();
-            foreach(string one in myNet.ShapeDescriptions())
-            {                
-                lbShapeList.Items.Add(one);
-            }
-
             cbShape.Items.Clear();
             foreach(NetShapeType one in Enum.GetValues(typeof(NetShapeType)))
             {
@@ -62,6 +56,19 @@ namespace EduNetworkBuilder
             cbFillColor.Leave += DataUpdated;
             cbLineColor.Leave += DataUpdated;
             cbShape.Leave += DataUpdated;
+
+            FillFormItems();
+        }
+
+        void FillFormItems()
+        {
+            Network myNet = NB.GetNetwork();
+
+            lbShapeList.Items.Clear();
+            foreach (string one in myNet.ShapeDescriptions())
+            {
+                lbShapeList.Items.Add(one);
+            }
         }
 
         void DataUpdated(object sender, EventArgs e)
@@ -172,8 +179,13 @@ namespace EduNetworkBuilder
                     {
                         lbShapeList.ContextMenuStrip = new ContextMenuStrip();
                     }
+                    lbShapeList.ContextMenuStrip.Items.Clear();
                     lbShapeList.ContextMenuStrip.Items.Add(NB.Translate("_Delete"));
                     lbShapeList.ContextMenuStrip.Items[index++].Click += lblShape_Delete;
+                    lbShapeList.ContextMenuStrip.Items.Add(NB.Translate("SE_MoveToTop"));
+                    lbShapeList.ContextMenuStrip.Items[index++].Click += lblShape_MoveToTop;
+                    lbShapeList.ContextMenuStrip.Items.Add(NB.Translate("SE_MoveToEnd"));
+                    lbShapeList.ContextMenuStrip.Items[index++].Click += lblShape_MoveToEnd;
 
                 }
             }
@@ -182,7 +194,34 @@ namespace EduNetworkBuilder
 
         void lblShape_Delete(object sender, EventArgs e)
         {
+            if(ShapeForEditing != null)
+            {
+                Network myNet = NB.GetNetwork();
+                myNet.RemoveShape(ShapeForEditing);
+                FillFormItems();
+            }
+        }
 
+        void lblShape_MoveToTop(object sender, EventArgs e)
+        {
+            if (ShapeForEditing != null)
+            {
+                Network myNet = NB.GetNetwork();
+                myNet.RemoveShape(ShapeForEditing);
+                myNet.Shapes.Insert(0, ShapeForEditing);
+                FillFormItems();
+            }
+        }
+
+        void lblShape_MoveToEnd(object sender, EventArgs e)
+        {
+            if (ShapeForEditing != null)
+            {
+                Network myNet = NB.GetNetwork();
+                myNet.RemoveShape(ShapeForEditing);
+                myNet.Shapes.Add(ShapeForEditing);
+                FillFormItems();
+            }
         }
 
         private void lbShapeList_MouseDown(object sender, MouseEventArgs e)