Browse Source

2006-04-12 Peter Dennis Bartok <[email protected]>

	* TextBox.cs: Implemented context menu


svn path=/trunk/mcs/; revision=59429
Peter Dennis Bartok 20 years ago
parent
commit
4dff6ea323

+ 4 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog

@@ -1,3 +1,7 @@
+2006-04-12  Peter Dennis Bartok  <[email protected]>
+
+	* TextBox.cs: Implemented context menu
+
 2006-04-12  Mike Kestner  <[email protected]>
 
 	* ListView.cs: implement box selection. fixes #77838.

+ 77 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBox.cs

@@ -33,8 +33,19 @@ using System.Drawing;
 
 namespace System.Windows.Forms {
 	public class TextBox : TextBoxBase {
+		#region Variables
+		private ContextMenu	menu;
+		private MenuItem	undo;
+		private MenuItem	cut;
+		private MenuItem	copy;
+		private MenuItem	paste;
+		private MenuItem	delete;
+		private MenuItem	select_all;
+		#endregion	// Variables
+
 		#region Public Constructors
 		public TextBox() {
+
 			scrollbars = RichTextBoxScrollBars.None;
 			alignment = HorizontalAlignment.Left;
 			this.LostFocus +=new EventHandler(TextBox_LostFocus);
@@ -43,6 +54,24 @@ namespace System.Windows.Forms {
 
 			SetStyle (ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, false);
 			SetStyle (ControlStyles.FixedHeight, true);
+
+			undo = new MenuItem(Locale.GetText("&Undo"));
+			cut = new MenuItem(Locale.GetText("Cu&t"));
+			copy = new MenuItem(Locale.GetText("&Copy"));
+			paste = new MenuItem(Locale.GetText("&Paste"));
+			delete = new MenuItem(Locale.GetText("&Delete"));
+			select_all = new MenuItem(Locale.GetText("Select &All"));
+
+			menu = new ContextMenu(new MenuItem[] { undo, new MenuItem("-"), cut, copy, paste, delete, new MenuItem("-"), select_all});
+			ContextMenu = menu;
+
+			menu.Popup += new EventHandler(menu_Popup);
+			undo.Click += new EventHandler(undo_Click);
+			cut.Click += new EventHandler(cut_Click);
+			copy.Click += new EventHandler(copy_Click);
+			paste.Click += new EventHandler(paste_Click);
+			delete.Click += new EventHandler(delete_Click);
+			select_all.Click += new EventHandler(select_all_Click);
 		}
 		#endregion	// Public Constructors
 
@@ -234,5 +263,53 @@ namespace System.Windows.Forms {
 		#region Events
 		public event EventHandler TextAlignChanged;
 		#endregion	// Events
+
+		#region Private Methods
+		private void menu_Popup(object sender, EventArgs e) {
+			if (SelectionLength == 0) {
+				cut.Enabled = false;
+				copy.Enabled = false;
+			} else {
+				cut.Enabled = true;
+				copy.Enabled = true;
+			}
+
+			if (SelectionLength == TextLength) {
+				select_all.Enabled = false;
+			} else {
+				select_all.Enabled = true;
+			}
+
+			if (!CanUndo) {
+				undo.Enabled = false;
+			} else {
+				undo.Enabled = true;
+			}
+		}
+
+		private void undo_Click(object sender, EventArgs e) {
+			Undo();
+		}
+
+		private void cut_Click(object sender, EventArgs e) {
+			Cut();
+		}
+
+		private void copy_Click(object sender, EventArgs e) {
+			Copy();
+		}
+
+		private void paste_Click(object sender, EventArgs e) {
+			Paste();
+		}
+
+		private void delete_Click(object sender, EventArgs e) {
+			SelectedText = "";
+		}
+
+		private void select_all_Click(object sender, EventArgs e) {
+			SelectAll();
+		}
+		#endregion	// Private Methods
 	}
 }