// *
// * Copyright (C) 2008 Roger Alsing : http://www.RogerAlsing.com
// *
// * This library is free software; you can redistribute it and/or modify it
// * under the terms of the GNU Lesser General Public License 2.1 or later, as
// * published by the Free Software Foundation. See the included license.txt
// * or http://www.gnu.org/copyleft/lesser.html for details.
// *
// *
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace Alsing.Windows.Forms.SyntaxBox
{
///
/// Summary description for FindReplace.
///
public class FindReplaceForm : Form
{
private WeakReference _Control;
private string _Last = "";
private Button btnClose;
private Button btnDoReplace;
private Button btnFind;
private Button btnMarkAll;
private Button btnRegex1;
private Button btnReplace;
private Button btnReplaceAll;
private Button button1;
private ComboBox cboFind;
private ComboBox cboReplace;
private CheckBox chkMatchCase;
private CheckBox chkRegEx;
private CheckBox chkWholeWord;
///
/// Required designer variable.
///
private Container components;
private GroupBox groupBox1;
private Label label1;
private Label label2;
private Panel panel1;
private Panel panel3;
private Panel pnlButtons;
private Panel pnlFind;
private Panel pnlReplace;
private Panel pnlReplaceButtons;
private Panel pnlSettings;
///
/// Default constructor for the FindReplaceForm.
///
public FindReplaceForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
///
/// Creates a FindReplaceForm that will be assigned to a specific Owner control.
///
/// The SyntaxBox that will use the FindReplaceForm
public FindReplaceForm(EditViewControl Owner)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
mOwner = Owner;
}
private EditViewControl mOwner
{
get
{
if (_Control != null)
return (EditViewControl) _Control.Target;
else
return null;
}
set { _Control = new WeakReference(value); }
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
// unchecked
// {
// int i= (int)0x80000000;
// cp.Style |=i;
// }
return cp;
}
}
///
/// Clean up any resources being used.
///
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
///
/// Displays the FindReplaceForm and sets it in "Find" mode.
///
public void ShowFind()
{
pnlReplace.Visible = false;
pnlReplaceButtons.Visible = false;
Text = "Find";
Show();
Height = 160;
btnDoReplace.Visible = false;
btnReplace.Visible = true;
_Last = "";
cboFind.Focus();
}
///
/// Displays the FindReplaceForm and sets it in "Replace" mode.
///
public void ShowReplace()
{
pnlReplace.Visible = true;
pnlReplaceButtons.Visible = true;
Text = "Replace";
Show();
Height = 200;
btnDoReplace.Visible = true;
btnReplace.Visible = false;
_Last = "";
cboFind.Focus();
}
private void btnReplace_Click(object sender, EventArgs e)
{
ShowReplace();
}
private void FindReplace_Closing(object sender,
CancelEventArgs e)
{
e.Cancel = true;
Hide();
}
private void btnFind_Click(object sender, EventArgs e)
{
FindNext();
cboFind.Focus();
}
private void btnClose_Click(object sender, EventArgs e)
{
mOwner.Focus();
Hide();
}
private void btnDoReplace_Click(object sender, EventArgs e)
{
mOwner.ReplaceSelection(cboReplace.Text);
btnFind_Click(null, null);
}
private void btnReplaceAll_Click(object sender, EventArgs e)
{
string text = cboFind.Text;
if (text == "")
return;
bool found = false;
foreach (string s in cboFind.Items)
{
if (s == text)
{
found = true;
break;
}
}
if (!found)
cboFind.Items.Add(text);
int x = mOwner.Caret.Position.X;
int y = mOwner.Caret.Position.Y;
mOwner.Caret.Position.X = 0;
mOwner.Caret.Position.Y = 0;
while (mOwner.SelectNext(cboFind.Text, chkMatchCase.Checked,
chkWholeWord.Checked, chkRegEx.Checked))
{
mOwner.ReplaceSelection(cboReplace.Text);
}
mOwner.Selection.ClearSelection();
// mOwner.Caret.Position.X=x;
// mOwner.Caret.Position.Y=y;
// mOwner.ScrollIntoView ();
cboFind.Focus();
}
private void btnMarkAll_Click(object sender, EventArgs e)
{
string text = cboFind.Text;
if (text == "")
return;
bool found = false;
foreach (string s in cboFind.Items)
{
if (s == text)
{
found = true;
break;
}
}
if (!found)
cboFind.Items.Add(text);
int x = mOwner.Caret.Position.X;
int y = mOwner.Caret.Position.Y;
mOwner.Caret.Position.X = 0;
mOwner.Caret.Position.Y = 0;
while (mOwner.SelectNext(cboFind.Text, chkMatchCase.Checked,
chkWholeWord.Checked, chkRegEx.Checked))
{
mOwner.Caret.CurrentRow.Bookmarked = true;
}
mOwner.Selection.ClearSelection();
// mOwner.Caret.Position.X=x;
// mOwner.Caret.Position.Y=y;
// mOwner.ScrollIntoView ();
cboFind.Focus();
}
public void FindNext()
{
string text = cboFind.Text;
if (_Last != "" && _Last != text)
{
mOwner.Caret.Position.X = 0;
mOwner.Caret.Position.Y = 0;
mOwner.ScrollIntoView();
}
_Last = text;
if (text == "")
return;
bool found = false;
foreach (string s in cboFind.Items)
{
if (s == text)
{
found = true;
break;
}
}
if (!found)
cboFind.Items.Add(text);
mOwner.SelectNext(cboFind.Text, chkMatchCase.Checked,
chkWholeWord.Checked, chkRegEx.Checked);
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
var resources = new
System.Resources.ResourceManager(typeof (FindReplaceForm));
this.pnlButtons = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.btnClose = new System.Windows.Forms.Button();
this.btnMarkAll = new System.Windows.Forms.Button();
this.pnlReplaceButtons = new System.Windows.Forms.Panel();
this.btnReplaceAll = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.btnDoReplace = new System.Windows.Forms.Button();
this.btnReplace = new System.Windows.Forms.Button();
this.btnFind = new System.Windows.Forms.Button();
this.pnlFind = new System.Windows.Forms.Panel();
this.cboFind = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.btnRegex1 = new System.Windows.Forms.Button();
this.pnlReplace = new System.Windows.Forms.Panel();
this.cboReplace = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.pnlSettings = new System.Windows.Forms.Panel();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.chkRegEx = new System.Windows.Forms.CheckBox();
this.chkWholeWord = new System.Windows.Forms.CheckBox();
this.chkMatchCase = new System.Windows.Forms.CheckBox();
this.pnlButtons.SuspendLayout();
this.panel3.SuspendLayout();
this.pnlReplaceButtons.SuspendLayout();
this.panel1.SuspendLayout();
this.pnlFind.SuspendLayout();
this.pnlReplace.SuspendLayout();
this.pnlSettings.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// pnlButtons
//
this.pnlButtons.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.panel3, this.pnlReplaceButtons, this.panel1
}
);
this.pnlButtons.Dock = System.Windows.Forms.DockStyle.Right;
this.pnlButtons.Location = new System.Drawing.Point(400, 0);
this.pnlButtons.Name = "pnlButtons";
this.pnlButtons.Size = new System.Drawing.Size(96, 178);
this.pnlButtons.TabIndex = 0;
//
// panel3
//
this.panel3.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.btnClose, this.btnMarkAll
}
);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(0, 96);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(96, 82);
this.panel3.TabIndex = 4;
//
// btnClose
//
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnClose.Location = new System.Drawing.Point(8, 40);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(80, 24);
this.btnClose.TabIndex = 3;
this.btnClose.Text = "Close";
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// btnMarkAll
//
this.btnMarkAll.Location = new System.Drawing.Point(8, 8);
this.btnMarkAll.Name = "btnMarkAll";
this.btnMarkAll.Size = new System.Drawing.Size(80, 24);
this.btnMarkAll.TabIndex = 2;
this.btnMarkAll.Text = "Mark all";
this.btnMarkAll.Click += new System.EventHandler(this.btnMarkAll_Click);
//
// pnlReplaceButtons
//
this.pnlReplaceButtons.Controls.AddRange(new
System.Windows.Forms.Control[]
{
this.btnReplaceAll
}
);
this.pnlReplaceButtons.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlReplaceButtons.Location = new System.Drawing.Point(0, 64);
this.pnlReplaceButtons.Name = "pnlReplaceButtons";
this.pnlReplaceButtons.Size = new System.Drawing.Size(96, 32);
this.pnlReplaceButtons.TabIndex = 3;
this.pnlReplaceButtons.Visible = false;
//
// btnReplaceAll
//
this.btnReplaceAll.Location = new System.Drawing.Point(8, 8);
this.btnReplaceAll.Name = "btnReplaceAll";
this.btnReplaceAll.Size = new System.Drawing.Size(80, 24);
this.btnReplaceAll.TabIndex = 2;
this.btnReplaceAll.Text = "Replace All";
this.btnReplaceAll.Click += new System.EventHandler
(this.btnReplaceAll_Click);
//
// panel1
//
this.panel1.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.btnDoReplace, this.btnReplace, this.btnFind
}
);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(96, 64);
this.panel1.TabIndex = 2;
//
// btnDoReplace
//
this.btnDoReplace.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnDoReplace.Location = new System.Drawing.Point(8, 40);
this.btnDoReplace.Name = "btnDoReplace";
this.btnDoReplace.Size = new System.Drawing.Size(80, 24);
this.btnDoReplace.TabIndex = 4;
this.btnDoReplace.Text = "Replace";
this.btnDoReplace.Click += new System.EventHandler
(this.btnDoReplace_Click);
//
// btnReplace
//
this.btnReplace.Image = ((System.Drawing.Bitmap) (resources.GetObject(
"btnReplace.Image")));
this.btnReplace.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btnReplace.Location = new System.Drawing.Point(8, 40);
this.btnReplace.Name = "btnReplace";
this.btnReplace.Size = new System.Drawing.Size(80, 24);
this.btnReplace.TabIndex = 3;
this.btnReplace.Text = "Replace";
this.btnReplace.Click += new System.EventHandler(this.btnReplace_Click);
//
// btnFind
//
this.btnFind.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnFind.Location = new System.Drawing.Point(8, 8);
this.btnFind.Name = "btnFind";
this.btnFind.Size = new System.Drawing.Size(80, 24);
this.btnFind.TabIndex = 2;
this.btnFind.Text = "&FindNext";
this.btnFind.Click += new System.EventHandler(this.btnFind_Click);
//
// pnlFind
//
this.pnlFind.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.cboFind, this.label1, this.btnRegex1
}
);
this.pnlFind.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlFind.Name = "pnlFind";
this.pnlFind.Size = new System.Drawing.Size(400, 40);
this.pnlFind.TabIndex = 1;
//
// cboFind
//
this.cboFind.Location = new System.Drawing.Point(104, 8);
this.cboFind.Name = "cboFind";
this.cboFind.Size = new System.Drawing.Size(288, 21);
this.cboFind.TabIndex = 1;
//
// label1
//
this.label1.Location = new System.Drawing.Point(8, 8);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(96, 24);
this.label1.TabIndex = 0;
this.label1.Text = "Fi&nd what:";
//
// btnRegex1
//
this.btnRegex1.Image = ((System.Drawing.Bitmap) (resources.GetObject(
"btnRegex1.Image")));
this.btnRegex1.Location = new System.Drawing.Point(368, 8);
this.btnRegex1.Name = "btnRegex1";
this.btnRegex1.Size = new System.Drawing.Size(21, 21);
this.btnRegex1.TabIndex = 2;
this.btnRegex1.Visible = false;
//
// pnlReplace
//
this.pnlReplace.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.cboReplace, this.label2, this.button1
}
);
this.pnlReplace.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlReplace.Location = new System.Drawing.Point(0, 40);
this.pnlReplace.Name = "pnlReplace";
this.pnlReplace.Size = new System.Drawing.Size(400, 40);
this.pnlReplace.TabIndex = 2;
this.pnlReplace.Visible = false;
//
// cboReplace
//
this.cboReplace.Location = new System.Drawing.Point(106, 8);
this.cboReplace.Name = "cboReplace";
this.cboReplace.Size = new System.Drawing.Size(286, 21);
this.cboReplace.TabIndex = 4;
//
// label2
//
this.label2.Location = new System.Drawing.Point(10, 8);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(96, 24);
this.label2.TabIndex = 3;
this.label2.Text = "Re&place with:";
//
// button1
//
this.button1.Image = ((System.Drawing.Bitmap) (resources.GetObject(
"button1.Image")));
this.button1.Location = new System.Drawing.Point(368, 8);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(21, 21);
this.button1.TabIndex = 5;
this.button1.Visible = false;
//
// pnlSettings
//
this.pnlSettings.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.groupBox1
}
);
this.pnlSettings.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlSettings.Location = new System.Drawing.Point(0, 80);
this.pnlSettings.Name = "pnlSettings";
this.pnlSettings.Size = new System.Drawing.Size(400, 98);
this.pnlSettings.TabIndex = 3;
//
// groupBox1
//
this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.chkRegEx, this.chkWholeWord, this.chkMatchCase
}
);
this.groupBox1.Location = new System.Drawing.Point(8, 0);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(384, 88);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Search";
//
// chkRegEx
//
this.chkRegEx.Location = new System.Drawing.Point(8, 64);
this.chkRegEx.Name = "chkRegEx";
this.chkRegEx.Size = new System.Drawing.Size(144, 16);
this.chkRegEx.TabIndex = 2;
this.chkRegEx.Text = "Use Regular expressions";
this.chkRegEx.Visible = false;
//
// chkWholeWord
//
this.chkWholeWord.Location = new System.Drawing.Point(8, 40);
this.chkWholeWord.Name = "chkWholeWord";
this.chkWholeWord.Size = new System.Drawing.Size(144, 16);
this.chkWholeWord.TabIndex = 1;
this.chkWholeWord.Text = "Match &whole word";
//
// chkMatchCase
//
this.chkMatchCase.Location = new System.Drawing.Point(8, 16);
this.chkMatchCase.Name = "chkMatchCase";
this.chkMatchCase.Size = new System.Drawing.Size(144, 16);
this.chkMatchCase.TabIndex = 0;
this.chkMatchCase.Text = "Match &case";
//
// FindReplaceForm
//
this.AcceptButton = this.btnFind;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.btnClose;
this.ClientSize = new System.Drawing.Size(496, 178);
this.Controls.AddRange(new System.Windows.Forms.Control[]
{
this.pnlSettings, this.pnlReplace, this.pnlFind, this.pnlButtons
}
);
this.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "FindReplaceForm";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Find";
this.Closing += new System.ComponentModel.CancelEventHandler
(this.FindReplace_Closing);
this.pnlButtons.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.pnlReplaceButtons.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.pnlFind.ResumeLayout(false);
this.pnlReplace.ResumeLayout(false);
this.pnlSettings.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
}
}