* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / TextBox.cs
index e9451993c35d2b3314b57eece3390a3d31e7b503..223ffa1015d1a1c02575a24bc82ad0cf0d4afaa3 100644 (file)
@@ -17,7 +17,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-// Copyright (c) 2004-2005 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2004-2006 Novell, Inc. (http://www.novell.com)
 //
 // Authors:
 //     Peter Bartok    pbartok@novell.com
@@ -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
 
@@ -71,6 +100,7 @@ namespace System.Windows.Forms {
 #endif
 
                [DefaultValue(false)]
+               [MWFCategory("Behavior")]
                public bool AcceptsReturn {
                        get {
                                return accepts_return;
@@ -84,6 +114,7 @@ namespace System.Windows.Forms {
                }
 
                [DefaultValue(CharacterCasing.Normal)]
+               [MWFCategory("Behavior")]
                public CharacterCasing CharacterCasing {
                        get {
                                return character_casing;
@@ -98,6 +129,7 @@ namespace System.Windows.Forms {
 
                [Localizable(true)]
                [DefaultValue('\0')]
+               [MWFCategory("Behavior")]
                public char PasswordChar {
                        get {
 #if NET_2_0
@@ -122,6 +154,7 @@ namespace System.Windows.Forms {
 
                [DefaultValue(ScrollBars.None)]
                [Localizable(true)]
+               [MWFCategory("Appearance")]
                public ScrollBars ScrollBars {
                        get {
                                return (ScrollBars)scrollbars;
@@ -159,6 +192,7 @@ namespace System.Windows.Forms {
 
                [DefaultValue(HorizontalAlignment.Left)]
                [Localizable(true)]
+               [MWFCategory("Appearance")]
                public HorizontalAlignment TextAlign {
                        get {
                                return alignment;
@@ -180,7 +214,7 @@ namespace System.Windows.Forms {
                                        for (int i = 1; i <= document.Lines; i++) {
                                                document.GetLine(i).Alignment = value;
                                        }
-                                       document.RecalculateDocument(CreateGraphics());
+                                       document.RecalculateDocument(CreateGraphicsInternal());
                                        OnTextAlignChanged(EventArgs.Empty);
                                }
                        }
@@ -234,5 +268,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
        }
 }