From 3aaad4b5aa44fcf17da11e91d26f97b49d44a06e Mon Sep 17 00:00:00 2001
From: Tim Young <Tim.Young@LightSys.org>
Date: Wed, 12 Aug 2015 20:22:26 -0600
Subject: [PATCH] Add search box to help

---
 EduNetworkBuilder/RTFWindow.Designer.cs       | 69 +++++++++++++++++--
 EduNetworkBuilder/RTFWindow.cs                | 46 ++++++++++++-
 .../Resources/languages/edustrings.resx       |  4 ++
 3 files changed, 111 insertions(+), 8 deletions(-)

diff --git a/EduNetworkBuilder/RTFWindow.Designer.cs b/EduNetworkBuilder/RTFWindow.Designer.cs
index 31eafbf..f1a002a 100644
--- a/EduNetworkBuilder/RTFWindow.Designer.cs
+++ b/EduNetworkBuilder/RTFWindow.Designer.cs
@@ -31,6 +31,10 @@
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RTFWindow));
             this.rtbContent = new System.Windows.Forms.RichTextBox();
             this.btnOK = new System.Windows.Forms.Button();
+            this.lblFind = new System.Windows.Forms.Label();
+            this.tbFind = new System.Windows.Forms.TextBox();
+            this.btnBack = new System.Windows.Forms.Button();
+            this.btnFwd = new System.Windows.Forms.Button();
             this.SuspendLayout();
             // 
             // rtbContent
@@ -38,36 +42,85 @@
             this.rtbContent.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.rtbContent.Location = new System.Drawing.Point(34, 13);
+            this.rtbContent.Location = new System.Drawing.Point(26, 11);
+            this.rtbContent.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.rtbContent.Name = "rtbContent";
             this.rtbContent.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
-            this.rtbContent.Size = new System.Drawing.Size(358, 249);
+            this.rtbContent.Size = new System.Drawing.Size(270, 203);
             this.rtbContent.TabIndex = 0;
             this.rtbContent.Text = "";
             // 
             // btnOK
             // 
             this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnOK.Location = new System.Drawing.Point(317, 271);
+            this.btnOK.Location = new System.Drawing.Point(247, 215);
+            this.btnOK.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.btnOK.Name = "btnOK";
-            this.btnOK.Size = new System.Drawing.Size(75, 23);
+            this.btnOK.Size = new System.Drawing.Size(49, 27);
             this.btnOK.TabIndex = 1;
             this.btnOK.Text = "OK";
             this.btnOK.UseVisualStyleBackColor = true;
             this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
             // 
+            // lblFind
+            // 
+            this.lblFind.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+            this.lblFind.AutoSize = true;
+            this.lblFind.Location = new System.Drawing.Point(23, 220);
+            this.lblFind.Name = "lblFind";
+            this.lblFind.Size = new System.Drawing.Size(31, 15);
+            this.lblFind.TabIndex = 2;
+            this.lblFind.Text = "Find";
+            // 
+            // tbFind
+            // 
+            this.tbFind.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.tbFind.Location = new System.Drawing.Point(60, 219);
+            this.tbFind.Name = "tbFind";
+            this.tbFind.Size = new System.Drawing.Size(134, 20);
+            this.tbFind.TabIndex = 3;
+            // 
+            // btnBack
+            // 
+            this.btnBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnBack.Location = new System.Drawing.Point(200, 217);
+            this.btnBack.Name = "btnBack";
+            this.btnBack.Size = new System.Drawing.Size(17, 23);
+            this.btnBack.TabIndex = 4;
+            this.btnBack.Text = "<";
+            this.btnBack.UseVisualStyleBackColor = true;
+            this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
+            // 
+            // btnFwd
+            // 
+            this.btnFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnFwd.Location = new System.Drawing.Point(220, 217);
+            this.btnFwd.Name = "btnFwd";
+            this.btnFwd.Size = new System.Drawing.Size(17, 23);
+            this.btnFwd.TabIndex = 5;
+            this.btnFwd.Text = ">";
+            this.btnFwd.UseVisualStyleBackColor = true;
+            this.btnFwd.Click += new System.EventHandler(this.btnFwd_Click);
+            // 
             // RTFWindow
             // 
             this.AcceptButton = this.btnOK;
