diff --git a/.gitignore b/.gitignore
index 9ac0ec3..d3214a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,26 @@
-# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
-bin
-obj
-
-# mstest test results
-TestResults
\ No newline at end of file
+build/
+*.suo
+*.user
+_ReSharper*
+*.csproj.user
+*.resharper.user
+*.userprefs
+*.suo
+*.cache
+*.trx
+*.pidb
+Thumbs.db
+[Bb]in
+[Dd]ebug
+[Oo]bj
+[Rr]elease
+[Tt]est[Rr]esult*
+_UpgradeReport_Files
+*[Pp]ublish.xml
+*.project
+*.metadata
+logs
+*.generated.cs
+T4MVC.cs
+/SharpSnmpLib/sharpsnmplib.snk
+/packages
\ No newline at end of file
diff --git a/ActionsDemo/AboutBox.Designer.cs b/ActionsDemo/AboutBox.Designer.cs
new file mode 100644
index 0000000..30cf0c0
--- /dev/null
+++ b/ActionsDemo/AboutBox.Designer.cs
@@ -0,0 +1,187 @@
+namespace Crad.Windows.Forms.Actions.Sample
+{
+ partial class AboutBox
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #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()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox));
+ this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+ this.logoPictureBox = new System.Windows.Forms.PictureBox();
+ this.labelProductName = new System.Windows.Forms.Label();
+ this.labelVersion = new System.Windows.Forms.Label();
+ this.labelCopyright = new System.Windows.Forms.Label();
+ this.labelCompanyName = new System.Windows.Forms.Label();
+ this.textBoxDescription = new System.Windows.Forms.TextBox();
+ this.okButton = new System.Windows.Forms.Button();
+ this.tableLayoutPanel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel
+ //
+ this.tableLayoutPanel.ColumnCount = 2;
+ this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
+ this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
+ this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
+ this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
+ this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
+ this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
+ this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3);
+ this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
+ this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
+ this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9);
+ this.tableLayoutPanel.Name = "tableLayoutPanel";
+ this.tableLayoutPanel.RowCount = 6;
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+ this.tableLayoutPanel.Size = new System.Drawing.Size(475, 297);
+ this.tableLayoutPanel.TabIndex = 0;
+ //
+ // logoPictureBox
+ //
+ this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.logoPictureBox.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.About;
+ this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
+ this.logoPictureBox.Name = "logoPictureBox";
+ this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
+ this.logoPictureBox.Size = new System.Drawing.Size(150, 291);
+ this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
+ this.logoPictureBox.TabIndex = 12;
+ this.logoPictureBox.TabStop = false;
+ //
+ // labelProductName
+ //
+ this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelProductName.Location = new System.Drawing.Point(162, 0);
+ this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+ this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17);
+ this.labelProductName.Name = "labelProductName";
+ this.labelProductName.Size = new System.Drawing.Size(310, 17);
+ this.labelProductName.TabIndex = 19;
+ this.labelProductName.Text = "Product Name";
+ this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // labelVersion
+ //
+ this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelVersion.Location = new System.Drawing.Point(162, 29);
+ this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+ this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17);
+ this.labelVersion.Name = "labelVersion";
+ this.labelVersion.Size = new System.Drawing.Size(310, 17);
+ this.labelVersion.TabIndex = 0;
+ this.labelVersion.Text = "Version";
+ this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // labelCopyright
+ //
+ this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelCopyright.Location = new System.Drawing.Point(162, 58);
+ this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+ this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17);
+ this.labelCopyright.Name = "labelCopyright";
+ this.labelCopyright.Size = new System.Drawing.Size(310, 17);
+ this.labelCopyright.TabIndex = 21;
+ this.labelCopyright.Text = "Copyright";
+ this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // labelCompanyName
+ //
+ this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelCompanyName.Location = new System.Drawing.Point(162, 87);
+ this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+ this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 17);
+ this.labelCompanyName.Name = "labelCompanyName";
+ this.labelCompanyName.Size = new System.Drawing.Size(310, 17);
+ this.labelCompanyName.TabIndex = 22;
+ this.labelCompanyName.Text = "Company Name";
+ this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // textBoxDescription
+ //
+ this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.textBoxDescription.Location = new System.Drawing.Point(162, 119);
+ this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
+ this.textBoxDescription.Multiline = true;
+ this.textBoxDescription.Name = "textBoxDescription";
+ this.textBoxDescription.ReadOnly = true;
+ this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.textBoxDescription.Size = new System.Drawing.Size(310, 142);
+ this.textBoxDescription.TabIndex = 23;
+ this.textBoxDescription.TabStop = false;
+ this.textBoxDescription.Text = resources.GetString("textBoxDescription.Text");
+ this.textBoxDescription.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // okButton
+ //
+ this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.okButton.Location = new System.Drawing.Point(397, 271);
+ this.okButton.Name = "okButton";
+ this.okButton.Size = new System.Drawing.Size(75, 23);
+ this.okButton.TabIndex = 24;
+ this.okButton.Text = "&OK";
+ //
+ // AboutBox
+ //
+ this.AcceptButton = this.okButton;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(493, 315);
+ this.Controls.Add(this.tableLayoutPanel);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "AboutBox";
+ this.Padding = new System.Windows.Forms.Padding(9);
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "AboutBox";
+ this.tableLayoutPanel.ResumeLayout(false);
+ this.tableLayoutPanel.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
+ private System.Windows.Forms.PictureBox logoPictureBox;
+ private System.Windows.Forms.Label labelProductName;
+ private System.Windows.Forms.Label labelVersion;
+ private System.Windows.Forms.Label labelCopyright;
+ private System.Windows.Forms.Label labelCompanyName;
+ private System.Windows.Forms.TextBox textBoxDescription;
+ private System.Windows.Forms.Button okButton;
+ }
+}
diff --git a/ActionsDemo/AboutBox.cs b/ActionsDemo/AboutBox.cs
new file mode 100644
index 0000000..7d1a09f
--- /dev/null
+++ b/ActionsDemo/AboutBox.cs
@@ -0,0 +1,114 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+using System.Reflection;
+
+namespace Crad.Windows.Forms.Actions.Sample
+{
+ partial class AboutBox : Form
+ {
+ public AboutBox()
+ {
+ InitializeComponent();
+
+ // Initialize the AboutBox to display the product information from the assembly information.
+ // Change assembly information settings for your application through either:
+ // - Project->Properties->Application->Assembly Information
+ // - AssemblyInfo.cs
+ this.Text = String.Format("About {0}", AssemblyTitle);
+ this.labelProductName.Text = AssemblyProduct;
+ this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion);
+ this.labelCopyright.Text = AssemblyCopyright;
+ this.labelCompanyName.Text = AssemblyCompany;
+ }
+
+ #region Assembly Attribute Accessors
+
+ public string AssemblyTitle
+ {
+ get
+ {
+ // Get all Title attributes on this assembly
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
+ // If there is at least one Title attribute
+ if (attributes.Length > 0)
+ {
+ // Select the first one
+ AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
+ // If it is not an empty string, return it
+ if (titleAttribute.Title != "")
+ return titleAttribute.Title;
+ }
+ // If there was no Title attribute, or if the Title attribute was the empty string, return the .exe name
+ return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
+ }
+ }
+
+ public string AssemblyVersion
+ {
+ get
+ {
+ return Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ }
+ }
+
+ public string AssemblyDescription
+ {
+ get
+ {
+ // Get all Description attributes on this assembly
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
+ // If there aren't any Description attributes, return an empty string
+ if (attributes.Length == 0)
+ return "";
+ // If there is a Description attribute, return its value
+ return ((AssemblyDescriptionAttribute)attributes[0]).Description;
+ }
+ }
+
+ public string AssemblyProduct
+ {
+ get
+ {
+ // Get all Product attributes on this assembly
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
+ // If there aren't any Product attributes, return an empty string
+ if (attributes.Length == 0)
+ return "";
+ // If there is a Product attribute, return its value
+ return ((AssemblyProductAttribute)attributes[0]).Product;
+ }
+ }
+
+ public string AssemblyCopyright
+ {
+ get
+ {
+ // Get all Copyright attributes on this assembly
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
+ // If there aren't any Copyright attributes, return an empty string
+ if (attributes.Length == 0)
+ return "";
+ // If there is a Copyright attribute, return its value
+ return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
+ }
+ }
+
+ public string AssemblyCompany
+ {
+ get
+ {
+ // Get all Company attributes on this assembly
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
+ // If there aren't any Company attributes, return an empty string
+ if (attributes.Length == 0)
+ return "";
+ // If there is a Company attribute, return its value
+ return ((AssemblyCompanyAttribute)attributes[0]).Company;
+ }
+ }
+ #endregion
+ }
+}
diff --git a/ActionsDemo/AboutBox.resx b/ActionsDemo/AboutBox.resx
new file mode 100644
index 0000000..a152569
--- /dev/null
+++ b/ActionsDemo/AboutBox.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ The purpose of this simple RTF editor is to demonstrate a possible usage of Crad's Actions for .NET 2.0.
+Crad's Actions are absolutely free and released under Common Public License 1.0.
+
+If you want more informations, you can catch some at the URL
+http://blogs.ugidotnet.org/crad/category/1935.aspx
+or subscribing the feed
+http://blogs.ugidotnet.org/crad/category/1935.aspx/rss
+
+Any kind of feedback about this work is really appreciated. Eventually, you can contact me using "Contacts" section on my personal blog:
+http://blogs.ugidotnet.org/crad/contact.aspx
+
+
\ No newline at end of file
diff --git a/ActionsDemo/Crad.Windows.Forms.Actions.Sample.csproj b/ActionsDemo/Crad.Windows.Forms.Actions.Sample.csproj
new file mode 100644
index 0000000..4c7ff77
--- /dev/null
+++ b/ActionsDemo/Crad.Windows.Forms.Actions.Sample.csproj
@@ -0,0 +1,153 @@
+
+
+
+ Debug
+ AnyCPU
+ 8.0.50727
+ 2.0
+ {88AB67C7-A0CF-4811-BC0F-7F908A38E9CF}
+ WinExe
+ Properties
+ Crad.Windows.Forms.Actions.Sample
+ Crad.Windows.Forms.Actions.Sample
+ Crad.Windows.Forms.Actions.Sample.Program
+
+
+
+
+
+
+
+
+ v2.0
+
+
+
+
+ 2.0
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ AboutBox.cs
+
+
+ Form
+
+
+ EditorForm.cs
+
+
+
+
+ Designer
+ AboutBox.cs
+
+
+ Designer
+ EditorForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {6e50d1bd-d8ea-4992-8b25-c5a0d7e179a5}
+ Crad.Windows.Forms.Actions
+
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/ActionsDemo/EditorForm.Designer.cs b/ActionsDemo/EditorForm.Designer.cs
new file mode 100644
index 0000000..fbf8e17
--- /dev/null
+++ b/ActionsDemo/EditorForm.Designer.cs
@@ -0,0 +1,1020 @@
+namespace Crad.Windows.Forms.Actions.Sample
+{
+ partial class EditorForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #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()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditorForm));
+ this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
+ this.richTextBox1 = new System.Windows.Forms.RichTextBox();
+ this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem16 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripMenuItem17 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem18 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem19 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem20 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripMenuItem21 = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
+ this.formattingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem22 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem23 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem25 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem26 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem27 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripMenuItem24 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem28 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem29 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem30 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem31 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton5 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripButton6 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton7 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton8 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripButton9 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton10 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton11 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripButton12 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton13 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButton14 = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
+ this.actionList1 = new Crad.Windows.Forms.Actions.ActionList();
+ this.undoAction1 = new Crad.Windows.Forms.Actions.UndoAction();
+ this.redoAction1 = new Crad.Windows.Forms.Actions.RedoAction();
+ this.cutAction1 = new Crad.Windows.Forms.Actions.CutAction();
+ this.copyAction1 = new Crad.Windows.Forms.Actions.CopyAction();
+ this.pasteAction1 = new Crad.Windows.Forms.Actions.PasteAction();
+ this.deleteAction1 = new Crad.Windows.Forms.Actions.DeleteAction();
+ this.selectAllAction1 = new Crad.Windows.Forms.Actions.SelectAllAction();
+ this.actNew = new Crad.Windows.Forms.Actions.Action();
+ this.actLoad = new Crad.Windows.Forms.Actions.Action();
+ this.actSave = new Crad.Windows.Forms.Actions.Action();
+ this.actSaveAs = new Crad.Windows.Forms.Actions.Action();
+ this.actExit = new Crad.Windows.Forms.Actions.Action();
+ this.actSelectFont = new Crad.Windows.Forms.Actions.Action();
+ this.boldAction1 = new Crad.Windows.Forms.Actions.BoldAction();
+ this.italicAction1 = new Crad.Windows.Forms.Actions.ItalicAction();
+ this.underlineAction1 = new Crad.Windows.Forms.Actions.UnderlineAction();
+ this.alignLeftAction1 = new Crad.Windows.Forms.Actions.AlignLeftAction();
+ this.alignCenterAction1 = new Crad.Windows.Forms.Actions.AlignCenterAction();
+ this.alignRightAction1 = new Crad.Windows.Forms.Actions.AlignRightAction();
+ this.actAbout = new Crad.Windows.Forms.Actions.Action();
+ this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
+ this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
+ this.fontDialog1 = new System.Windows.Forms.FontDialog();
+ this.toolStripContainer1.ContentPanel.SuspendLayout();
+ this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
+ this.toolStripContainer1.SuspendLayout();
+ this.contextMenuStrip1.SuspendLayout();
+ this.menuStrip1.SuspendLayout();
+ this.toolStrip1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.actionList1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // toolStripContainer1
+ //
+ //
+ // toolStripContainer1.ContentPanel
+ //
+ this.toolStripContainer1.ContentPanel.Controls.Add(this.richTextBox1);
+ this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(583, 327);
+ this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.toolStripContainer1.Location = new System.Drawing.Point(0, 0);
+ this.toolStripContainer1.Name = "toolStripContainer1";
+ this.toolStripContainer1.Size = new System.Drawing.Size(583, 376);
+ this.toolStripContainer1.TabIndex = 0;
+ this.toolStripContainer1.Text = "toolStripContainer1";
+ //
+ // toolStripContainer1.TopToolStripPanel
+ //
+ this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.menuStrip1);
+ this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
+ //
+ // richTextBox1
+ //
+ this.richTextBox1.ContextMenuStrip = this.contextMenuStrip1;
+ this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.richTextBox1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.richTextBox1.Location = new System.Drawing.Point(0, 0);
+ this.richTextBox1.Name = "richTextBox1";
+ this.richTextBox1.Size = new System.Drawing.Size(583, 327);
+ this.richTextBox1.TabIndex = 0;
+ this.richTextBox1.Text = resources.GetString("richTextBox1.Text");
+ this.richTextBox1.TextChanged += new System.EventHandler(this.richTextBox1_TextChanged);
+ //
+ // contextMenuStrip1
+ //
+ this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem15,
+ this.toolStripMenuItem16,
+ this.toolStripSeparator9,
+ this.toolStripMenuItem17,
+ this.toolStripMenuItem18,
+ this.toolStripMenuItem19,
+ this.toolStripMenuItem20,
+ this.toolStripSeparator10,
+ this.toolStripMenuItem21});
+ this.contextMenuStrip1.Name = "contextMenuStrip1";
+ this.contextMenuStrip1.Size = new System.Drawing.Size(206, 170);
+ //
+ // toolStripMenuItem15
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem15, this.undoAction1);
+ this.toolStripMenuItem15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem15.Image")));
+ this.toolStripMenuItem15.Name = "toolStripMenuItem15";
+ this.toolStripMenuItem15.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
+ this.toolStripMenuItem15.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem15.Text = "&Undo";
+ //
+ // toolStripMenuItem16
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem16, this.redoAction1);
+ this.toolStripMenuItem16.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem16.Image")));
+ this.toolStripMenuItem16.Name = "toolStripMenuItem16";
+ this.toolStripMenuItem16.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
+ this.toolStripMenuItem16.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem16.Text = "&Redo";
+ //
+ // toolStripSeparator9
+ //
+ this.toolStripSeparator9.Name = "toolStripSeparator9";
+ this.toolStripSeparator9.Size = new System.Drawing.Size(202, 6);
+ //
+ // toolStripMenuItem17
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem17, this.cutAction1);
+ this.toolStripMenuItem17.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem17.Image")));
+ this.toolStripMenuItem17.Name = "toolStripMenuItem17";
+ this.toolStripMenuItem17.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
+ this.toolStripMenuItem17.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem17.Text = "&Cut";
+ //
+ // toolStripMenuItem18
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem18, this.copyAction1);
+ this.toolStripMenuItem18.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem18.Image")));
+ this.toolStripMenuItem18.Name = "toolStripMenuItem18";
+ this.toolStripMenuItem18.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
+ this.toolStripMenuItem18.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem18.Text = "&Copy";
+ //
+ // toolStripMenuItem19
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem19, this.pasteAction1);
+ this.toolStripMenuItem19.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem19.Image")));
+ this.toolStripMenuItem19.Name = "toolStripMenuItem19";
+ this.toolStripMenuItem19.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
+ this.toolStripMenuItem19.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem19.Text = "&Paste";
+ //
+ // toolStripMenuItem20
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem20, this.deleteAction1);
+ this.toolStripMenuItem20.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem20.Image")));
+ this.toolStripMenuItem20.Name = "toolStripMenuItem20";
+ this.toolStripMenuItem20.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this.toolStripMenuItem20.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem20.Text = "&Delete";
+ //
+ // toolStripSeparator10
+ //
+ this.toolStripSeparator10.Name = "toolStripSeparator10";
+ this.toolStripSeparator10.Size = new System.Drawing.Size(202, 6);
+ //
+ // toolStripMenuItem21
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem21, this.selectAllAction1);
+ this.toolStripMenuItem21.Name = "toolStripMenuItem21";
+ this.toolStripMenuItem21.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad5)));
+ this.toolStripMenuItem21.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem21.Text = "Select &All";
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.Dock = System.Windows.Forms.DockStyle.None;
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.fileToolStripMenuItem,
+ this.toolStripMenuItem1,
+ this.formattingToolStripMenuItem,
+ this.toolStripMenuItem2});
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Size = new System.Drawing.Size(583, 24);
+ this.menuStrip1.TabIndex = 0;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // fileToolStripMenuItem
+ //
+ this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem3,
+ this.toolStripMenuItem4,
+ this.toolStripMenuItem5,
+ this.toolStripMenuItem6,
+ this.toolStripSeparator1,
+ this.toolStripMenuItem7});
+ this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+ this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20);
+ this.fileToolStripMenuItem.Text = "&File";
+ //
+ // toolStripMenuItem3
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem3, this.actNew);
+ this.toolStripMenuItem3.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.New;
+ this.toolStripMenuItem3.Name = "toolStripMenuItem3";
+ this.toolStripMenuItem3.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
+ this.toolStripMenuItem3.Size = new System.Drawing.Size(145, 22);
+ this.toolStripMenuItem3.Text = "&New";
+ //
+ // toolStripMenuItem4
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem4, this.actLoad);
+ this.toolStripMenuItem4.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Open;
+ this.toolStripMenuItem4.Name = "toolStripMenuItem4";
+ this.toolStripMenuItem4.Size = new System.Drawing.Size(145, 22);
+ this.toolStripMenuItem4.Text = "&Open...";
+ //
+ // toolStripMenuItem5
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem5, this.actSave);
+ this.toolStripMenuItem5.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Save;
+ this.toolStripMenuItem5.Name = "toolStripMenuItem5";
+ this.toolStripMenuItem5.Size = new System.Drawing.Size(145, 22);
+ this.toolStripMenuItem5.Text = "&Save";
+ //
+ // toolStripMenuItem6
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem6, this.actSaveAs);
+ this.toolStripMenuItem6.Name = "toolStripMenuItem6";
+ this.toolStripMenuItem6.Size = new System.Drawing.Size(145, 22);
+ this.toolStripMenuItem6.Text = "Save &As...";
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(142, 6);
+ //
+ // toolStripMenuItem7
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem7, this.actExit);
+ this.toolStripMenuItem7.Name = "toolStripMenuItem7";
+ this.toolStripMenuItem7.Size = new System.Drawing.Size(145, 22);
+ this.toolStripMenuItem7.Text = "&Exit";
+ //
+ // toolStripMenuItem1
+ //
+ this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem8,
+ this.toolStripMenuItem9,
+ this.toolStripSeparator3,
+ this.toolStripMenuItem10,
+ this.toolStripMenuItem11,
+ this.toolStripMenuItem12,
+ this.toolStripMenuItem13,
+ this.toolStripSeparator4,
+ this.toolStripMenuItem14});
+ this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(37, 20);
+ this.toolStripMenuItem1.Text = "&Edit";
+ //
+ // toolStripMenuItem8
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem8, this.undoAction1);
+ this.toolStripMenuItem8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem8.Image")));
+ this.toolStripMenuItem8.Name = "toolStripMenuItem8";
+ this.toolStripMenuItem8.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
+ this.toolStripMenuItem8.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem8.Text = "&Undo";
+ //
+ // toolStripMenuItem9
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem9, this.redoAction1);
+ this.toolStripMenuItem9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem9.Image")));
+ this.toolStripMenuItem9.Name = "toolStripMenuItem9";
+ this.toolStripMenuItem9.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
+ this.toolStripMenuItem9.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem9.Text = "&Redo";
+ //
+ // toolStripSeparator3
+ //
+ this.toolStripSeparator3.Name = "toolStripSeparator3";
+ this.toolStripSeparator3.Size = new System.Drawing.Size(202, 6);
+ //
+ // toolStripMenuItem10
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem10, this.cutAction1);
+ this.toolStripMenuItem10.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem10.Image")));
+ this.toolStripMenuItem10.Name = "toolStripMenuItem10";
+ this.toolStripMenuItem10.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
+ this.toolStripMenuItem10.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem10.Text = "&Cut";
+ //
+ // toolStripMenuItem11
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem11, this.copyAction1);
+ this.toolStripMenuItem11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem11.Image")));
+ this.toolStripMenuItem11.Name = "toolStripMenuItem11";
+ this.toolStripMenuItem11.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
+ this.toolStripMenuItem11.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem11.Text = "&Copy";
+ //
+ // toolStripMenuItem12
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem12, this.pasteAction1);
+ this.toolStripMenuItem12.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem12.Image")));
+ this.toolStripMenuItem12.Name = "toolStripMenuItem12";
+ this.toolStripMenuItem12.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
+ this.toolStripMenuItem12.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem12.Text = "&Paste";
+ //
+ // toolStripMenuItem13
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem13, this.deleteAction1);
+ this.toolStripMenuItem13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem13.Image")));
+ this.toolStripMenuItem13.Name = "toolStripMenuItem13";
+ this.toolStripMenuItem13.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this.toolStripMenuItem13.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem13.Text = "&Delete";
+ //
+ // toolStripSeparator4
+ //
+ this.toolStripSeparator4.Name = "toolStripSeparator4";
+ this.toolStripSeparator4.Size = new System.Drawing.Size(202, 6);
+ //
+ // toolStripMenuItem14
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem14, this.selectAllAction1);
+ this.toolStripMenuItem14.Name = "toolStripMenuItem14";
+ this.toolStripMenuItem14.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad5)));
+ this.toolStripMenuItem14.Size = new System.Drawing.Size(205, 22);
+ this.toolStripMenuItem14.Text = "Select &All";
+ //
+ // formattingToolStripMenuItem
+ //
+ this.formattingToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem22,
+ this.toolStripMenuItem23,
+ this.toolStripSeparator11,
+ this.toolStripMenuItem24});
+ this.formattingToolStripMenuItem.Name = "formattingToolStripMenuItem";
+ this.formattingToolStripMenuItem.Size = new System.Drawing.Size(71, 20);
+ this.formattingToolStripMenuItem.Text = "For&matting";
+ //
+ // toolStripMenuItem22
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem22, this.actSelectFont);
+ this.toolStripMenuItem22.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Font;
+ this.toolStripMenuItem22.Name = "toolStripMenuItem22";
+ this.toolStripMenuItem22.Size = new System.Drawing.Size(156, 22);
+ this.toolStripMenuItem22.Text = "Select &font...";
+ //
+ // toolStripMenuItem23
+ //
+ this.toolStripMenuItem23.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem25,
+ this.toolStripMenuItem26,
+ this.toolStripMenuItem27});
+ this.toolStripMenuItem23.Name = "toolStripMenuItem23";
+ this.toolStripMenuItem23.Size = new System.Drawing.Size(156, 22);
+ this.toolStripMenuItem23.Text = "Font style";
+ //
+ // toolStripMenuItem25
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem25, this.boldAction1);
+ this.toolStripMenuItem25.CheckOnClick = true;
+ this.toolStripMenuItem25.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem25.Image")));
+ this.toolStripMenuItem25.Name = "toolStripMenuItem25";
+ this.toolStripMenuItem25.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B)));
+ this.toolStripMenuItem25.Size = new System.Drawing.Size(169, 22);
+ this.toolStripMenuItem25.Text = "&Bold";
+ //
+ // toolStripMenuItem26
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem26, this.italicAction1);
+ this.toolStripMenuItem26.CheckOnClick = true;
+ this.toolStripMenuItem26.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem26.Image")));
+ this.toolStripMenuItem26.Name = "toolStripMenuItem26";
+ this.toolStripMenuItem26.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I)));
+ this.toolStripMenuItem26.Size = new System.Drawing.Size(169, 22);
+ this.toolStripMenuItem26.Text = "&Italic";
+ //
+ // toolStripMenuItem27
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem27, this.underlineAction1);
+ this.toolStripMenuItem27.CheckOnClick = true;
+ this.toolStripMenuItem27.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem27.Image")));
+ this.toolStripMenuItem27.Name = "toolStripMenuItem27";
+ this.toolStripMenuItem27.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U)));
+ this.toolStripMenuItem27.Size = new System.Drawing.Size(169, 22);
+ this.toolStripMenuItem27.Text = "&Underline";
+ //
+ // toolStripSeparator11
+ //
+ this.toolStripSeparator11.Name = "toolStripSeparator11";
+ this.toolStripSeparator11.Size = new System.Drawing.Size(153, 6);
+ //
+ // toolStripMenuItem24
+ //
+ this.toolStripMenuItem24.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem28,
+ this.toolStripMenuItem29,
+ this.toolStripMenuItem30});
+ this.toolStripMenuItem24.Name = "toolStripMenuItem24";
+ this.toolStripMenuItem24.Size = new System.Drawing.Size(156, 22);
+ this.toolStripMenuItem24.Text = "Text alignment";
+ //
+ // toolStripMenuItem28
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem28, this.alignLeftAction1);
+ this.toolStripMenuItem28.CheckOnClick = true;
+ this.toolStripMenuItem28.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem28.Image")));
+ this.toolStripMenuItem28.Name = "toolStripMenuItem28";
+ this.toolStripMenuItem28.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T)));
+ this.toolStripMenuItem28.Size = new System.Drawing.Size(157, 22);
+ this.toolStripMenuItem28.Text = "&Left";
+ //
+ // toolStripMenuItem29
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem29, this.alignCenterAction1);
+ this.toolStripMenuItem29.CheckOnClick = true;
+ this.toolStripMenuItem29.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem29.Image")));
+ this.toolStripMenuItem29.Name = "toolStripMenuItem29";
+ this.toolStripMenuItem29.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A)));
+ this.toolStripMenuItem29.Size = new System.Drawing.Size(157, 22);
+ this.toolStripMenuItem29.Text = "&Center";
+ //
+ // toolStripMenuItem30
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem30, this.alignRightAction1);
+ this.toolStripMenuItem30.CheckOnClick = true;
+ this.toolStripMenuItem30.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem30.Image")));
+ this.toolStripMenuItem30.Name = "toolStripMenuItem30";
+ this.toolStripMenuItem30.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
+ this.toolStripMenuItem30.Size = new System.Drawing.Size(157, 22);
+ this.toolStripMenuItem30.Text = "&Right";
+ //
+ // toolStripMenuItem2
+ //
+ this.toolStripMenuItem2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem31});
+ this.toolStripMenuItem2.Name = "toolStripMenuItem2";
+ this.toolStripMenuItem2.Size = new System.Drawing.Size(40, 20);
+ this.toolStripMenuItem2.Text = "&Help";
+ //
+ // toolStripMenuItem31
+ //
+ this.actionList1.SetAction(this.toolStripMenuItem31, this.actAbout);
+ this.toolStripMenuItem31.Name = "toolStripMenuItem31";
+ this.toolStripMenuItem31.Size = new System.Drawing.Size(114, 22);
+ this.toolStripMenuItem31.Text = "About";
+ //
+ // toolStrip1
+ //
+ this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
+ this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripButton1,
+ this.toolStripButton2,
+ this.toolStripButton3,
+ this.toolStripSeparator2,
+ this.toolStripButton4,
+ this.toolStripButton5,
+ this.toolStripSeparator5,
+ this.toolStripButton6,
+ this.toolStripButton7,
+ this.toolStripButton8,
+ this.toolStripSeparator6,
+ this.toolStripButton9,
+ this.toolStripButton10,
+ this.toolStripButton11,
+ this.toolStripSeparator7,
+ this.toolStripButton12,
+ this.toolStripButton13,
+ this.toolStripButton14,
+ this.toolStripSeparator8});
+ this.toolStrip1.Location = new System.Drawing.Point(3, 24);
+ this.toolStrip1.Name = "toolStrip1";
+ this.toolStrip1.Size = new System.Drawing.Size(364, 25);
+ this.toolStrip1.TabIndex = 0;
+ this.toolStrip1.Text = "toolStrip1";
+ //
+ // toolStripButton1
+ //
+ this.actionList1.SetAction(this.toolStripButton1, this.actNew);
+ this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton1.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.New;
+ this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton1.Name = "toolStripButton1";
+ this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton1.Text = "&New";
+ //
+ // toolStripButton2
+ //
+ this.actionList1.SetAction(this.toolStripButton2, this.actLoad);
+ this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton2.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Open;
+ this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton2.Name = "toolStripButton2";
+ this.toolStripButton2.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton2.Text = "&Open...";
+ //
+ // toolStripButton3
+ //
+ this.actionList1.SetAction(this.toolStripButton3, this.actSave);
+ this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton3.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Save;
+ this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton3.Name = "toolStripButton3";
+ this.toolStripButton3.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton3.Text = "&Save";
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripButton4
+ //
+ this.actionList1.SetAction(this.toolStripButton4, this.undoAction1);
+ this.toolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton4.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton4.Image")));
+ this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton4.Name = "toolStripButton4";
+ this.toolStripButton4.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton4.Text = "&Undo";
+ //
+ // toolStripButton5
+ //
+ this.actionList1.SetAction(this.toolStripButton5, this.redoAction1);
+ this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton5.Image")));
+ this.toolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton5.Name = "toolStripButton5";
+ this.toolStripButton5.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton5.Text = "&Redo";
+ //
+ // toolStripSeparator5
+ //
+ this.toolStripSeparator5.Name = "toolStripSeparator5";
+ this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripButton6
+ //
+ this.actionList1.SetAction(this.toolStripButton6, this.cutAction1);
+ this.toolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton6.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton6.Image")));
+ this.toolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton6.Name = "toolStripButton6";
+ this.toolStripButton6.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton6.Text = "&Cut";
+ //
+ // toolStripButton7
+ //
+ this.actionList1.SetAction(this.toolStripButton7, this.copyAction1);
+ this.toolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image")));
+ this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton7.Name = "toolStripButton7";
+ this.toolStripButton7.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton7.Text = "&Copy";
+ //
+ // toolStripButton8
+ //
+ this.actionList1.SetAction(this.toolStripButton8, this.pasteAction1);
+ this.toolStripButton8.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton8.Image")));
+ this.toolStripButton8.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton8.Name = "toolStripButton8";
+ this.toolStripButton8.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton8.Text = "&Paste";
+ //
+ // toolStripSeparator6
+ //
+ this.toolStripSeparator6.Name = "toolStripSeparator6";
+ this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripButton9
+ //
+ this.actionList1.SetAction(this.toolStripButton9, this.boldAction1);
+ this.toolStripButton9.CheckOnClick = true;
+ this.toolStripButton9.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton9.Image")));
+ this.toolStripButton9.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton9.Name = "toolStripButton9";
+ this.toolStripButton9.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton9.Text = "&Bold";
+ //
+ // toolStripButton10
+ //
+ this.actionList1.SetAction(this.toolStripButton10, this.italicAction1);
+ this.toolStripButton10.CheckOnClick = true;
+ this.toolStripButton10.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton10.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton10.Image")));
+ this.toolStripButton10.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton10.Name = "toolStripButton10";
+ this.toolStripButton10.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton10.Text = "&Italic";
+ //
+ // toolStripButton11
+ //
+ this.actionList1.SetAction(this.toolStripButton11, this.underlineAction1);
+ this.toolStripButton11.CheckOnClick = true;
+ this.toolStripButton11.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton11.Image")));
+ this.toolStripButton11.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton11.Name = "toolStripButton11";
+ this.toolStripButton11.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton11.Text = "&Underline";
+ //
+ // toolStripSeparator7
+ //
+ this.toolStripSeparator7.Name = "toolStripSeparator7";
+ this.toolStripSeparator7.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripButton12
+ //
+ this.actionList1.SetAction(this.toolStripButton12, this.alignLeftAction1);
+ this.toolStripButton12.CheckOnClick = true;
+ this.toolStripButton12.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton12.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton12.Image")));
+ this.toolStripButton12.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton12.Name = "toolStripButton12";
+ this.toolStripButton12.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton12.Text = "&Left";
+ //
+ // toolStripButton13
+ //
+ this.actionList1.SetAction(this.toolStripButton13, this.alignCenterAction1);
+ this.toolStripButton13.CheckOnClick = true;
+ this.toolStripButton13.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton13.Image")));
+ this.toolStripButton13.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton13.Name = "toolStripButton13";
+ this.toolStripButton13.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton13.Text = "&Center";
+ //
+ // toolStripButton14
+ //
+ this.actionList1.SetAction(this.toolStripButton14, this.alignRightAction1);
+ this.toolStripButton14.CheckOnClick = true;
+ this.toolStripButton14.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripButton14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton14.Image")));
+ this.toolStripButton14.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButton14.Name = "toolStripButton14";
+ this.toolStripButton14.Size = new System.Drawing.Size(23, 22);
+ this.toolStripButton14.Text = "&Right";
+ //
+ // toolStripSeparator8
+ //
+ this.toolStripSeparator8.Name = "toolStripSeparator8";
+ this.toolStripSeparator8.Size = new System.Drawing.Size(6, 25);
+ //
+ // actionList1
+ //
+ this.actionList1.Actions.Add(this.actNew);
+ this.actionList1.Actions.Add(this.actLoad);
+ this.actionList1.Actions.Add(this.actSave);
+ this.actionList1.Actions.Add(this.actSaveAs);
+ this.actionList1.Actions.Add(this.actExit);
+ this.actionList1.Actions.Add(this.undoAction1);
+ this.actionList1.Actions.Add(this.redoAction1);
+ this.actionList1.Actions.Add(this.copyAction1);
+ this.actionList1.Actions.Add(this.pasteAction1);
+ this.actionList1.Actions.Add(this.cutAction1);
+ this.actionList1.Actions.Add(this.deleteAction1);
+ this.actionList1.Actions.Add(this.boldAction1);
+ this.actionList1.Actions.Add(this.italicAction1);
+ this.actionList1.Actions.Add(this.underlineAction1);
+ this.actionList1.Actions.Add(this.alignCenterAction1);
+ this.actionList1.Actions.Add(this.alignLeftAction1);
+ this.actionList1.Actions.Add(this.alignRightAction1);
+ this.actionList1.Actions.Add(this.selectAllAction1);
+ this.actionList1.Actions.Add(this.actSelectFont);
+ this.actionList1.Actions.Add(this.actAbout);
+ this.actionList1.ContainerControl = this;
+ //
+ // undoAction1
+ //
+ this.undoAction1.Image = ((System.Drawing.Image)(resources.GetObject("undoAction1.Image")));
+ this.undoAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
+ this.undoAction1.Text = "&Undo";
+ this.undoAction1.ToolTipText = "Undo";
+ //
+ // redoAction1
+ //
+ this.redoAction1.Image = ((System.Drawing.Image)(resources.GetObject("redoAction1.Image")));
+ this.redoAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
+ this.redoAction1.Text = "&Redo";
+ this.redoAction1.ToolTipText = "Redo";
+ //
+ // cutAction1
+ //
+ this.cutAction1.Image = ((System.Drawing.Image)(resources.GetObject("cutAction1.Image")));
+ this.cutAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
+ this.cutAction1.Text = "&Cut";
+ this.cutAction1.ToolTipText = "Cut";
+ //
+ // copyAction1
+ //
+ this.copyAction1.Image = ((System.Drawing.Image)(resources.GetObject("copyAction1.Image")));
+ this.copyAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
+ this.copyAction1.Text = "&Copy";
+ this.copyAction1.ToolTipText = "Copy";
+ //
+ // pasteAction1
+ //
+ this.pasteAction1.Image = ((System.Drawing.Image)(resources.GetObject("pasteAction1.Image")));
+ this.pasteAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
+ this.pasteAction1.Text = "&Paste";
+ this.pasteAction1.ToolTipText = "Paste";
+ //
+ // deleteAction1
+ //
+ this.deleteAction1.Image = ((System.Drawing.Image)(resources.GetObject("deleteAction1.Image")));
+ this.deleteAction1.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this.deleteAction1.Text = "&Delete";
+ this.deleteAction1.ToolTipText = "Delete";
+ //
+ // selectAllAction1
+ //
+ this.selectAllAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad5)));
+ this.selectAllAction1.Text = "Select &All";
+ this.selectAllAction1.ToolTipText = "Select All";
+ //
+ // actNew
+ //
+ this.actNew.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.New;
+ this.actNew.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
+ this.actNew.Text = "&New";
+ this.actNew.ToolTipText = "New RTF File";
+ this.actNew.Execute += new System.EventHandler(this.actNew_Execute);
+ this.actNew.BeforeExecute += new System.ComponentModel.CancelEventHandler(this.actNew_BeforeExecute);
+ //
+ // actLoad
+ //
+ this.actLoad.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Open;
+ this.actLoad.Text = "&Open...";
+ this.actLoad.ToolTipText = "Open a RTF File...";
+ this.actLoad.Execute += new System.EventHandler(this.actLoad_Execute);
+ this.actLoad.BeforeExecute += new System.ComponentModel.CancelEventHandler(this.actLoad_BeforeExecute);
+ //
+ // actSave
+ //
+ this.actSave.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Save;
+ this.actSave.Text = "&Save";
+ this.actSave.ToolTipText = "Save the RTF File";
+ this.actSave.Execute += new System.EventHandler(this.actSave_Execute);
+ this.actSave.Update += new System.EventHandler(this.actSave_Update);
+ //
+ // actSaveAs
+ //
+ this.actSaveAs.Text = "Save &As...";
+ this.actSaveAs.ToolTipText = "Save the RTF File with a given name";
+ this.actSaveAs.Execute += new System.EventHandler(this.actSaveAs_Execute);
+ //
+ // actExit
+ //
+ this.actExit.Text = "&Exit";
+ this.actExit.ToolTipText = "Exit";
+ this.actExit.Execute += new System.EventHandler(this.actExit_Execute);
+ //
+ // actSelectFont
+ //
+ this.actSelectFont.Image = global::Crad.Windows.Forms.Actions.Sample.Properties.Resources.Font;
+ this.actSelectFont.Text = "Select &font...";
+ this.actSelectFont.ToolTipText = "Select font";
+ this.actSelectFont.Execute += new System.EventHandler(this.actSelectFont_Execute);
+ //
+ // boldAction1
+ //
+ this.boldAction1.CheckOnClick = true;
+ this.boldAction1.Image = ((System.Drawing.Image)(resources.GetObject("boldAction1.Image")));
+ this.boldAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B)));
+ this.boldAction1.Text = "&Bold";
+ this.boldAction1.ToolTipText = "Bold";
+ //
+ // italicAction1
+ //
+ this.italicAction1.CheckOnClick = true;
+ this.italicAction1.Image = ((System.Drawing.Image)(resources.GetObject("italicAction1.Image")));
+ this.italicAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I)));
+ this.italicAction1.Text = "&Italic";
+ this.italicAction1.ToolTipText = "Italic";
+ //
+ // underlineAction1
+ //
+ this.underlineAction1.CheckOnClick = true;
+ this.underlineAction1.Image = ((System.Drawing.Image)(resources.GetObject("underlineAction1.Image")));
+ this.underlineAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U)));
+ this.underlineAction1.Text = "&Underline";
+ this.underlineAction1.ToolTipText = "Underline";
+ //
+ // alignLeftAction1
+ //
+ this.alignLeftAction1.CheckOnClick = true;
+ this.alignLeftAction1.Image = ((System.Drawing.Image)(resources.GetObject("alignLeftAction1.Image")));
+ this.alignLeftAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T)));
+ this.alignLeftAction1.Text = "&Left";
+ this.alignLeftAction1.ToolTipText = "Left alignment";
+ //
+ // alignCenterAction1
+ //
+ this.alignCenterAction1.CheckOnClick = true;
+ this.alignCenterAction1.Image = ((System.Drawing.Image)(resources.GetObject("alignCenterAction1.Image")));
+ this.alignCenterAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A)));
+ this.alignCenterAction1.Text = "&Center";
+ this.alignCenterAction1.ToolTipText = "Center alignment";
+ //
+ // alignRightAction1
+ //
+ this.alignRightAction1.CheckOnClick = true;
+ this.alignRightAction1.Image = ((System.Drawing.Image)(resources.GetObject("alignRightAction1.Image")));
+ this.alignRightAction1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
+ this.alignRightAction1.Text = "&Right";
+ this.alignRightAction1.ToolTipText = "Right alignment";
+ //
+ // actAbout
+ //
+ this.actAbout.Text = "About";
+ this.actAbout.Execute += new System.EventHandler(this.actAbout_Execute);
+ //
+ // saveFileDialog1
+ //
+ this.saveFileDialog1.DefaultExt = "rtf";
+ this.saveFileDialog1.Filter = "RichTextFormat|*.rtf|All files|*.*";
+ //
+ // openFileDialog1
+ //
+ this.openFileDialog1.DefaultExt = "rtf";
+ this.openFileDialog1.FileName = "openFileDialog1";
+ this.openFileDialog1.Filter = "RichTextFormat|*.rtf|All files|*.*";
+ //
+ // EditorForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(583, 376);
+ this.Controls.Add(this.toolStripContainer1);
+ this.Name = "EditorForm";
+ this.Text = "EditorForm";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.EditorForm_FormClosing);
+ this.toolStripContainer1.ContentPanel.ResumeLayout(false);
+ this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false);
+ this.toolStripContainer1.TopToolStripPanel.PerformLayout();
+ this.toolStripContainer1.ResumeLayout(false);
+ this.toolStripContainer1.PerformLayout();
+ this.contextMenuStrip1.ResumeLayout(false);
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
+ this.toolStrip1.ResumeLayout(false);
+ this.toolStrip1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.actionList1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ToolStripContainer toolStripContainer1;
+ private System.Windows.Forms.ToolStrip toolStrip1;
+ private System.Windows.Forms.MenuStrip menuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
+ private ActionList actionList1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
+ private System.Windows.Forms.RichTextBox richTextBox1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem6;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7;
+ private Action actNew;
+ private Action actLoad;
+ private Action actSave;
+ private Action actSaveAs;
+ private Action actExit;
+ private UndoAction undoAction1;
+ private RedoAction redoAction1;
+ private CopyAction copyAction1;
+ private PasteAction pasteAction1;
+ private CutAction cutAction1;
+ private System.Windows.Forms.ToolStripButton toolStripButton1;
+ private System.Windows.Forms.ToolStripButton toolStripButton2;
+ private System.Windows.Forms.ToolStripButton toolStripButton3;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private DeleteAction deleteAction1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem10;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14;
+ private System.Windows.Forms.ToolStripButton toolStripButton4;
+ private System.Windows.Forms.ToolStripButton toolStripButton5;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+ private System.Windows.Forms.ToolStripButton toolStripButton6;
+ private System.Windows.Forms.ToolStripButton toolStripButton7;
+ private System.Windows.Forms.ToolStripButton toolStripButton8;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
+ private BoldAction boldAction1;
+ private ItalicAction italicAction1;
+ private UnderlineAction underlineAction1;
+ private System.Windows.Forms.ToolStripMenuItem formattingToolStripMenuItem;
+ private System.Windows.Forms.ToolStripButton toolStripButton9;
+ private System.Windows.Forms.ToolStripButton toolStripButton10;
+ private System.Windows.Forms.ToolStripButton toolStripButton11;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
+ private AlignCenterAction alignCenterAction1;
+ private AlignLeftAction alignLeftAction1;
+ private System.Windows.Forms.ToolStripButton toolStripButton12;
+ private System.Windows.Forms.ToolStripButton toolStripButton13;
+ private System.Windows.Forms.ToolStripButton toolStripButton14;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
+ private AlignRightAction alignRightAction1;
+ private SelectAllAction selectAllAction1;
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem16;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem17;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem18;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem19;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem20;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem21;
+ private System.Windows.Forms.SaveFileDialog saveFileDialog1;
+ private System.Windows.Forms.OpenFileDialog openFileDialog1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem22;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem23;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem25;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem26;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem27;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem24;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem28;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem29;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem30;
+ private Action actSelectFont;
+ private System.Windows.Forms.FontDialog fontDialog1;
+ private Action actAbout;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem31;
+
+ }
+}
\ No newline at end of file
diff --git a/ActionsDemo/EditorForm.cs b/ActionsDemo/EditorForm.cs
new file mode 100644
index 0000000..f97346e
--- /dev/null
+++ b/ActionsDemo/EditorForm.cs
@@ -0,0 +1,172 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions.Sample
+{
+ public partial class EditorForm : Form
+ {
+ private bool _modified;
+ private bool modified
+ {
+ get { return _modified; }
+ set
+ {
+ if (_modified != value)
+ {
+ _modified = value;
+ buildFormTitle();
+ }
+ }
+ }
+
+ private string _fileName;
+ private string fileName
+ {
+ get
+ {
+ if (string.IsNullOrEmpty(_fileName))
+ return "Untitled Document";
+ else
+ return _fileName;
+ }
+ set
+ {
+ if (_fileName != value)
+ {
+ _fileName = value;
+ buildFormTitle();
+ }
+ }
+ }
+
+ private void buildFormTitle()
+ {
+ StringBuilder sb = new StringBuilder(Application.ProductName);
+ sb.Append(" - ");
+ sb.Append(fileName);
+ if (modified)
+ sb.Append(" *");
+ this.Text = sb.ToString();
+ }
+
+ public EditorForm()
+ {
+ InitializeComponent();
+ buildFormTitle();
+ actAbout.Text = string.Format("About {0}...", Application.ProductName);
+ }
+
+ private void richTextBox1_TextChanged(object sender, EventArgs e)
+ {
+ modified = true;
+ }
+
+ private void actNew_Execute(object sender, EventArgs e)
+ {
+ richTextBox1.Text = string.Empty;
+ fileName = string.Empty;
+ modified = false;
+ }
+
+ private void actNew_BeforeExecute(object sender, CancelEventArgs e)
+ {
+ askSaveChanges(e);
+ }
+
+ private void askSaveChanges(CancelEventArgs e)
+ {
+ DialogResult toSave = (modified ?
+ MessageBox.Show("Save changes?", Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) :
+ DialogResult.No);
+
+ if (toSave == DialogResult.Cancel)
+ {
+ e.Cancel = true;
+ return;
+ }
+
+ if (toSave == DialogResult.Yes)
+ {
+ actSave.DoExecute();
+ e.Cancel = modified; // this checks if user cancelled save
+ }
+ }
+
+ private void actSave_Update(object sender, EventArgs e)
+ {
+ actSave.Enabled = modified;
+ }
+
+ private void actSave_Execute(object sender, EventArgs e)
+ {
+ if (string.IsNullOrEmpty(_fileName))
+ actSaveAs.DoExecute();
+ else
+ saveRTF(_fileName);
+ }
+
+ private void saveRTF(string fileName)
+ {
+ richTextBox1.SaveFile(fileName);
+ this.fileName = fileName;
+ modified = false;
+ }
+
+ private void actSaveAs_Execute(object sender, EventArgs e)
+ {
+ saveFileDialog1.FileName = fileName;
+
+ if (saveFileDialog1.ShowDialog() == DialogResult.OK)
+ saveRTF(saveFileDialog1.FileName);
+ }
+
+ private void actLoad_BeforeExecute(object sender, CancelEventArgs e)
+ {
+ askSaveChanges(e);
+ }
+
+ private void actLoad_Execute(object sender, EventArgs e)
+ {
+ if (openFileDialog1.ShowDialog() == DialogResult.OK)
+ loadRTF(openFileDialog1.FileName);
+ }
+
+ private void loadRTF(string fileName)
+ {
+ richTextBox1.LoadFile(fileName);
+ this.fileName = fileName;
+ modified = false;
+ }
+
+ private void actExit_Execute(object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
+
+ private void actSelectFont_Execute(object sender, EventArgs e)
+ {
+ fontDialog1.Font = richTextBox1.SelectionFont;
+ if (fontDialog1.ShowDialog() == DialogResult.OK)
+ richTextBox1.SelectionFont = fontDialog1.Font;
+ }
+
+ private void EditorForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ CancelEventArgs cea = new CancelEventArgs(false);
+ askSaveChanges(cea);
+ e.Cancel = cea.Cancel;
+ }
+
+ private void actAbout_Execute(object sender, EventArgs e)
+ {
+ AboutBox f = new AboutBox();
+ f.ShowDialog();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/ActionsDemo/EditorForm.resx b/ActionsDemo/EditorForm.resx
new file mode 100644
index 0000000..2b14d2e
--- /dev/null
+++ b/ActionsDemo/EditorForm.resx
@@ -0,0 +1,639 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 560, 128
+
+
+ 225, 17
+
+
+ 329, 17
+
+
+ 417, 17
+
+
+ 507, 17
+
+
+ 597, 17
+
+
+ 112, 54
+
+
+ 196, 54
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAU1JREFUOE+1kDFy
+ wjAQRTlCbhBfAPAFCOqShrFLUjB2SYc63MllOrl0Z3XQWU0m6VCbCt8A3cB7g82uSWZggBAKNLOjYve/
+ /3d7vXs+/dGm2oIzn+ArB67eQFFv2uBfniwsLCD9Xq33xSDrAM5CijVg9dWGTNc1GBbPCgAhGxRzi/2Z
+ hVHmwbwDEMQfpSDiQ04A46BRqzZncVp4FNKR2OEgsW60sF6kBuO3bu4YwDRZepQloDQ/zqlFQTVMasn9
+ SNVBf2q6FGoF7uQO7Bjn7LyHDF60JbE4HOQ0FwFx7jGUewgnYaCq2hPARFGCNdiTBCLjnflgDkOKHk6p
+ 4gJ/BylNwD2+waLcdWv9+fiwhwOPz1qwCa94TXu2/zR3DbtHanvd/ZCQ6DYYL7YpiydZAze7R8udYHGc
+ NTh8reObAZQgHS+3OR3x6CY3g+4m+AaSPfHVJVQGYQAAAABJRU5ErkJggg==
+
+
+
+ 427, 54
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAVpJREFUOE/FkTFu
+ wkAQRXMELpDABQBfgOAmCQ3YJQ3BJRV2F3ebLnTrks7bhc7bRCIV26bCN2BvsP8Gmx1QIiMHEaRIGWmr
+ nf/+n5mrq7+qYmNaxQZZrqDEGpoXJmK5afyKT2KpABKyVeUJwEGisxAn1uIN6KUa7YmEP5O2N1eYZMDc
+ QeLchATJP4znJ6WtAYUDhAtYbyxsL5a6M5WKQF4kbZTBPi6hHSRyfaU/U9YlPh6NvUKR+/Ud1wErWuTQ
+ nRZJeyzghcKOXqATAZssnYmD1hJ8AW7uuap+OojfGXBJYkoSPh9S1gEryCED2i5B9ZO/Gy9bH5z34kRb
+ L8zqgHi5Sw47kLbZZ9/z0cJoZopNziRuDX4AkCtF9FNtmw/cr6aoLezUTQO23ae4nany7N1PNQzTEgTp
+ x9toys3+GhdVN8gbo1SXwwUQPO2ORrkIFDATugTRRaJ/a/4EtbTmTTOkiO0AAAAASUVORK5CYII=
+
+
+
+ 538, 54
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAUBJREFUOE+tU6Fu
+ wzAU7KfkD5pPCIyGwjbWsA0aDgaO1TBjhmE1LJthoGFYDQcNx27vbK1pIm2ZtJ10JPK7u3dP2e3+CusC
+ Mn3m2cNYj+PrqfmVNofXMNah7Qz2d4dyU4Sua+jBwY0erdLbIoxMuAmQ5PAhQhsLO0ZZKdOc5ZvNPBwv
+ 1SIV417xAcQIhHcZFIE1uiGifHLYP77NIkbiEmYEtDh1NkCZACPOa6g+C5cPFvv7UxbhvkRM7jG5cw1z
+ zuVqm+mniFaHNEwWjUEWkH05/OVMd9V76GF5Hb6huPMiLmUtBSQtXf0U5IFwDOhEiODeqg/Jvel8YhKo
+ bxKUdYs1lZ7Py2JpQPd0FSm+qHVe4Tu0L1ng1vmaQHrbFGieXeqGcWc68Gosvqg2ElTKLRpnaXRNlOGi
+ 6n5eYfMf+K8Hn1Gm2tY78ARPAAAAAElFTkSuQmCC
+
+
+
+ 17, 91
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAZFJREFUOE+1k612
+ 4zAUhP0IeYQ8gmGhYNFWMGwFwyJYVrGGRdBQMGwFAwUNBQMFAwWXTedKdZp22y7Yszpnjgw839wfexj+
+ x0nRQRSDw+7nw/htxq/jwcajx6LgDeolNJWzh90q+L2lXLsPzzv1DijGWiNA1RoQJtvu3fZHzrODsxrO
+ jKiJ4NMa1mj8ARCzyO8N8kzgxTPdocwGcdIwG4Xg1sh+gN18BATfzGCqd4aJIs3SX8VES4C3HWDu1fsK
+ wgKQvgvTs0UOqzdNfKZxkbobPwAm14dWeJ/Zf9YsaAUf2NIU4Ty1D7AuwDx6GOs/AUjymUOaaU4cmABo
+ vp7f7LBWlEuF3jpo494gwUsyNatuPq1QwtCS5YSYuo4JuRBAc5ozlDYdIvuVvhdzPQ4dwLJxk5zPFSkX
+ 6I1tZnWvoRQHKh9HnSkmS+mFgDxxXexZyr6tQOYSU+7zodS4JsCJua/oVjIw6XlJTnNp5njqugIOTzsl
+ +5cvzGgFrcZGlmlLz0vaZ3er4Ksj05YX/qZ//plfAAjW9npljSNYAAAAAElFTkSuQmCC
+
+
+
+ 132, 91
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAWFJREFUOE+tk6Fu
+ g0AYx/cG7QMg+gDtembJRDOQFYRDLTUE3LqJDlcyc7iRmTu3OpB13Bv05By8wc5M99zkt/tYmkxRmowE
+ Q37/3//7Dri6+u+rrg+i2kt98gIA0VobVnA5qIuXNRG7CthrOcHA8RtyKRXEzywZJEBI7CRYUWXbx/rL
+ mCTNYTQadcJBl200QlTQNE2uPloIk/QyQblXEtfg76VKcwG+H5lBzSeI89LDII6O7XdLOuwA/7ZEG2Yw
+ HK5zoPEFBxi/HUlcGBnmGmjWyjBrwc9aQ7dt5T4ewt5VMBwJY3ymzWJVmVnA9WKjDEq8tQI3LkWvgBZa
+ hoW2sAQSCrimvJuAbpuJ+1An+KxXgGHKPon7VBOE55SPO8FLQ9wVT4mXnhHg3gjH2JZ3cJCp1kvsRF4C
+ jjPtf51B1v7Ctt25Cbr/AUef3kbGsfecsrR3BYRn91xjYL48A1/0ZfXAP4YoymOdWH63AAAAAElFTkSu
+ QmCC
+
+
+
+ 236, 91
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAS5JREFUOE+tkjFu
+ hEAMRZHSbDklpYsUlC4pXVLOEXKEPQJHmCNQpuQIewTKLVJwBG5AnmcDyhIUiJSRvpBs/2ePmZeCE5uo
+ 1Wv1jsb7x3302J+ONfZmZjOagMXfzDFGof76VIPRAb3WGTIDabcQqTSQM3ITn24LEE865GuSmU49Cl4I
+ OFgTc05rTaqa47uHous3SGe1KUrZrJp8ksP9UKxo8CthmlwY+1PmhY7J0Ex3h4wiJzqv5lqFboMDshxS
+ 6bnfiyGbkZv6UAoB6R1E7Pn3bZeBgVoZkHe+SSlhOcR8+74L2V0iVw4UdZh8aSPSpTBDLiEQcnjaBZCI
+ jOtjulo37DwmricjuJ9ThDK0JGZAN8z7Yz4eVaJunW5tglGLS+HjGd+jx3KUP3xr/1fwCT+uc5NLsNSu
+ AAAAAElFTkSuQmCC
+
+
+
+ 355, 91
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAFhJREFUOE9jYBhm
+ gIPhPwN2/AHo0wQgFsDvYy4GAxQDQKrZGRzAYgxgDDKEAEB2AUwpwoAHhLQzUNcFqK5ZQDgMQO5D9wJ9
+ wwBmG8wVJMcCxemAcBwNRxUAUWA5fgBbXE4AAAAASUVORK5CYII=
+
+
+
+ 464, 91
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAExJREFUOE9jYBj2
+ 4D/Qh+iYBE+zMyjADYCwSQScDAFgAyA0WQDmfDI0w2xnZ0ggQzdYCxVs52QoIN125JDnYjAg1QBs8Q4S
+ GwV4QgAAlz4Y3vzVVKUAAAAASUVORK5CYII=
+
+
+
+ 575, 91
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAGtJREFUOE9jYBh2
+ 4D/QR8gY5EFsYtg9rm9lbwDToG9u7wBSBaXBhsDECAUbzEZkddjEcJoz4g3QM7M7AApxeXl5cCxA6f96
+ FnYXCIU+RJ6dQYGPj28BcvyD+UBx4gygUBV6qsPGp9AKamsHAByoN0xYzNRiAAAAAElFTkSuQmCC
+
+
+
+ 17, 128
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACpJREFUOE9jYBgs
+ 4D/QIeRg6rufWFcMnM3oLhw4lwyczcM5DKgfqsSaCABzP0e5eSSYDAAAAABJRU5ErkJggg==
+
+
+
+ 162, 128
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADBJREFUOE9jYBgs
+ 4D/QIeRg6rmfWNupZyO6ScS6AF0d9VxErAuoZ+NoGNAuLEk3GQBiXke5mtFczgAAAABJRU5ErkJggg==
+
+
+
+ 293, 128
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADNJREFUOE9jYBgs
+ 4D/QIeRg2rmfWNdQzwXE2oiujnouQDeJWBdRzwXE2jicw4B6oUmqSQCEIEe545CU4QAAAABJRU5ErkJg
+ gg==
+
+
+
+ 431, 128
+
+
+ 309, 54
+
+
+ 17, 54
+
+
+ 76
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAU1JREFUOE+1kDFy
+ wjAQRTlCbhBfAPAFCOqShrFLUjB2SYc63MllOrl0Z3XQWU0m6VCbCt8A3cB7g82uSWZggBAKNLOjYve/
+ /3d7vXs+/dGm2oIzn+ArB67eQFFv2uBfniwsLCD9Xq33xSDrAM5CijVg9dWGTNc1GBbPCgAhGxRzi/2Z
+ hVHmwbwDEMQfpSDiQ04A46BRqzZncVp4FNKR2OEgsW60sF6kBuO3bu4YwDRZepQloDQ/zqlFQTVMasn9
+ SNVBf2q6FGoF7uQO7Bjn7LyHDF60JbE4HOQ0FwFx7jGUewgnYaCq2hPARFGCNdiTBCLjnflgDkOKHk6p
+ 4gJ/BylNwD2+waLcdWv9+fiwhwOPz1qwCa94TXu2/zR3DbtHanvd/ZCQ6DYYL7YpiydZAze7R8udYHGc
+ NTh8reObAZQgHS+3OR3x6CY3g+4m+AaSPfHVJVQGYQAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAVpJREFUOE/FkTFu
+ wkAQRXMELpDABQBfgOAmCQ3YJQ3BJRV2F3ebLnTrks7bhc7bRCIV26bCN2BvsP8Gmx1QIiMHEaRIGWmr
+ nf/+n5mrq7+qYmNaxQZZrqDEGpoXJmK5afyKT2KpABKyVeUJwEGisxAn1uIN6KUa7YmEP5O2N1eYZMDc
+ QeLchATJP4znJ6WtAYUDhAtYbyxsL5a6M5WKQF4kbZTBPi6hHSRyfaU/U9YlPh6NvUKR+/Ud1wErWuTQ
+ nRZJeyzghcKOXqATAZssnYmD1hJ8AW7uuap+OojfGXBJYkoSPh9S1gEryCED2i5B9ZO/Gy9bH5z34kRb
+ L8zqgHi5Sw47kLbZZ9/z0cJoZopNziRuDX4AkCtF9FNtmw/cr6aoLezUTQO23ae4nany7N1PNQzTEgTp
+ x9toys3+GhdVN8gbo1SXwwUQPO2ORrkIFDATugTRRaJ/a/4EtbTmTTOkiO0AAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAWFJREFUOE+tk6Fu
+ g0AYx/cG7QMg+gDtembJRDOQFYRDLTUE3LqJDlcyc7iRmTu3OpB13Bv05By8wc5M99zkt/tYmkxRmowE
+ Q37/3//7Dri6+u+rrg+i2kt98gIA0VobVnA5qIuXNRG7CthrOcHA8RtyKRXEzywZJEBI7CRYUWXbx/rL
+ mCTNYTQadcJBl200QlTQNE2uPloIk/QyQblXEtfg76VKcwG+H5lBzSeI89LDII6O7XdLOuwA/7ZEG2Yw
+ HK5zoPEFBxi/HUlcGBnmGmjWyjBrwc9aQ7dt5T4ewt5VMBwJY3ymzWJVmVnA9WKjDEq8tQI3LkWvgBZa
+ hoW2sAQSCrimvJuAbpuJ+1An+KxXgGHKPon7VBOE55SPO8FLQ9wVT4mXnhHg3gjH2JZ3cJCp1kvsRF4C
+ jjPtf51B1v7Ctt25Cbr/AUef3kbGsfecsrR3BYRn91xjYL48A1/0ZfXAP4YoymOdWH63AAAAAElFTkSu
+ QmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAUBJREFUOE+tU6Fu
+ wzAU7KfkD5pPCIyGwjbWsA0aDgaO1TBjhmE1LJthoGFYDQcNx27vbK1pIm2ZtJ10JPK7u3dP2e3+CusC
+ Mn3m2cNYj+PrqfmVNofXMNah7Qz2d4dyU4Sua+jBwY0erdLbIoxMuAmQ5PAhQhsLO0ZZKdOc5ZvNPBwv
+ 1SIV417xAcQIhHcZFIE1uiGifHLYP77NIkbiEmYEtDh1NkCZACPOa6g+C5cPFvv7UxbhvkRM7jG5cw1z
+ zuVqm+mniFaHNEwWjUEWkH05/OVMd9V76GF5Hb6huPMiLmUtBSQtXf0U5IFwDOhEiODeqg/Jvel8YhKo
+ bxKUdYs1lZ7Py2JpQPd0FSm+qHVe4Tu0L1ng1vmaQHrbFGieXeqGcWc68Gosvqg2ElTKLRpnaXRNlOGi
+ 6n5eYfMf+K8Hn1Gm2tY78ARPAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAZFJREFUOE+1k612
+ 4zAUhP0IeYQ8gmGhYNFWMGwFwyJYVrGGRdBQMGwFAwUNBQMFAwWXTedKdZp22y7Yszpnjgw839wfexj+
+ x0nRQRSDw+7nw/htxq/jwcajx6LgDeolNJWzh90q+L2lXLsPzzv1DijGWiNA1RoQJtvu3fZHzrODsxrO
+ jKiJ4NMa1mj8ARCzyO8N8kzgxTPdocwGcdIwG4Xg1sh+gN18BATfzGCqd4aJIs3SX8VES4C3HWDu1fsK
+ wgKQvgvTs0UOqzdNfKZxkbobPwAm14dWeJ/Zf9YsaAUf2NIU4Ty1D7AuwDx6GOs/AUjymUOaaU4cmABo
+ vp7f7LBWlEuF3jpo494gwUsyNatuPq1QwtCS5YSYuo4JuRBAc5ozlDYdIvuVvhdzPQ4dwLJxk5zPFSkX
+ 6I1tZnWvoRQHKh9HnSkmS+mFgDxxXexZyr6tQOYSU+7zodS4JsCJua/oVjIw6XlJTnNp5njqugIOTzsl
+ +5cvzGgFrcZGlmlLz0vaZ3er4Ksj05YX/qZ//plfAAjW9npljSNYAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAS5JREFUOE+tkjFu
+ hEAMRZHSbDklpYsUlC4pXVLOEXKEPQJHmCNQpuQIewTKLVJwBG5AnmcDyhIUiJSRvpBs/2ePmZeCE5uo
+ 1Wv1jsb7x3302J+ONfZmZjOagMXfzDFGof76VIPRAb3WGTIDabcQqTSQM3ITn24LEE865GuSmU49Cl4I
+ OFgTc05rTaqa47uHous3SGe1KUrZrJp8ksP9UKxo8CthmlwY+1PmhY7J0Ex3h4wiJzqv5lqFboMDshxS
+ 6bnfiyGbkZv6UAoB6R1E7Pn3bZeBgVoZkHe+SSlhOcR8+74L2V0iVw4UdZh8aSPSpTBDLiEQcnjaBZCI
+ jOtjulo37DwmricjuJ9ThDK0JGZAN8z7Yz4eVaJunW5tglGLS+HjGd+jx3KUP3xr/1fwCT+uc5NLsNSu
+ AAAAAElFTkSuQmCC
+
+
+
+ The purpose of this simple RTF editor is to demonstrate a possible usage of Crad's Actions for .NET 2.0.
+Crad's Actions are absolutely free and released under Common Public License 1.0.
+
+If you want more informations, you can catch some at the URL
+http://blogs.ugidotnet.org/crad/category/1935.aspx
+or subscribing the feed
+http://blogs.ugidotnet.org/crad/category/1935.aspx/rss
+
+Any kind of feedback about this work is really appreciated. Eventually, you can contact me using "Contacts" section on my personal blog:
+http://blogs.ugidotnet.org/crad/contact.aspx
+
+
+ 17, 17
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAU1JREFUOE+1kDFy
+ wjAQRTlCbhBfAPAFCOqShrFLUjB2SYc63MllOrl0Z3XQWU0m6VCbCt8A3cB7g82uSWZggBAKNLOjYve/
+ /3d7vXs+/dGm2oIzn+ArB67eQFFv2uBfniwsLCD9Xq33xSDrAM5CijVg9dWGTNc1GBbPCgAhGxRzi/2Z
+ hVHmwbwDEMQfpSDiQ04A46BRqzZncVp4FNKR2OEgsW60sF6kBuO3bu4YwDRZepQloDQ/zqlFQTVMasn9
+ SNVBf2q6FGoF7uQO7Bjn7LyHDF60JbE4HOQ0FwFx7jGUewgnYaCq2hPARFGCNdiTBCLjnflgDkOKHk6p
+ 4gJ/BylNwD2+waLcdWv9+fiwhwOPz1qwCa94TXu2/zR3DbtHanvd/ZCQ6DYYL7YpiydZAze7R8udYHGc
+ NTh8reObAZQgHS+3OR3x6CY3g+4m+AaSPfHVJVQGYQAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAVpJREFUOE/FkTFu
+ wkAQRXMELpDABQBfgOAmCQ3YJQ3BJRV2F3ebLnTrks7bhc7bRCIV26bCN2BvsP8Gmx1QIiMHEaRIGWmr
+ nf/+n5mrq7+qYmNaxQZZrqDEGpoXJmK5afyKT2KpABKyVeUJwEGisxAn1uIN6KUa7YmEP5O2N1eYZMDc
+ QeLchATJP4znJ6WtAYUDhAtYbyxsL5a6M5WKQF4kbZTBPi6hHSRyfaU/U9YlPh6NvUKR+/Ud1wErWuTQ
+ nRZJeyzghcKOXqATAZssnYmD1hJ8AW7uuap+OojfGXBJYkoSPh9S1gEryCED2i5B9ZO/Gy9bH5z34kRb
+ L8zqgHi5Sw47kLbZZ9/z0cJoZopNziRuDX4AkCtF9FNtmw/cr6aoLezUTQO23ae4nany7N1PNQzTEgTp
+ x9toys3+GhdVN8gbo1SXwwUQPO2ORrkIFDATugTRRaJ/a/4EtbTmTTOkiO0AAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAWFJREFUOE+tk6Fu
+ g0AYx/cG7QMg+gDtembJRDOQFYRDLTUE3LqJDlcyc7iRmTu3OpB13Bv05By8wc5M99zkt/tYmkxRmowE
+ Q37/3//7Dri6+u+rrg+i2kt98gIA0VobVnA5qIuXNRG7CthrOcHA8RtyKRXEzywZJEBI7CRYUWXbx/rL
+ mCTNYTQadcJBl200QlTQNE2uPloIk/QyQblXEtfg76VKcwG+H5lBzSeI89LDII6O7XdLOuwA/7ZEG2Yw
+ HK5zoPEFBxi/HUlcGBnmGmjWyjBrwc9aQ7dt5T4ewt5VMBwJY3ymzWJVmVnA9WKjDEq8tQI3LkWvgBZa
+ hoW2sAQSCrimvJuAbpuJ+1An+KxXgGHKPon7VBOE55SPO8FLQ9wVT4mXnhHg3gjH2JZ3cJCp1kvsRF4C
+ jjPtf51B1v7Ctt25Cbr/AUef3kbGsfecsrR3BYRn91xjYL48A1/0ZfXAP4YoymOdWH63AAAAAElFTkSu
+ QmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAUBJREFUOE+tU6Fu
+ wzAU7KfkD5pPCIyGwjbWsA0aDgaO1TBjhmE1LJthoGFYDQcNx27vbK1pIm2ZtJ10JPK7u3dP2e3+CusC
+ Mn3m2cNYj+PrqfmVNofXMNah7Qz2d4dyU4Sua+jBwY0erdLbIoxMuAmQ5PAhQhsLO0ZZKdOc5ZvNPBwv
+ 1SIV417xAcQIhHcZFIE1uiGifHLYP77NIkbiEmYEtDh1NkCZACPOa6g+C5cPFvv7UxbhvkRM7jG5cw1z
+ zuVqm+mniFaHNEwWjUEWkH05/OVMd9V76GF5Hb6huPMiLmUtBSQtXf0U5IFwDOhEiODeqg/Jvel8YhKo
+ bxKUdYs1lZ7Py2JpQPd0FSm+qHVe4Tu0L1ng1vmaQHrbFGieXeqGcWc68Gosvqg2ElTKLRpnaXRNlOGi
+ 6n5eYfMf+K8Hn1Gm2tY78ARPAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAZFJREFUOE+1k612
+ 4zAUhP0IeYQ8gmGhYNFWMGwFwyJYVrGGRdBQMGwFAwUNBQMFAwWXTedKdZp22y7Yszpnjgw839wfexj+
+ x0nRQRSDw+7nw/htxq/jwcajx6LgDeolNJWzh90q+L2lXLsPzzv1DijGWiNA1RoQJtvu3fZHzrODsxrO
+ jKiJ4NMa1mj8ARCzyO8N8kzgxTPdocwGcdIwG4Xg1sh+gN18BATfzGCqd4aJIs3SX8VES4C3HWDu1fsK
+ wgKQvgvTs0UOqzdNfKZxkbobPwAm14dWeJ/Zf9YsaAUf2NIU4Ty1D7AuwDx6GOs/AUjymUOaaU4cmABo
+ vp7f7LBWlEuF3jpo494gwUsyNatuPq1QwtCS5YSYuo4JuRBAc5ozlDYdIvuVvhdzPQ4dwLJxk5zPFSkX
+ 6I1tZnWvoRQHKh9HnSkmS+mFgDxxXexZyr6tQOYSU+7zodS4JsCJua/oVjIw6XlJTnNp5njqugIOTzsl
+ +5cvzGgFrcZGlmlLz0vaZ3er4Ksj05YX/qZ//plfAAjW9npljSNYAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAS5JREFUOE+tkjFu
+ hEAMRZHSbDklpYsUlC4pXVLOEXKEPQJHmCNQpuQIewTKLVJwBG5AnmcDyhIUiJSRvpBs/2ePmZeCE5uo
+ 1Wv1jsb7x3302J+ONfZmZjOagMXfzDFGof76VIPRAb3WGTIDabcQqTSQM3ITn24LEE865GuSmU49Cl4I
+ OFgTc05rTaqa47uHous3SGe1KUrZrJp8ksP9UKxo8CthmlwY+1PmhY7J0Ex3h4wiJzqv5lqFboMDshxS
+ 6bnfiyGbkZv6UAoB6R1E7Pn3bZeBgVoZkHe+SSlhOcR8+74L2V0iVw4UdZh8aSPSpTBDLiEQcnjaBZCI
+ jOtjulo37DwmricjuJ9ThDK0JGZAN8z7Yz4eVaJunW5tglGLS+HjGd+jx3KUP3xr/1fwCT+uc5NLsNSu
+ AAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAFhJREFUOE9jYBhm
+ gIPhPwN2/AHo0wQgFsDvYy4GAxQDQKrZGRzAYgxgDDKEAEB2AUwpwoAHhLQzUNcFqK5ZQDgMQO5D9wJ9
+ wwBmG8wVJMcCxemAcBwNRxUAUWA5fgBbXE4AAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAExJREFUOE9jYBj2
+ 4D/Qh+iYBE+zMyjADYCwSQScDAFgAyA0WQDmfDI0w2xnZ0ggQzdYCxVs52QoIN125JDnYjAg1QBs8Q4S
+ GwV4QgAAlz4Y3vzVVKUAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAGtJREFUOE9jYBh2
+ 4D/QR8gY5EFsYtg9rm9lbwDToG9u7wBSBaXBhsDECAUbzEZkddjEcJoz4g3QM7M7AApxeXl5cCxA6f96
+ FnYXCIU+RJ6dQYGPj28BcvyD+UBx4gygUBV6qsPGp9AKamsHAByoN0xYzNRiAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADBJREFUOE9jYBgs
+ 4D/QIeRg6rmfWNupZyO6ScS6AF0d9VxErAuoZ+NoGNAuLEk3GQBiXke5mtFczgAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACpJREFUOE9jYBgs
+ 4D/QIeRg6rufWFcMnM3oLhw4lwyczcM5DKgfqsSaCABzP0e5eSSYDAAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADNJREFUOE9jYBgs
+ 4D/QIeRg2rmfWNdQzwXE2oiujnouQDeJWBdRzwXE2jicw4B6oUmqSQCEIEe545CU4QAAAABJRU5ErkJg
+ gg==
+
+
+
+ 126, 17
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAU5JREFUOE+1kKFy
+ wkAQhnmEvkGjERDfaTnXCmYSSQWTSBzniLvIukTGcY643NS0jrNV5A24N8i+wXY3tDNhgNIIbmbnxO7/
+ /f/uYHDLl300cWbA6k9wawu22kJebRvvX54szA0g/U6Vh2KQsQBnIXkJuP5qfKZnFWgWz3MAIWsUC4PD
+ uYGHxIF+ByCIO0pBxLuUANpCrTZNyuI4dyikJbHFUWTs49I4EWsM39q5YwDTZOFQFoBS/zjHBgXVOKok
+ 9wNVecOZblOoDdiTO7BjmLLzATJ6yQyJRXeQ01wEhKlDXx4gnISBat2cAKaKEpRgThKIhHfmg1n0Kbo/
+ owpz/B2kNB73+AbLYt+u9efjw3YH7p8zwSa84jXt2f7TwtbsHqjddfcuIcoab7LcxSyeJjX0dg9We8Hi
+ MKlx/FqFvQGUIJ6sdikd8egmvUE3E3wDZFDxxACiQHAAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAVtJREFUOE/FkTFu
+ wkAQRTkCB4gCNVLAPUpwk4QCYZc0BJdU2F3cbbrQ2SWdtwudV6lIxbap8A3YG+y/wWYHRGTkIIIUKSNt
+ tfPf/zNTq/1V5WvdzNdIMwnJV1BJrgOW6fqv+CQWEiAhW5YeBywkOAuxYsXfgW6s0BoLuFNhujOJcQrM
+ LCTMtE+Q7FM7blSYCpBbgD+HcUbc3IZCtSdCEsgJhAlSmKcFlIUEtq9wp9LYxMejsTdIcr+6T5TH8iY5
+ dCZ51BpxOD43w1eoiMNEC2tioZUEB8D1QyLLnxbitvuJIDEl8V/2KauAJcSAATc2Qfkz+dBOuto778SR
+ Mo6fVgHhYhvtdyBMo8e+56OF0cwUm5xJ3Oz/ACBXiujGyjQeE7ecorKwUzf12GaX4m4qi7N3P9UwiAsQ
+ pBdugkmid9e4qDpeVh/GqhjMAe95ezTKRSCPad8mCC4S/VvzF3LB5jVat5r9AAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAWJJREFUOE+tkyFv
+ g0AYhvsPWttkorpJ1zNLljQZyArCoZYaAm7dRIcrmeHcyMydWx3IOu4f9OQc/IOdme65yW/3sTSZojQZ
+ CYY87/N+3wGDwX9fVXUQ5V7qkxcAiNbaZDmXvbp4URGxKyF7LSYYOH4Dk1JB9JzFvQQIiZ0EKypt+0h/
+ GRMnDIbDYSvsddlGI0QJdV0z9dFAECeXCYq9krgGfy9UwgR4Xmh6NZ8gzgsXgzg6tt8tab8D/NsSbjKD
+ 4WDNgEYXHGD0diRRbmTANNC0kUHagJc2hm6b0nk8BJ2rYDgUxniZNotVaWY+14uNMihx1wqcqBCdAppr
+ GeTawhJIIOCa8nYCuq0nzkMV47NOAYZp9kmcp4ogPKd81ApeauKseELc5IwA90Y4wjbWwn6qGje2E7kx
+ jMfT7tfpp80vbNuvbvz2f8DRp7ehGdt7TrOkcwWEZ/dcY2C+PANf9GV1wD94P8pSkzADoAAAAABJRU5E
+ rkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAUBJREFUOE+tU6Fu
+ wzAU7KfkD5pPCIyGwjbWsA0aDgaO1TBjhmE1LJthoGFYDQcNx27vbK1pIm2ZtJ10JPK7u3dP2e3+CusC
+ Mn3m2cNYj+PrqfmVNofXMNah7Qz2d4dyU4Sua+jBwY0erdLbIoxMuAmQ5PAhQhsLO0ZZKdOc5ZvNPBwv
+ 1SIV417xAcQIhHcZFIE1uiGifHLYP77NIkbiEmYEtDh1NkCZACPOa6g+C5cPFvv7UxbhvkRM7jG5cw1z
+ zuVqm+mniFaHNEwWjUEWkH05/OVMd9V76GF5Hb6huPMiLmUtBSQtXf0U5IFwDOhEiODeqg/Jvel8YhKo
+ bxKUdYs1lZ7Py2JpQPd0FSm+qHVe4Tu0L1ng1vmaQHrbFGieXeqGcWc68Gosvqg2ElTKLRpnaXRNlOGi
+ 6n5eYfMf+K8Hn1Gm2tY78ARPAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAZFJREFUOE+1k612
+ 4zAUhP0IeYQ8gmGhYNFWMGwFwyJYVrGGRdBQMGwFAwUNBQMFAwWXTedKdZp22y7Yszpnjgw839wfexj+
+ x0nRQRSDw+7nw/htxq/jwcajx6LgDeolNJWzh90q+L2lXLsPzzv1DijGWiNA1RoQJtvu3fZHzrODsxrO
+ jKiJ4NMa1mj8ARCzyO8N8kzgxTPdocwGcdIwG4Xg1sh+gN18BATfzGCqd4aJIs3SX8VES4C3HWDu1fsK
+ wgKQvgvTs0UOqzdNfKZxkbobPwAm14dWeJ/Zf9YsaAUf2NIU4Ty1D7AuwDx6GOs/AUjymUOaaU4cmABo
+ vp7f7LBWlEuF3jpo494gwUsyNatuPq1QwtCS5YSYuo4JuRBAc5ozlDYdIvuVvhdzPQ4dwLJxk5zPFSkX
+ 6I1tZnWvoRQHKh9HnSkmS+mFgDxxXexZyr6tQOYSU+7zodS4JsCJua/oVjIw6XlJTnNp5njqugIOTzsl
+ +5cvzGgFrcZGlmlLz0vaZ3er4Ksj05YX/qZ//plfAAjW9npljSNYAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAFhJREFUOE9jYBhm
+ gIPhPwN2/AHo0wQgFsDvYy4GAxQDQKrZGRzAYgxgDDKEAEB2AUwpwoAHhLQzUNcFqK5ZQDgMQO5D9wJ9
+ wwBmG8wVJMcCxemAcBwNRxUAUWA5fgBbXE4AAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAExJREFUOE9jYBj2
+ 4D/Qh+iYBE+zMyjADYCwSQScDAFgAyA0WQDmfDI0w2xnZ0ggQzdYCxVs52QoIN125JDnYjAg1QBs8Q4S
+ GwV4QgAAlz4Y3vzVVKUAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAGtJREFUOE9jYBh2
+ 4D/QR8gY5EFsYtg9rm9lbwDToG9u7wBSBaXBhsDECAUbzEZkddjEcJoz4g3QM7M7AApxeXl5cCxA6f96
+ FnYXCIU+RJ6dQYGPj28BcvyD+UBx4gygUBV6qsPGp9AKamsHAByoN0xYzNRiAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADBJREFUOE9jYBgs
+ 4D/QIeRg6rmfWNupZyO6ScS6AF0d9VxErAuoZ+NoGNAuLEk3GQBiXke5mtFczgAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACpJREFUOE9jYBgs
+ 4D/QIeRg6rufWFcMnM3oLhw4lwyczcM5DKgfqsSaCABzP0e5eSSYDAAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADNJREFUOE9jYBgs
+ 4D/QIeRg2rmfWNdQzwXE2oiujnouQDeJWBdRzwXE2jicw4B6oUmqSQCEIEe545CU4QAAAABJRU5ErkJg
+ gg==
+
+
+
+ 17, 165
+
+
+ 145, 165
+
+
+ 275, 165
+
+
\ No newline at end of file
diff --git a/ActionsDemo/Program.cs b/ActionsDemo/Program.cs
new file mode 100644
index 0000000..2bdfc79
--- /dev/null
+++ b/ActionsDemo/Program.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions.Sample
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new EditorForm());
+ }
+
+ static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
+ {
+ MessageBox.Show("Woooops! Unexpected error!" + Environment.NewLine + Environment.NewLine + e.Exception.Message);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ActionsDemo/Properties/AssemblyInfo.cs b/ActionsDemo/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..8c5429d
--- /dev/null
+++ b/ActionsDemo/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Crad's simple RTF Editor")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Crad's simple RTF Editor")]
+[assembly: AssemblyCopyright("Copyright © 2006")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d32a800e-8039-40c0-9614-1360ffd03fb1")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ActionsDemo/Properties/Resources.Designer.cs b/ActionsDemo/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..90d428e
--- /dev/null
+++ b/ActionsDemo/Properties/Resources.Designer.cs
@@ -0,0 +1,98 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17379
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Crad.Windows.Forms.Actions.Sample.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Crad.Windows.Forms.Actions.Sample.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ internal static System.Drawing.Bitmap About {
+ get {
+ object obj = ResourceManager.GetObject("About", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Font {
+ get {
+ object obj = ResourceManager.GetObject("Font", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap New {
+ get {
+ object obj = ResourceManager.GetObject("New", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Open {
+ get {
+ object obj = ResourceManager.GetObject("Open", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Save {
+ get {
+ object obj = ResourceManager.GetObject("Save", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/ActionsDemo/Properties/Resources.resx b/ActionsDemo/Properties/Resources.resx
new file mode 100644
index 0000000..3fd5016
--- /dev/null
+++ b/ActionsDemo/Properties/Resources.resx
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\Font.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\About.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/ActionsDemo/Properties/Settings.Designer.cs b/ActionsDemo/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..5d0b0bb
--- /dev/null
+++ b/ActionsDemo/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17379
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Crad.Windows.Forms.Actions.Sample.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/ActionsDemo/Properties/Settings.settings b/ActionsDemo/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/ActionsDemo/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/ActionsDemo/Resources/About.jpg b/ActionsDemo/Resources/About.jpg
new file mode 100644
index 0000000..d6e2bcf
Binary files /dev/null and b/ActionsDemo/Resources/About.jpg differ
diff --git a/ActionsDemo/Resources/Font.png b/ActionsDemo/Resources/Font.png
new file mode 100644
index 0000000..b47bd59
Binary files /dev/null and b/ActionsDemo/Resources/Font.png differ
diff --git a/ActionsDemo/Resources/New.png b/ActionsDemo/Resources/New.png
new file mode 100644
index 0000000..545c25d
Binary files /dev/null and b/ActionsDemo/Resources/New.png differ
diff --git a/ActionsDemo/Resources/Open.png b/ActionsDemo/Resources/Open.png
new file mode 100644
index 0000000..91d05c8
Binary files /dev/null and b/ActionsDemo/Resources/Open.png differ
diff --git a/ActionsDemo/Resources/Save.png b/ActionsDemo/Resources/Save.png
new file mode 100644
index 0000000..7fab7ea
Binary files /dev/null and b/ActionsDemo/Resources/Save.png differ
diff --git a/Crad.Windows.Forms.Actions.sln b/Crad.Windows.Forms.Actions.sln
new file mode 100644
index 0000000..313d4cb
--- /dev/null
+++ b/Crad.Windows.Forms.Actions.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 11
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crad.Windows.Forms.Actions", "Crad.Windows.Forms.Actions\Crad.Windows.Forms.Actions.csproj", "{6E50D1BD-D8EA-4992-8B25-C5A0D7E179A5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crad.Windows.Forms.Actions.Sample", "ActionsDemo\Crad.Windows.Forms.Actions.Sample.csproj", "{88AB67C7-A0CF-4811-BC0F-7F908A38E9CF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {6E50D1BD-D8EA-4992-8B25-C5A0D7E179A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6E50D1BD-D8EA-4992-8B25-C5A0D7E179A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6E50D1BD-D8EA-4992-8B25-C5A0D7E179A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6E50D1BD-D8EA-4992-8B25-C5A0D7E179A5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {88AB67C7-A0CF-4811-BC0F-7F908A38E9CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {88AB67C7-A0CF-4811-BC0F-7F908A38E9CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {88AB67C7-A0CF-4811-BC0F-7F908A38E9CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {88AB67C7-A0CF-4811-BC0F-7F908A38E9CF}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Crad.Windows.Forms.Actions/AboutAction.cs b/Crad.Windows.Forms.Actions/AboutAction.cs
new file mode 100644
index 0000000..1f06c2a
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AboutAction.cs
@@ -0,0 +1,44 @@
+using System;
+using System.ComponentModel;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class AboutAction: Action, ISupportInitialize
+ {
+ public AboutAction()
+ {
+ productName = Application.ProductName;
+ textPrefix = "About {0}...";
+ }
+
+ private string productName;
+
+ private string textPrefix;
+ [DefaultValue("About {0}...")]
+ public string TextPrefix
+ {
+ get { return textPrefix; }
+ set
+ {
+ textPrefix = value;
+ (this as ISupportInitialize).EndInit();
+ }
+ }
+
+ #region ISupportInitialize Members
+
+ void ISupportInitialize.BeginInit()
+ {
+ }
+
+ void ISupportInitialize.EndInit()
+ {
+ if (!DesignMode)
+ this.Text = string.Format(textPrefix, productName);
+ }
+
+ #endregion
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/Action.cs b/Crad.Windows.Forms.Actions/Action.cs
new file mode 100644
index 0000000..7e7a2a7
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/Action.cs
@@ -0,0 +1,455 @@
+using System;
+using System.Diagnostics;
+using System.Reflection;
+using System.ComponentModel;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using System.Drawing;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [ToolboxBitmap(typeof(Action), "Images.Action.bmp"),
+ DefaultEvent("Execute"), StandardAction]
+ public class Action: Component
+ {
+ protected enum ActionWorkingState
+ {
+ Listening,
+ Driving
+ }
+
+ public Action()
+ {
+ targets = new List();
+ this._enabled = true;
+ this._text = string.Empty;
+ this.WorkingState = ActionWorkingState.Listening;
+ this.shortcutKeys = Keys.None;
+ this.toolTipText = string.Empty;
+ this.visible = true;
+
+ this.clickEventHandler = new EventHandler(target_Click);
+ this.checkStateChangedEventHandler = new EventHandler(target_CheckStateChanged);
+ }
+
+ private ActionWorkingState workingState;
+ protected ActionWorkingState WorkingState
+ {
+ get { return workingState; }
+ set { workingState = value; }
+ }
+
+ #region Events and event handlers
+ public event CancelEventHandler BeforeExecute;
+ protected virtual void OnBeforeExecute(CancelEventArgs e)
+ {
+ if (BeforeExecute != null)
+ BeforeExecute(this, e);
+ }
+
+ public event EventHandler Execute;
+ protected virtual void OnExecute(EventArgs e)
+ {
+ if (Execute != null)
+ Execute(this, e);
+ }
+
+ public event EventHandler AfterExecute;
+ protected virtual void OnAfterExecute(EventArgs e)
+ {
+ if (AfterExecute != null)
+ AfterExecute(this, e);
+ }
+
+ public event EventHandler Update;
+ protected virtual void OnUpdate(EventArgs e)
+ {
+ if (Update != null)
+ Update(this, e);
+ }
+
+ public void DoUpdate()
+ {
+ OnUpdate(EventArgs.Empty);
+ }
+ #endregion
+
+ #region Gestione di collection di oggetti associati
+ private List targets;
+ internal void InternalRemoveTarget(Component extendee)
+ {
+ targets.Remove(extendee);
+ RemoveHandler(extendee);
+ OnRemovingTarget(extendee);
+ }
+
+ internal void InternalAddTarget(Component extendee)
+ {
+ targets.Add(extendee);
+ refreshState(extendee);
+ AddHandler(extendee);
+ OnAddingTarget(extendee);
+ }
+
+ protected virtual void OnRemovingTarget(Component extendee)
+ {
+ }
+
+ protected virtual void OnAddingTarget(Component extendee)
+ {
+ }
+ #endregion
+
+ private ActionList actionList;
+ protected internal ActionList ActionList
+ {
+ get { return actionList; }
+ set
+ {
+ if (actionList != value)
+ {
+ actionList = value;
+ }
+ }
+ }
+
+ #region common properties
+ private string _text;
+ [DefaultValue(""), UpdatableProperty(), Localizable(true)]
+ public string Text
+ {
+ get { return _text; }
+ set
+ {
+ if (_text != value)
+ {
+ _text = value;
+ UpdateAllTargets("Text", value);
+ }
+ }
+ }
+
+ [DefaultValue(false)]
+ public bool Checked
+ {
+ get
+ {
+ return (this.checkState != CheckState.Unchecked);
+ }
+ set
+ {
+ if (value != this.Checked)
+ {
+ this.CheckState = value ? CheckState.Checked : CheckState.Unchecked;
+ }
+ }
+ }
+
+ private CheckState checkState;
+ [DefaultValue(CheckState.Unchecked), UpdatableProperty()]
+ public CheckState CheckState
+ {
+ get { return checkState; }
+ set
+ {
+ if (checkState != value)
+ {
+ checkState = value;
+ UpdateAllTargets("CheckState", value);
+ }
+ }
+ }
+
+ private bool _enabled;
+ [DefaultValue(true), UpdatableProperty]
+ public bool Enabled
+ {
+ get
+ {
+ if (ActionList != null)
+ return _enabled && ActionList.Enabled;
+ else
+ return _enabled;
+ }
+ set
+ {
+ if (_enabled != value)
+ {
+ _enabled = value;
+ UpdateAllTargets("Enabled", value);
+ }
+ }
+ }
+
+ private Image image;
+ [DefaultValue(null), UpdatableProperty]
+ public Image Image
+ {
+ get { return image; }
+ set
+ {
+ if (image != value)
+ {
+ image = value;
+ UpdateAllTargets("Image", value);
+ }
+ }
+ }
+
+ private bool checkOnClick;
+ [DefaultValue(false), UpdatableProperty]
+ public bool CheckOnClick
+ {
+ get { return checkOnClick; }
+ set
+ {
+ if (checkOnClick != value)
+ {
+ checkOnClick = value;
+ UpdateAllTargets("CheckOnClick", value);
+ }
+ }
+ }
+
+ private Keys shortcutKeys;
+ [DefaultValue(Keys.None), UpdatableProperty, Localizable(true)]
+ public Keys ShortcutKeys
+ {
+ get { return shortcutKeys; }
+ set
+ {
+ if (shortcutKeys != value)
+ {
+ shortcutKeys = value;
+ KeysConverter kc = new KeysConverter();
+ string s = (string) kc.ConvertTo(value, typeof(string));
+ UpdateAllTargets("ShortcutKeyDisplayString", s);
+ }
+ }
+ }
+
+ private bool visible;
+ [DefaultValue(true), UpdatableProperty]
+ public bool Visible
+ {
+ get { return visible; }
+ set
+ {
+ if (visible != value)
+ {
+ visible = value;
+ UpdateAllTargets("Visible", value);
+ }
+ }
+ }
+
+ private string toolTipText;
+ [DefaultValue(""), UpdatableProperty, Localizable(true)]
+ public string ToolTipText
+ {
+ get { return toolTipText; }
+ set
+ {
+ if (toolTipText != value)
+ {
+ toolTipText = value;
+ UpdateAllTargets("ToolTipText", value);
+ }
+ }
+ }
+ #endregion
+
+ #region updating targets
+ internal void RefreshEnabledCheckState()
+ {
+ UpdateAllTargets("Enabled", this.Enabled);
+ UpdateAllTargets("CheckState", this.CheckState);
+ }
+
+ protected void UpdateAllTargets(string propertyName, object value)
+ {
+ foreach (Component c in targets)
+ {
+ updateProperty(c, propertyName, value);
+ }
+ }
+
+ private void updateProperty(Component target, string propertyName, object value)
+ {
+ WorkingState = ActionWorkingState.Driving;
+ try
+ {
+ if (ActionList != null)
+ {
+ if (!SpecialUpdateProperty(target, propertyName, value))
+ ActionList.TypesDescription[target.GetType()].SetValue(
+ propertyName, target, value);
+ }
+ }
+ finally
+ {
+ WorkingState = ActionWorkingState.Listening;
+ }
+ }
+
+ protected virtual bool SpecialUpdateProperty(
+ Component target, string propertyName, object value)
+ {
+ if (propertyName == "ToolTipText")
+ {
+ Control c = target as Control;
+
+ if (c != null && ActionList.ToolTip.CanExtend(c))
+ ActionList.ToolTip.SetToolTip(c, (string)value);
+ return true;
+ }
+ return false;
+ }
+
+ private void refreshState(Component target)
+ {
+ PropertyDescriptorCollection properties =
+ TypeDescriptor.GetProperties(this, new Attribute[] { new UpdatablePropertyAttribute() });
+
+ foreach (PropertyDescriptor property in properties)
+ {
+ updateProperty(target, property.Name, property.GetValue(this));
+ }
+ }
+ #endregion
+
+ #region Hook su eventi target
+ private EventHandler clickEventHandler;
+ private EventHandler checkStateChangedEventHandler;
+
+ protected virtual void AddHandler(Component extendee)
+ {
+ // verifico se extendee possiede l'evento click
+ EventInfo clickEvent = extendee.GetType().GetEvent("Click");
+ if (clickEvent != null)
+ {
+ clickEvent.AddEventHandler(extendee, clickEventHandler);
+ }
+
+ // verifico se extendee possiede l'evento CheckStateChanged
+ EventInfo checkStateChangedEvent = extendee.GetType().GetEvent("CheckStateChanged");
+ if (checkStateChangedEvent != null)
+ {
+ checkStateChangedEvent.AddEventHandler(extendee, checkStateChangedEventHandler);
+ }
+
+ // Casi particolari
+ // verifico se extendee è un ToolbarButton
+ ToolBarButton button = extendee as ToolBarButton;
+ if (button != null)
+ {
+ button.Parent.ButtonClick += new ToolBarButtonClickEventHandler(toolbar_ButtonClick);
+ }
+ }
+
+ protected virtual void RemoveHandler(Component extendee)
+ {
+ // verifico se extendee possiede l'evento click
+ EventInfo clickEvent = extendee.GetType().GetEvent("Click");
+ if (clickEvent != null)
+ {
+ clickEvent.RemoveEventHandler(extendee, clickEventHandler);
+ }
+
+ // verifico se extendee possiede l'evento CheckStateChanged
+ EventInfo checkStateChangedEvent = extendee.GetType().GetEvent("CheckStateChanged");
+ if (checkStateChangedEvent != null)
+ {
+ checkStateChangedEvent.RemoveEventHandler(extendee, checkStateChangedEventHandler);
+ }
+
+ // Casi particolari
+ // verifico se extendee è un ToolbarButton
+ ToolBarButton button = extendee as ToolBarButton;
+ if (button != null)
+ {
+ button.Parent.ButtonClick -= new ToolBarButtonClickEventHandler(toolbar_ButtonClick);
+ }
+ }
+
+ #endregion
+
+ #region Handling eventi target
+ #region Click
+ private void toolbar_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
+ {
+ // called if sender is ToolBarButton
+ if (this.targets.Contains(e.Button))
+ handleClick(e.Button, e);
+ }
+
+ private void target_Click(object sender, EventArgs e)
+ {
+ // called if sender is Control
+ handleClick(sender, e);
+ }
+
+ private void handleClick(object sender, EventArgs e)
+ {
+ if (WorkingState == ActionWorkingState.Listening)
+ {
+ Component target = sender as Component;
+ Debug.Assert(target != null, "Target non è un component su handleClick");
+ Debug.Assert(targets.Contains(target), "Target non esiste su collection targets su handleClick");
+
+ DoExecute();
+ }
+ }
+ #endregion
+
+ #region CheckStateChanged
+ private void target_CheckStateChanged(object sender, EventArgs e)
+ {
+ handleCheckStateChanged(sender, e);
+ }
+
+ private bool interceptingCheckStateChanged;
+ internal bool InterceptingCheckStateChanged
+ {
+ get { return interceptingCheckStateChanged; }
+ set { interceptingCheckStateChanged = value; }
+ }
+ private void handleCheckStateChanged(object sender, EventArgs e)
+ {
+ if (WorkingState == ActionWorkingState.Listening)
+ {
+ Component target = sender as Component;
+ CheckState = (CheckState)ActionList.
+ TypesDescription[sender.GetType()].GetValue("CheckState", sender);
+
+ }
+ }
+ #endregion
+ #endregion
+
+ #region Action execution
+ public void DoExecute()
+ {
+ if (!Enabled)
+ return;
+
+ CancelEventArgs e = new CancelEventArgs();
+ OnBeforeExecute(e);
+ if (e.Cancel)
+ return;
+ OnExecute(EventArgs.Empty);
+ OnAfterExecute(EventArgs.Empty);
+ }
+
+ internal void ExecuteShortcut()
+ {
+ if (!Enabled)
+ return;
+
+ if (CheckOnClick)
+ this.Checked = !this.Checked;
+ DoExecute();
+ }
+ #endregion
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ActionCollection.cs b/Crad.Windows.Forms.Actions/ActionCollection.cs
new file mode 100644
index 0000000..baaab7d
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ActionCollection.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Drawing.Design;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [Editor(typeof(Design.ActionCollectionEditor), typeof(UITypeEditor))]
+ public class ActionCollection: Collection
+ {
+ public ActionCollection(ActionList parent)
+ {
+ this.parent = parent;
+ }
+
+ private ActionList parent;
+ public ActionList Parent
+ {
+ get { return parent; }
+ }
+
+ protected override void ClearItems()
+ {
+ foreach (Action action in this)
+ action.ActionList = null;
+
+ base.ClearItems();
+ }
+
+ protected override void InsertItem(int index, Action item)
+ {
+ base.InsertItem(index, item);
+ item.ActionList = Parent;
+ }
+
+ protected override void RemoveItem(int index)
+ {
+ this[index].ActionList = null;
+ base.RemoveItem(index);
+ }
+
+ protected override void SetItem(int index, Action item)
+ {
+ if (this.Count > index)
+ this[index].ActionList = null;
+ base.SetItem(index, item);
+
+ item.ActionList = Parent;
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ActionList.cs b/Crad.Windows.Forms.Actions/ActionList.cs
new file mode 100644
index 0000000..7b5a8a9
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ActionList.cs
@@ -0,0 +1,266 @@
+using System;
+using System.ComponentModel;
+using System.ComponentModel.Design;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using System.Drawing;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [ProvideProperty("Action", typeof(Component)),
+ ToolboxBitmap(typeof(ActionList), "Images.ActionList.bmp"),
+ ToolboxItemFilter("System.Windows.Forms")]
+ public class ActionList: Component, IExtenderProvider, ISupportInitialize
+ {
+ public ActionList()
+ {
+ this.actions = new ActionCollection(this);
+ this.targets = new Dictionary();
+ this.typesDescription = new Dictionary();
+ this.enabled = true;
+ this.tooltip = new ToolTip();
+
+ if (!DesignMode)
+ Application.Idle += new EventHandler(Application_Idle);
+ }
+
+ #region ToolTip section
+ private ToolTip tooltip;
+ public ToolTip ToolTip
+ {
+ get { return tooltip; }
+ }
+ #endregion
+
+ #region events and event raisers
+ void Application_Idle(object sender, EventArgs e)
+ {
+ OnUpdate(EventArgs.Empty);
+ }
+
+ public event EventHandler Update;
+ protected virtual void OnUpdate(EventArgs eventArgs)
+ {
+ // si solleva l'evento Update per l'ActionList
+ if (Update != null)
+ Update(this, eventArgs);
+
+ foreach (Action action in actions)
+ {
+ action.DoUpdate();
+ }
+ }
+ #endregion
+
+ #region Properties
+ private bool enabled;
+ [DefaultValue(true)]
+ public bool Enabled
+ {
+ get { return enabled; }
+ set
+ {
+ if (enabled != value)
+ {
+ enabled = value;
+ refreshActions();
+ }
+ }
+ }
+
+ private ActionCollection actions;
+ [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
+ public ActionCollection Actions
+ {
+ get { return actions; }
+ }
+ #endregion
+
+ #region IExtenderProvider Members
+ private Dictionary targets;
+
+ [DefaultValue(null)]
+ public Action GetAction(Component extendee)
+ {
+ if (targets.ContainsKey(extendee))
+ return targets[extendee];
+ else
+ return null;
+ }
+
+ public void SetAction(Component extendee, Action action)
+ {
+ if (!initializing)
+ {
+ if (extendee == null)
+ throw new ArgumentNullException("extendee");
+ if (action != null && action.ActionList != this)
+ throw new ArgumentException("The Action you selected is owned by another ActionList");
+ }
+
+ /* Se extendee appartiene già alla collection, rimuovo l'handler
+ * sul suo evento Click e lo rimuovo dai component associati alla
+ * collection */
+ if (targets.ContainsKey(extendee))
+ {
+ targets[extendee].InternalRemoveTarget(extendee);
+ targets.Remove(extendee);
+ }
+
+ /* Aggiungo extendee alla collection */
+ if (action != null)
+ {
+ // eventualmente aggiungo le informazioni sul tipo
+ if (!typesDescription.ContainsKey(extendee.GetType()))
+ {
+ typesDescription.Add(extendee.GetType(),
+ new ActionTargetDescriptionInfo(extendee.GetType()));
+ }
+
+ targets.Add(extendee, action);
+ action.InternalAddTarget(extendee);
+ }
+ }
+
+ bool IExtenderProvider.CanExtend(object extendee)
+ {
+ Type targetType = extendee.GetType();
+
+ foreach (Type t in GetSupportedTypes())
+ if (t.IsAssignableFrom(targetType))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ protected virtual Type[] GetSupportedTypes()
+ {
+ return new Type[] {typeof(ButtonBase), typeof(ToolStripButton),
+ typeof(ToolStripMenuItem), typeof(ToolBarButton), typeof(MenuItem)};
+ }
+ #endregion
+
+ #region types informations
+ private Dictionary typesDescription;
+
+ [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ public Dictionary TypesDescription
+ {
+ get { return typesDescription; }
+ }
+ #endregion
+
+ #region ISupportInitialize Members
+ private bool initializing;
+
+ public void BeginInit()
+ {
+ initializing = true;
+ }
+
+ public void EndInit()
+ {
+ initializing = false;
+ checkInternalCollections();
+ refreshActions();
+ }
+
+ private void refreshActions()
+ {
+ /* questo metodo effettua il refresh dello stato Enabled e CheckState
+ * di ogni action */
+ if (DesignMode)
+ return;
+
+ foreach (Action action in actions)
+ action.RefreshEnabledCheckState();
+ }
+
+ private void checkInternalCollections()
+ {
+ /* questo metodo verifica che ogni action su targets
+ * appartenga a questa actionList e che abbia la proprietà
+ * ActionList correttamente impostata */
+ foreach (Action action in targets.Values)
+ {
+ if (!Actions.Contains(action) || action.ActionList != this)
+ throw new InvalidOperationException(
+ "Action owned by another action list or invalid Action.ActionList");
+ }
+ }
+
+ #endregion
+
+ #region reference to ContainerControl
+ private ContainerControl containerControl;
+ public ContainerControl ContainerControl
+ {
+ get { return containerControl; }
+ set
+ {
+ if (containerControl != value)
+ {
+ containerControl = value;
+ if (!DesignMode)
+ {
+ Form f = containerControl as Form;
+ f.KeyPreview = true;
+ f.KeyDown += new KeyEventHandler(form_KeyDown);
+ }
+ }
+ }
+ }
+
+ [Browsable(false)]
+ public Control ActiveControl
+ {
+ get { return getActiveControl(this.ContainerControl); }
+ }
+
+ private Control getActiveControl(ContainerControl containerControl)
+ {
+ if (containerControl == null)
+ return null;
+ else if (containerControl.ActiveControl is ContainerControl)
+ return getActiveControl((ContainerControl)containerControl.ActiveControl);
+ else
+ return containerControl.ActiveControl;
+ }
+
+ private void form_KeyDown(object sender, KeyEventArgs e)
+ {
+ foreach (Action action in actions)
+ {
+ if (action.ShortcutKeys == (Keys) e.KeyData)
+ action.ExecuteShortcut();
+ }
+ }
+
+ public override ISite Site
+ {
+ get
+ {
+ return base.Site;
+ }
+ set
+ {
+ base.Site = value;
+ if (value != null)
+ {
+ IDesignerHost host1 = value.GetService(typeof(IDesignerHost)) as IDesignerHost;
+ if (host1 != null)
+ {
+ IComponent component1 = host1.RootComponent;
+ if (component1 is ContainerControl)
+ {
+ this.ContainerControl = (ContainerControl)component1;
+ }
+ }
+ }
+ }
+ }
+ #endregion
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ActionTargetDescriptionInfo.cs b/Crad.Windows.Forms.Actions/ActionTargetDescriptionInfo.cs
new file mode 100644
index 0000000..2f6e4ae
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ActionTargetDescriptionInfo.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Reflection;
+using System.Collections.Generic;
+
+namespace Crad.Windows.Forms.Actions
+{
+ public class ActionTargetDescriptionInfo
+ {
+ public ActionTargetDescriptionInfo(Type targetType)
+ {
+ this.properties = new Dictionary();
+ this.targetType = targetType;
+
+ foreach (PropertyInfo property in targetType.GetProperties())
+ properties.Add(property.Name, property);
+ }
+
+ private Dictionary properties;
+
+ private Type targetType;
+ public Type TargetType
+ {
+ get { return targetType; }
+ }
+
+ internal void SetValue(string propertyName, object target, object value)
+ {
+ if (properties.ContainsKey(propertyName))
+ properties[propertyName].SetValue(target, value, null);
+ }
+
+ internal object GetValue(string propertyName, object source)
+ {
+ if (properties.ContainsKey(propertyName))
+ return properties[propertyName].GetValue(source, null);
+
+ return null;
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/AlignCenterAction.cs b/Crad.Windows.Forms.Actions/AlignCenterAction.cs
new file mode 100644
index 0000000..a2b4c55
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignCenterAction.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class AlignCenterAction: AlignmentBaseAction
+ {
+ protected override HorizontalAlignment Alignment
+ {
+ get
+ {
+ return HorizontalAlignment.Center;
+ }
+ }
+
+ public AlignCenterAction()
+ {
+ InitializeComponent();
+ }
+ private void InitializeComponent()
+ {
+ //
+ // AlignCenterAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.AlignCenter;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A)));
+ this.Text = "&Center";
+ this.ToolTipText = "Center alignment";
+
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/AlignCenterAction.resx b/Crad.Windows.Forms.Actions/AlignCenterAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignCenterAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/AlignLeftAction.cs b/Crad.Windows.Forms.Actions/AlignLeftAction.cs
new file mode 100644
index 0000000..11ece6b
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignLeftAction.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class AlignLeftAction: AlignmentBaseAction
+ {
+ protected override HorizontalAlignment Alignment
+ {
+ get { return HorizontalAlignment.Left; }
+ }
+
+ public AlignLeftAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // AlignLeftAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.AlignLeft;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T)));
+ this.Text = "&Left";
+ this.ToolTipText = "Left alignment";
+
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/AlignLeftAction.resx b/Crad.Windows.Forms.Actions/AlignLeftAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignLeftAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/AlignRightAction.cs b/Crad.Windows.Forms.Actions/AlignRightAction.cs
new file mode 100644
index 0000000..5a57029
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignRightAction.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class AlignRightAction: AlignmentBaseAction
+ {
+ protected override HorizontalAlignment Alignment
+ {
+ get { return HorizontalAlignment.Right; }
+ }
+
+ public AlignRightAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // AlignRightAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.AlignRight;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
+ this.Text = "&Right";
+ this.ToolTipText = "Right alignment";
+
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/AlignRightAction.resx b/Crad.Windows.Forms.Actions/AlignRightAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignRightAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/AlignmentBaseAction.cs b/Crad.Windows.Forms.Actions/AlignmentBaseAction.cs
new file mode 100644
index 0000000..8c2e244
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignmentBaseAction.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ public class AlignmentBaseAction: RichTextAction
+ {
+ protected virtual HorizontalAlignment Alignment
+ {
+ get { return HorizontalAlignment.Left; }
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveRichTextBox != null)
+ {
+ ActiveRichTextBox.SelectionAlignment = Alignment;
+ }
+ base.OnExecute(e);
+ }
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Checked =
+ (ActiveRichTextBox != null &&
+ ActiveRichTextBox.SelectionAlignment == Alignment);
+ }
+ base.OnUpdate(e);
+ }
+
+ public AlignmentBaseAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // ParagraphStyleAction
+ //
+ this.CheckOnClick = true;
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/AlignmentBaseAction.resx b/Crad.Windows.Forms.Actions/AlignmentBaseAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/AlignmentBaseAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/BoldAction.cs b/Crad.Windows.Forms.Actions/BoldAction.cs
new file mode 100644
index 0000000..a95c340
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/BoldAction.cs
@@ -0,0 +1,38 @@
+using System;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class BoldAction: FontStyleAction
+ {
+ public BoldAction()
+ {
+ InitializeComponent();
+ }
+
+ #region InitializeComponent
+ private void InitializeComponent()
+ {
+ //
+ // BoldAction
+ //
+ this.CheckOnClick = true;
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.StyleBold;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B)));
+ this.Text = "&Bold";
+ this.ToolTipText = "Bold";
+
+ }
+ #endregion
+
+ protected override FontStyle ActionFontStyle
+ {
+ get
+ {
+ return FontStyle.Bold;
+ }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/BoldAction.resx b/Crad.Windows.Forms.Actions/BoldAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/BoldAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/CopyAction.cs b/Crad.Windows.Forms.Actions/CopyAction.cs
new file mode 100644
index 0000000..49d20c1
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/CopyAction.cs
@@ -0,0 +1,44 @@
+using System;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class CopyAction: TextBoxBaseAction
+ {
+ public CopyAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // CopyAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.Copy;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
+ this.Text = "&Copy";
+ this.ToolTipText = "Copy";
+
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveTextBox != null)
+ {
+ ActiveTextBox.Copy();
+ }
+ base.OnExecute(e);
+ }
+
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Enabled = (ActiveTextBox != null &&
+ ActiveTextBox.SelectionLength > 0);
+ }
+ base.OnUpdate(e);
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/CopyAction.resx b/Crad.Windows.Forms.Actions/CopyAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/CopyAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/Crad.Windows.Forms.Actions.csproj b/Crad.Windows.Forms.Actions/Crad.Windows.Forms.Actions.csproj
new file mode 100644
index 0000000..51dc9fe
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/Crad.Windows.Forms.Actions.csproj
@@ -0,0 +1,319 @@
+
+
+
+ Debug
+ AnyCPU
+ 8.0.50727
+ 2.0
+ {6E50D1BD-D8EA-4992-8B25-C5A0D7E179A5}
+ Library
+ Properties
+ Crad.Windows.Forms.Actions
+ Crad.Windows.Forms.Actions
+
+
+
+
+
+
+
+
+ v2.0
+
+
+
+
+ 2.0
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+
+
+ Crad.snk
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+ Component
+
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ True
+ True
+ Resources.resx
+
+
+ Component
+
+
+ Component
+
+
+
+ Component
+
+
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+
+
+
+
+
+ Designer
+ AlignCenterAction.cs
+
+
+ Designer
+ AlignLeftAction.cs
+
+
+ Designer
+ AlignRightAction.cs
+
+
+ Designer
+ BoldAction.cs
+
+
+ Designer
+ CopyAction.cs
+
+
+ Designer
+ CutAction.cs
+
+
+ Designer
+ DeleteAction.cs
+
+
+ Designer
+ FontStyleAction.cs
+
+
+
+ Designer
+ ItalicAction.cs
+
+
+ Designer
+ AlignmentBaseAction.cs
+
+
+ Designer
+ ListAction.cs
+
+
+ Designer
+ ViewDetailsAction.cs
+
+
+ Designer
+ PasteAction.cs
+
+
+ Designer
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+ Designer
+ RedoAction.cs
+
+
+ Designer
+ SelectAllAction.cs
+
+
+ Designer
+ UnderlineAction.cs
+
+
+ Designer
+ UndoAction.cs
+
+
+ Designer
+ ViewLargeIconsAction.cs
+
+
+ Designer
+ ViewListAction.cs
+
+
+ Designer
+ ViewSmallIconsAction.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/Crad.snk b/Crad.Windows.Forms.Actions/Crad.snk
new file mode 100644
index 0000000..c24f237
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Crad.snk differ
diff --git a/Crad.Windows.Forms.Actions/CutAction.cs b/Crad.Windows.Forms.Actions/CutAction.cs
new file mode 100644
index 0000000..bbcf018
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/CutAction.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class CutAction: TextBoxBaseAction
+ {
+ public CutAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // CutAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.Cut;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
+ this.Text = "Cu&t";
+ this.ToolTipText = "Cut";
+
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveTextBox != null)
+ {
+ ActiveTextBox.Cut();
+ }
+ base.OnExecute(e);
+ }
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Enabled = (ActiveTextBox != null &&
+ ActiveTextBox.SelectionLength > 0 && !ActiveTextBox.ReadOnly);
+ }
+ base.OnUpdate(e);
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/CutAction.resx b/Crad.Windows.Forms.Actions/CutAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/CutAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/DeleteAction.cs b/Crad.Windows.Forms.Actions/DeleteAction.cs
new file mode 100644
index 0000000..fd50188
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/DeleteAction.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class DeleteAction: TextBoxBaseAction
+ {
+ public DeleteAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // DeleteAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.delete;
+ this.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this.Text = "&Delete";
+ this.ToolTipText = "Delete";
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveTextBox != null)
+ {
+ ActiveTextBox.SelectedText = string.Empty;
+ }
+ base.OnExecute(e);
+ }
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Enabled = (ActiveTextBox != null &&
+ ActiveTextBox.SelectionLength > 0 && !ActiveTextBox.ReadOnly);
+ }
+ base.OnUpdate(e);
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/DeleteAction.resx b/Crad.Windows.Forms.Actions/DeleteAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/DeleteAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/Design/ActionCollectionEditor.cs b/Crad.Windows.Forms.Actions/Design/ActionCollectionEditor.cs
new file mode 100644
index 0000000..6408c1d
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/Design/ActionCollectionEditor.cs
@@ -0,0 +1,50 @@
+using System;
+using System.ComponentModel;
+using System.ComponentModel.Design;
+using System.Diagnostics;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions.Design
+{
+ internal sealed class ActionCollectionEditor : CollectionEditor
+ {
+ private Type[] returnedTypes;
+
+ public ActionCollectionEditor()
+ : base(typeof(ActionCollection))
+ {}
+
+ protected override Type[] CreateNewItemTypes()
+ {
+ return returnedTypes;
+ }
+ public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
+ {
+ if (returnedTypes == null)
+ {
+ returnedTypes = getReturnedTypes(provider);
+ }
+ return base.EditValue(context, provider, value);
+ }
+
+ private Type[] getReturnedTypes(IServiceProvider provider)
+ {
+ List res = new List();
+
+ ITypeDiscoveryService tds = (ITypeDiscoveryService)
+ provider.GetService(typeof(ITypeDiscoveryService));
+
+ if (tds != null)
+ foreach (Type actionType in tds.GetTypes(typeof(Action), false))
+ {
+ if (actionType.GetCustomAttributes(typeof(StandardActionAttribute), false).Length > 0 &&
+ !res.Contains(actionType))
+ res.Add(actionType);
+ }
+
+ return res.ToArray();
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/FontStyleAction.cs b/Crad.Windows.Forms.Actions/FontStyleAction.cs
new file mode 100644
index 0000000..a29698d
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/FontStyleAction.cs
@@ -0,0 +1,85 @@
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ public class FontStyleAction: RichTextAction
+ {
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveRichTextBox != null)
+ {
+ setFontStyle(ActiveRichTextBox, ActionFontStyle);
+ }
+ base.OnExecute(e);
+ }
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Checked =
+ (ActiveRichTextBox != null &&
+ hasFontStyle(ActiveRichTextBox, ActionFontStyle));
+ }
+ base.OnUpdate(e);
+ }
+
+ private bool hasFontStyle(RichTextBox rtb, FontStyle style)
+ {
+ return (rtb.SelectionFont.Style & style) == style;
+ }
+ private void setFontStyle(RichTextBox rtb, FontStyle style)
+ {
+ if (rtb.SelectionLength == 0)
+ setCharFontStyle(rtb, style);
+ else
+ {
+ // to avoid screen refreshing, we create a fake RichTextBox
+ using (RichTextBox a = new RichTextBox())
+ {
+ a.SuspendLayout();
+ a.SelectedRtf = rtb.SelectedRtf;
+ a.SelectAll();
+ int selectionStart = a.SelectionStart;
+ int selectionLength = a.SelectionLength;
+ int selectionEnd = selectionStart + selectionLength;
+ for (int x = selectionStart; x < selectionEnd; ++x)
+ {
+ // Set temporary selection
+ a.Select(x, 1);
+ // Toggle font style of the selection
+ setCharFontStyle(a, style);
+ }
+ // Restore the original selection
+ a.SelectAll();
+ rtb.SelectedRtf = a.SelectedRtf;
+ }
+ }
+ }
+
+ private void setCharFontStyle(RichTextBox rtb, FontStyle style)
+ {
+ if (this.Checked)
+ rtb.SelectionFont = new Font(rtb.SelectionFont,
+ rtb.SelectionFont.Style | style);
+ else
+ rtb.SelectionFont = new Font(rtb.SelectionFont,
+ rtb.SelectionFont.Style & (~style));
+ }
+ protected virtual FontStyle ActionFontStyle
+ {
+ get { return FontStyle.Regular; }
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // FontStyleAction
+ //
+ this.CheckOnClick = true;
+
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/FontStyleAction.resx b/Crad.Windows.Forms.Actions/FontStyleAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/FontStyleAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/Images/Action.bmp b/Crad.Windows.Forms.Actions/Images/Action.bmp
new file mode 100644
index 0000000..89da69a
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Images/Action.bmp differ
diff --git a/Crad.Windows.Forms.Actions/Images/ActionList.bmp b/Crad.Windows.Forms.Actions/Images/ActionList.bmp
new file mode 100644
index 0000000..e5a8059
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Images/ActionList.bmp differ
diff --git a/Crad.Windows.Forms.Actions/ItalicAction.cs b/Crad.Windows.Forms.Actions/ItalicAction.cs
new file mode 100644
index 0000000..50558e3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ItalicAction.cs
@@ -0,0 +1,36 @@
+using System;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class ItalicAction: FontStyleAction
+ {
+ public ItalicAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // ItalicAction
+ //
+ this.CheckOnClick = true;
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.StyleItalic;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I)));
+ this.Text = "&Italic";
+ this.ToolTipText = "Italic";
+
+ }
+
+ protected override FontStyle ActionFontStyle
+ {
+ get
+ {
+ return FontStyle.Italic;
+ }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ItalicAction.resx b/Crad.Windows.Forms.Actions/ItalicAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ItalicAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/ListAction.cs b/Crad.Windows.Forms.Actions/ListAction.cs
new file mode 100644
index 0000000..ae36b4f
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ListAction.cs
@@ -0,0 +1,57 @@
+using System;
+using System.ComponentModel;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ public class ListAction: Action
+ {
+ public ListAction()
+ {
+ InitializeComponent();
+ }
+
+ private ListView targetListView;
+
+ [DefaultValue(null)]
+ public ListView TargetListView
+ {
+ get { return targetListView; }
+ set { targetListView = value; }
+ }
+
+
+ protected virtual View ListViewStyle
+ {
+ get { return View.Details; }
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && TargetListView != null)
+ {
+ TargetListView.View = ListViewStyle;
+ }
+ base.OnExecute(e);
+ }
+
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Checked = (TargetListView != null &&
+ TargetListView.View == ListViewStyle);
+ }
+ base.OnUpdate(e);
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // ListAction
+ //
+ this.CheckOnClick = true;
+
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ListAction.resx b/Crad.Windows.Forms.Actions/ListAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ListAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/PasteAction.cs b/Crad.Windows.Forms.Actions/PasteAction.cs
new file mode 100644
index 0000000..a68a603
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/PasteAction.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class PasteAction: TextBoxBaseAction
+ {
+ public PasteAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // PasteAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.Paste;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
+ this.Text = "&Paste";
+ this.ToolTipText = "Paste";
+
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveTextBox != null)
+ {
+ ActiveTextBox.Paste();
+ }
+ base.OnExecute(e);
+ }
+
+ protected override void OnUpdate(EventArgs e)
+ {
+ base.OnUpdate(e);
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/PasteAction.resx b/Crad.Windows.Forms.Actions/PasteAction.resx
new file mode 100644
index 0000000..98d4a33
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/PasteAction.resx
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ &Paste
+
+
+ Paste
+
+
+
+ Ctrl+V
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/Properties/AssemblyInfo.cs b/Crad.Windows.Forms.Actions/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..94ebdc2
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Crad.Windows.Forms.Actions")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Crad.Windows.Forms.Actions")]
+[assembly: AssemblyCopyright("Copyright © 2006")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("348ead85-3796-4ae6-aaea-dedf694060d9")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.1.1.0")]
+[assembly: AssemblyFileVersion("1.1.1.0")]
diff --git a/Crad.Windows.Forms.Actions/Properties/Resources.Designer.cs b/Crad.Windows.Forms.Actions/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..9d9b861
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/Properties/Resources.Designer.cs
@@ -0,0 +1,161 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17379
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Crad.Windows.Forms.Actions.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Crad.Windows.Forms.Actions.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ internal static System.Drawing.Bitmap AlignCenter {
+ get {
+ object obj = ResourceManager.GetObject("AlignCenter", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap AlignJustified {
+ get {
+ object obj = ResourceManager.GetObject("AlignJustified", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap AlignLeft {
+ get {
+ object obj = ResourceManager.GetObject("AlignLeft", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap AlignRight {
+ get {
+ object obj = ResourceManager.GetObject("AlignRight", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap BulletedList {
+ get {
+ object obj = ResourceManager.GetObject("BulletedList", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Copy {
+ get {
+ object obj = ResourceManager.GetObject("Copy", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Cut {
+ get {
+ object obj = ResourceManager.GetObject("Cut", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap delete {
+ get {
+ object obj = ResourceManager.GetObject("delete", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Paste {
+ get {
+ object obj = ResourceManager.GetObject("Paste", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Redo {
+ get {
+ object obj = ResourceManager.GetObject("Redo", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap StyleBold {
+ get {
+ object obj = ResourceManager.GetObject("StyleBold", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap StyleItalic {
+ get {
+ object obj = ResourceManager.GetObject("StyleItalic", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap StyleUnderline {
+ get {
+ object obj = ResourceManager.GetObject("StyleUnderline", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ internal static System.Drawing.Bitmap Undo {
+ get {
+ object obj = ResourceManager.GetObject("Undo", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/Properties/Resources.resx b/Crad.Windows.Forms.Actions/Properties/Resources.resx
new file mode 100644
index 0000000..6d1b51b
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/Properties/Resources.resx
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\AlignJustified.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\AlignRight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\AlignLeft.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\StyleItalic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\StyleUnderline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\StyleBold.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\AlignCenter.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\BulletedList.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/RedoAction.cs b/Crad.Windows.Forms.Actions/RedoAction.cs
new file mode 100644
index 0000000..9af8a77
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/RedoAction.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class RedoAction: RichTextAction
+ {
+ public RedoAction()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveRichTextBox != null)
+ {
+ this.ActiveRichTextBox.Redo();
+ }
+ base.OnExecute(e);
+ }
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Enabled = (ActiveRichTextBox != null && ActiveRichTextBox.CanRedo);
+ }
+
+ base.OnUpdate(e);
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // RedoAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.Redo;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
+ this.Text = "&Redo";
+ this.ToolTipText = "Redo";
+
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/RedoAction.resx b/Crad.Windows.Forms.Actions/RedoAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/RedoAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/Resources/AlignCenter.png b/Crad.Windows.Forms.Actions/Resources/AlignCenter.png
new file mode 100644
index 0000000..c4cb503
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/AlignCenter.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/AlignJustified.png b/Crad.Windows.Forms.Actions/Resources/AlignJustified.png
new file mode 100644
index 0000000..60f8afd
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/AlignJustified.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/AlignLeft.png b/Crad.Windows.Forms.Actions/Resources/AlignLeft.png
new file mode 100644
index 0000000..c227f6c
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/AlignLeft.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/AlignRight.png b/Crad.Windows.Forms.Actions/Resources/AlignRight.png
new file mode 100644
index 0000000..2fa24c1
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/AlignRight.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/BulletedList.png b/Crad.Windows.Forms.Actions/Resources/BulletedList.png
new file mode 100644
index 0000000..8532586
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/BulletedList.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/Copy.png b/Crad.Windows.Forms.Actions/Resources/Copy.png
new file mode 100644
index 0000000..11339dd
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/Copy.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/Cut.png b/Crad.Windows.Forms.Actions/Resources/Cut.png
new file mode 100644
index 0000000..af51844
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/Cut.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/Paste.png b/Crad.Windows.Forms.Actions/Resources/Paste.png
new file mode 100644
index 0000000..454cb8f
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/Paste.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/Redo.png b/Crad.Windows.Forms.Actions/Resources/Redo.png
new file mode 100644
index 0000000..af15d82
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/Redo.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/StyleBold.png b/Crad.Windows.Forms.Actions/Resources/StyleBold.png
new file mode 100644
index 0000000..d122ee6
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/StyleBold.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/StyleItalic.png b/Crad.Windows.Forms.Actions/Resources/StyleItalic.png
new file mode 100644
index 0000000..080d381
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/StyleItalic.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/StyleUnderline.png b/Crad.Windows.Forms.Actions/Resources/StyleUnderline.png
new file mode 100644
index 0000000..67937dc
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/StyleUnderline.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/Undo.png b/Crad.Windows.Forms.Actions/Resources/Undo.png
new file mode 100644
index 0000000..1d3bb08
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/Undo.png differ
diff --git a/Crad.Windows.Forms.Actions/Resources/delete.png b/Crad.Windows.Forms.Actions/Resources/delete.png
new file mode 100644
index 0000000..547e7a7
Binary files /dev/null and b/Crad.Windows.Forms.Actions/Resources/delete.png differ
diff --git a/Crad.Windows.Forms.Actions/RichTextAction.cs b/Crad.Windows.Forms.Actions/RichTextAction.cs
new file mode 100644
index 0000000..fd43ceb
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/RichTextAction.cs
@@ -0,0 +1,22 @@
+using System;
+using System.ComponentModel;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ public class RichTextAction: Action
+ {
+ [Browsable(false)]
+ protected RichTextBox ActiveRichTextBox
+ {
+ get
+ {
+ RichTextBox result = null;
+ if (ActionList != null)
+ result = ActionList.ActiveControl as RichTextBox;
+
+ return result;
+ }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/SelectAllAction.cs b/Crad.Windows.Forms.Actions/SelectAllAction.cs
new file mode 100644
index 0000000..6ef000d
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/SelectAllAction.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class SelectAllAction: TextBoxBaseAction
+ {
+ public SelectAllAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // SelectAllAction
+ //
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad5)));
+ this.Text = "Select &All";
+ this.ToolTipText = "Select All";
+
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ if (ActiveTextBox != null && ActiveTextBox.CanSelect)
+ ActiveTextBox.SelectAll();
+
+ }
+ base.OnExecute(e);
+ }
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Enabled = (ActiveTextBox != null && ActiveTextBox.CanSelect);
+ }
+ base.OnUpdate(e);
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/SelectAllAction.resx b/Crad.Windows.Forms.Actions/SelectAllAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/SelectAllAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/StandardActionAttribute.cs b/Crad.Windows.Forms.Actions/StandardActionAttribute.cs
new file mode 100644
index 0000000..e25592b
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/StandardActionAttribute.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
+ public class StandardActionAttribute: Attribute
+ {
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/TextBoxBaseAction.cs b/Crad.Windows.Forms.Actions/TextBoxBaseAction.cs
new file mode 100644
index 0000000..3f528b2
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/TextBoxBaseAction.cs
@@ -0,0 +1,22 @@
+using System;
+using System.ComponentModel;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ public class TextBoxBaseAction: Action
+ {
+ [Browsable(false)]
+ protected TextBoxBase ActiveTextBox
+ {
+ get
+ {
+ TextBoxBase result = null;
+ if (this.ActionList != null)
+ result = this.ActionList.ActiveControl as TextBoxBase;
+
+ return result;
+ }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/UnderlineAction.cs b/Crad.Windows.Forms.Actions/UnderlineAction.cs
new file mode 100644
index 0000000..85109ee
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/UnderlineAction.cs
@@ -0,0 +1,36 @@
+using System;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class UnderlineAction: FontStyleAction
+ {
+ public UnderlineAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // UnderlineAction
+ //
+ this.CheckOnClick = true;
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.StyleUnderline;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U)));
+ this.Text = "&Underline";
+ this.ToolTipText = "Underline";
+
+ }
+
+ protected override FontStyle ActionFontStyle
+ {
+ get
+ {
+ return FontStyle.Underline;
+ }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/UnderlineAction.resx b/Crad.Windows.Forms.Actions/UnderlineAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/UnderlineAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/UndoAction.cs b/Crad.Windows.Forms.Actions/UndoAction.cs
new file mode 100644
index 0000000..9eb6d77
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/UndoAction.cs
@@ -0,0 +1,43 @@
+using System;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class UndoAction: TextBoxBaseAction
+ {
+ public UndoAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ //
+ // UndoAction
+ //
+ this.Image = global::Crad.Windows.Forms.Actions.Properties.Resources.Undo;
+ this.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
+ this.Text = "&Undo";
+ this.ToolTipText = "Undo";
+ }
+
+ protected override void OnExecute(EventArgs e)
+ {
+ if (!DesignMode && ActiveTextBox != null)
+ {
+ this.ActiveTextBox.Undo();
+ }
+ base.OnExecute(e);
+ }
+
+ protected override void OnUpdate(EventArgs e)
+ {
+ if (!DesignMode)
+ {
+ this.Enabled = (ActiveTextBox != null && ActiveTextBox.CanUndo);
+ }
+
+ base.OnUpdate(e);
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/UndoAction.resx b/Crad.Windows.Forms.Actions/UndoAction.resx
new file mode 100644
index 0000000..52a9ad3
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/UndoAction.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/UpdatablePropertyAttribute.cs b/Crad.Windows.Forms.Actions/UpdatablePropertyAttribute.cs
new file mode 100644
index 0000000..66c8e85
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/UpdatablePropertyAttribute.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Crad.Windows.Forms.Actions
+{
+ public class UpdatablePropertyAttribute: Attribute
+ {
+ }
+}
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/ViewDetailsAction.cs b/Crad.Windows.Forms.Actions/ViewDetailsAction.cs
new file mode 100644
index 0000000..b5dece0
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewDetailsAction.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class ViewDetailsAction: ListAction
+ {
+ public ViewDetailsAction()
+ {
+ InitializeComponent();
+ }
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ViewDetailsAction));
+ //
+ // ViewDetailsAction
+ //
+ this.Image = ((System.Drawing.Image)(resources.GetObject("$this.Image")));
+ this.Text = "View &details";
+ this.ToolTipText = "View details";
+
+ }
+ protected override View ListViewStyle
+ {
+ get { return View.Details; }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ViewDetailsAction.resx b/Crad.Windows.Forms.Actions/ViewDetailsAction.resx
new file mode 100644
index 0000000..3aa9dac
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewDetailsAction.resx
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAC5JREFUOE9jYKAy
+ +A80DxmDjCfEp9wJ6LaSyqeOC2CmDFwYjLoAEZMjNRYoSssA/71QsFiGjkIAAAAASUVORK5CYII=
+
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/ViewLargeIconsAction.cs b/Crad.Windows.Forms.Actions/ViewLargeIconsAction.cs
new file mode 100644
index 0000000..04faf41
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewLargeIconsAction.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class ViewLargeIconsAction: ListAction
+ {
+ public ViewLargeIconsAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ViewLargeIconsAction));
+ //
+ // ViewLargeIconsAction
+ //
+ this.Image = ((System.Drawing.Image)(resources.GetObject("$this.Image")));
+ this.Text = "View &large icons";
+ this.ToolTipText = "View large icons";
+ }
+
+ protected override View ListViewStyle
+ {
+ get { return View.LargeIcon; }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ViewLargeIconsAction.resx b/Crad.Windows.Forms.Actions/ViewLargeIconsAction.resx
new file mode 100644
index 0000000..09acf9f
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewLargeIconsAction.resx
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKJJREFUOE9jYKAW
+ 2HDgw38QXrDjw3+yzARpBIGGBQ/+F8x4QLohDSse/P/w4///D0BzAhoukG5AwQSgAUDND4DYIOMA6QaA
+ bHUouADWbJBAhgFkBRySJpCTsWG4koSOC/9BOKCBTNeBNIKAQ8UBoFfJMMShYgM8lgwSNpAeyAYZQAOg
+ saQQsYB0AxQSFvwHaVQIWPBfIGAC6QbQPJYotYB8/QAq63tJTq5L+gAAAABJRU5ErkJggg==
+
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/ViewListAction.cs b/Crad.Windows.Forms.Actions/ViewListAction.cs
new file mode 100644
index 0000000..7430d9f
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewListAction.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class ViewListAction: ListAction
+ {
+ public ViewListAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ViewListAction));
+ //
+ // ViewListAction
+ //
+ this.Image = ((System.Drawing.Image)(resources.GetObject("$this.Image")));
+ this.Text = "View &list";
+ this.ToolTipText = "View list";
+
+ }
+
+ protected override View ListViewStyle
+ {
+ get { return View.List; }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ViewListAction.resx b/Crad.Windows.Forms.Actions/ViewListAction.resx
new file mode 100644
index 0000000..c0ce22c
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewListAction.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAFxJREFUOE9jYKAG
+ SOi48D+g4cJ/XGYRkmdIAGoGAYOEA2BDJkyY8L+goOB/gEcAmE9IniGg4sJ/h4wD/xUiIAagA0Ly1AgF
+ Cs0gFEiE5AkG0mggAhMSgZQ60gMRALu4qn1HXgO9AAAAAElFTkSuQmCC
+
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/ViewSmallIconsAction.cs b/Crad.Windows.Forms.Actions/ViewSmallIconsAction.cs
new file mode 100644
index 0000000..eddc89d
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewSmallIconsAction.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Windows.Forms;
+
+namespace Crad.Windows.Forms.Actions
+{
+ [StandardAction]
+ public class ViewSmallIconsAction: ListAction
+ {
+ public ViewSmallIconsAction()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ViewSmallIconsAction));
+ //
+ // ViewSmallIconsAction
+ //
+ this.Image = ((System.Drawing.Image)(resources.GetObject("$this.Image")));
+ this.Text = "View &small icons";
+ this.ToolTipText = "View small icons";
+ }
+
+ protected override View ListViewStyle
+ {
+ get { return View.SmallIcon; }
+ }
+ }
+}
diff --git a/Crad.Windows.Forms.Actions/ViewSmallIconsAction.resx b/Crad.Windows.Forms.Actions/ViewSmallIconsAction.resx
new file mode 100644
index 0000000..e19e446
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/ViewSmallIconsAction.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAEpJREFUOE9jYKAW
+ SOi48D+g4cJ/ss1LAGoGAYOEA2BDJkyY8L+goOB/gEcAcYYGVFz475Bx4L9CBMSAYQZGA5jECB0NMBID
+ DKgcAF/kVT8ruiX9AAAAAElFTkSuQmCC
+
+
+
\ No newline at end of file
diff --git a/Crad.Windows.Forms.Actions/license.txt b/Crad.Windows.Forms.Actions/license.txt
new file mode 100644
index 0000000..c9990a7
--- /dev/null
+++ b/Crad.Windows.Forms.Actions/license.txt
@@ -0,0 +1,213 @@
+Common Public License Version 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+ where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright license set
+forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement are offered
+by that Contributor alone and not by any other party; and
+
+ iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable manner on or
+through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+ b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such Recipient
+under this Agreement shall terminate as of the date such litigation is filed. In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.