-            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(427, 306);
+            this.ClientSize = new System.Drawing.Size(320, 249);
+            this.Controls.Add(this.btnFwd);
+            this.Controls.Add(this.btnBack);
+            this.Controls.Add(this.tbFind);
+            this.Controls.Add(this.lblFind);
             this.Controls.Add(this.btnOK);
             this.Controls.Add(this.rtbContent);
             this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.Name = "RTFWindow";
             this.Text = "RTFWindow";
             this.ResumeLayout(false);
+            this.PerformLayout();
 
         }
 
@@ -75,5 +128,9 @@
 
         private System.Windows.Forms.RichTextBox rtbContent;
         private System.Windows.Forms.Button btnOK;
+        private System.Windows.Forms.Label lblFind;
+        private System.Windows.Forms.TextBox tbFind;
+        private System.Windows.Forms.Button btnBack;
+        private System.Windows.Forms.Button btnFwd;
     }
 }
\ No newline at end of file
diff --git a/EduNetworkBuilder/RTFWindow.cs b/EduNetworkBuilder/RTFWindow.cs
index 924c68c..d5d4e4e 100644
--- a/EduNetworkBuilder/RTFWindow.cs
+++ b/EduNetworkBuilder/RTFWindow.cs
@@ -112,9 +112,10 @@ namespace EduNetworkBuilder
         }
         private void LanguagifyComponents()
         {
-            Text = NB.Translate("RTFW_rtbContent");
-            Text = NB.Translate("RTFW_btnOK");
+            rtbContent.Text = NB.Translate("RTFW_rtbContent");
+            btnOK.Text = NB.Translate("RTFW_btnOK");
             Text = NB.Translate("RTFW_Form");
+            lblFind.Text = NB.Translate("RTFW_lblFind");
         }
 
         private void btnOK_Click(object sender, EventArgs e)
@@ -122,5 +123,46 @@ namespace EduNetworkBuilder
             Close();
         }
 
+        private void Search(bool GoForward)
+        {
+            int loc = rtbContent.SelectionStart;
+            int indexToText;
+            string WhatToFind =  tbFind.Text;
+            if (tbFind.Text == "") return; //We do nothing if nothing to find.
+            if (GoForward)
+            {
+                loc++; //move forward just a smidge
+                if (loc >= rtbContent.MaxLength) loc = rtbContent.MaxLength;
+                indexToText = rtbContent.Find(WhatToFind,loc,RichTextBoxFinds.None);
+            }
+            else
+            {
+                loc--;//Move back a smidge
+                if (loc < 0) loc = 0;
+                indexToText = rtbContent.Find(WhatToFind, loc, RichTextBoxFinds.Reverse);
+            }
+            if (indexToText > 0)
+            {
+                rtbContent.SelectionStart = indexToText;
+                rtbContent.SelectionBackColor = Color.LightBlue;
+                rtbContent.ScrollToCaret();
+            }
+            if(indexToText == -1)
+            {
+                //We did not go anywhere
+                MessageBox.Show("Not found.");
+            }
+        }
+
+        private void btnFwd_Click(object sender, EventArgs e)
+        {
+            Search(true);
+        }
+
+        private void btnBack_Click(object sender, EventArgs e)
+        {
+            Search(false);
+        }
+
     }
 }
diff --git a/EduNetworkBuilder/Resources/languages/edustrings.resx b/EduNetworkBuilder/Resources/languages/edustrings.resx
index 9d9945f..1782897 100644
--- a/EduNetworkBuilder/Resources/languages/edustrings.resx
+++ b/EduNetworkBuilder/Resources/languages/edustrings.resx
@@ -709,4 +709,8 @@
     <value>Saved</value>
     <comment>String used when we have successfully saved the network.</comment>
   </data>
+  <data name="RTFW_lblFind" xml:space="preserve">
+    <value>Find</value>
+    <comment>RTFWindow RTFW_lblFind = Find</comment>
+  </data>
 </root>
\ No newline at end of file