Author: jpobst
Date: 2007-07-05 16:32:23 -0400 (Thu, 05 Jul 2007)
New Revision: 81436

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
Log:
2007-07-05  Jonathan Pobst  <[EMAIL PROTECTED]>

        * ToolStrip.cs, ToolStripControlHost.cs, ToolStripDropDown.cs,
        ToolStripItem.cs, ToolStripItem.cs, ToolStripItemTextRenderEventArgs.cs,
        ToolStripRenderer.cs, ToolStripSeparator.cs: Implement TextDirection.

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-07-05 20:29:47 UTC (rev 81435)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-07-05 20:32:23 UTC (rev 81436)
@@ -1,3 +1,9 @@
+2007-07-05  Jonathan Pobst  <[EMAIL PROTECTED]>
+
+       * ToolStrip.cs, ToolStripControlHost.cs, ToolStripDropDown.cs,
+       ToolStripItem.cs, ToolStripItem.cs, ToolStripItemTextRenderEventArgs.cs,
+       ToolStripRenderer.cs, ToolStripSeparator.cs: Implement TextDirection.
+
 2007-07-05  Carlos Alberto Cortez <[EMAIL PROTECTED]>
 
        * ListViewItem.cs: Implement the small 2.0 GetSubItemAt method.

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs     
2007-07-05 20:29:47 UTC (rev 81435)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs     
2007-07-05 20:32:23 UTC (rev 81436)
@@ -69,6 +69,7 @@
                private List<ToolStripItem> pre_merge_items;
                private ToolStripRenderer renderer;
                private ToolStripRenderMode render_mode;
+               private ToolStripTextDirection text_direction;
                private Timer tooltip_timer;
                private ToolTip.ToolTipWindow tooltip_window;
                private bool show_item_tool_tips;
@@ -115,6 +116,7 @@
                        this.render_mode = 
ToolStripRenderMode.ManagerRenderMode;
                        this.show_item_tool_tips = this.DefaultShowItemToolTips;
                        base.TabStop = false;
+                       this.text_direction = ToolStripTextDirection.Horizontal;
                        this.ResumeLayout ();
                        DoAutoSize ();
                        
@@ -486,6 +488,23 @@
                        set { base.TabStop = value; }
                }
 
+               [DefaultValue (ToolStripTextDirection.Horizontal)]
+               public virtual ToolStripTextDirection TextDirection {
+                       get { return this.text_direction; }
+                       set {
+                               if (!Enum.IsDefined (typeof 
(ToolStripTextDirection), value))
+                                       throw new InvalidEnumArgumentException 
(string.Format ("Enum argument value '{0}' is not valid for 
ToolStripTextDirection", value));
+
+                               if (this.text_direction != value) {
+                                       this.text_direction = value;
+                                       
+                                       this.PerformLayout (this, 
"TextDirection");
+                                               
+                                       this.Invalidate ();
+                               }
+                       }
+               }
+
                [Browsable (false)]
                [EditorBrowsable (EditorBrowsableState.Never)]
                public new VScrollProperties VerticalScroll {

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
  2007-07-05 20:29:47 UTC (rev 81435)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripControlHost.cs
  2007-07-05 20:32:23 UTC (rev 81436)
@@ -224,6 +224,14 @@
 
                [Browsable (false)]
                [EditorBrowsable (EditorBrowsableState.Never)]
+               [DefaultValue (ToolStripTextDirection.Horizontal)]
+               public override ToolStripTextDirection TextDirection {
+                       get { return base.TextDirection; }
+                       set { base.TextDirection = value; }
+               }
+
+               [Browsable (false)]
+               [EditorBrowsable (EditorBrowsableState.Never)]
                public new TextImageRelation TextImageRelation {
                        get { return base.TextImageRelation; }
                        set { base.TextImageRelation = value; }
@@ -480,6 +488,8 @@
                #endregion
 
                #region Private Methods
+               internal override ToolStripTextDirection DefaultTextDirection { 
get { return ToolStripTextDirection.Horizontal; } }
+
                internal override void Dismiss (ToolStripDropDownCloseReason 
reason)
                {
                        if (this.Selected)

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs 
    2007-07-05 20:29:47 UTC (rev 81435)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs 
    2007-07-05 20:32:23 UTC (rev 81436)
@@ -261,6 +261,13 @@
                }
 
                [Browsable (false)]
+               [DefaultValue (ToolStripTextDirection.Horizontal)]
+               public override ToolStripTextDirection TextDirection {
+                       get { return base.TextDirection; }
+                       set { base.TextDirection = value; }
+               }
+
+               [Browsable (false)]
                [DesignerSerializationVisibility 
(DesignerSerializationVisibility.Hidden)]
                [EditorBrowsable (EditorBrowsableState.Advanced)]
                public bool TopLevel {

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs 
2007-07-05 20:29:47 UTC (rev 81435)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs 
2007-07-05 20:32:23 UTC (rev 81436)
@@ -85,6 +85,7 @@
                private Object tag;
                private string text;
                private ContentAlignment text_align;
+               private ToolStripTextDirection text_direction;
                private TextImageRelation text_image_relation;
                private string tool_tip_text;
                private bool visible;
@@ -136,6 +137,7 @@
                        this.bounds.Size = this.DefaultSize;
                        this.text = text;
                        this.text_align = ContentAlignment.MiddleCenter;
+                       this.text_direction = DefaultTextDirection;
                        this.text_image_relation = 
TextImageRelation.ImageBeforeText;
                        this.visible = true;
 
@@ -706,6 +708,20 @@
                        }
                }
 
+               public virtual ToolStripTextDirection TextDirection {
+                       get { return this.text_direction; }
+                       set {
+                               if (!Enum.IsDefined (typeof 
(ToolStripTextDirection), value))
+                                       throw new InvalidEnumArgumentException 
(string.Format ("Enum argument value '{0}' is not valid for 
ToolStripTextDirection", value));
+                               
+                               if (this.text_direction != value) {
+                                       this.text_direction = value;
+                                       this.CalculateAutoSize ();
+                                       this.Invalidate ();
+                               }
+                       }       
+               }
+
                [Localizable (true)]
                [DefaultValue (TextImageRelation.ImageBeforeText)]
                public TextImageRelation TextImageRelation {
@@ -830,6 +846,9 @@
                [EditorBrowsable (EditorBrowsableState.Never)]
                public void ResetPadding () { this.padding = 
this.DefaultPadding; }
 
+               [EditorBrowsable (EditorBrowsableState.Never)]
+               public void ResetTextDirection () { this.TextDirection = 
this.DefaultTextDirection; }
+
                public void Select ()
                {
                        if (!this.is_selected && this.CanSelect) {
@@ -1298,6 +1317,12 @@
                {
                        this.text_size = TextRenderer.MeasureText (this.Text == 
null ? string.Empty: this.text, this.Font, Size.Empty, 
TextFormatFlags.HidePrefix);
 
+                       // If our text is rotated, flip the width and height
+                       ToolStripTextDirection direction = 
this.GetTextDirection ();
+                       
+                       if (direction == ToolStripTextDirection.Vertical270 || 
direction == ToolStripTextDirection.Vertical90)
+                               this.text_size = new Size 
(this.text_size.Height, this.text_size.Width);
+                       
                        if (!this.auto_size || this is ToolStripControlHost)
                                return;
                        //this.text_size.Width += 6;
@@ -1443,6 +1468,8 @@
                        }
                }
 
+               internal virtual ToolStripTextDirection DefaultTextDirection { 
get { return ToolStripTextDirection.Inherit; } }
+
                internal virtual void Dismiss (ToolStripDropDownCloseReason 
reason)
                {
                        if (is_selected) {
@@ -1450,7 +1477,19 @@
                                this.Invalidate ();
                        }
                }
-
+               
+               private ToolStripTextDirection GetTextDirection ()
+               {
+                       if (this.TextDirection == 
ToolStripTextDirection.Inherit) {
+                               if (this.Parent != null)
+                                       return this.Parent.TextDirection;
+                               else
+                                       return 
ToolStripTextDirection.Horizontal;
+                       }
+                       
+                       return this.TextDirection;
+               }
+               
                internal virtual ToolStrip GetTopLevelToolStrip ()
                {
                        if (this.Parent != null)

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
      2007-07-05 20:29:47 UTC (rev 81435)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItemTextRenderEventArgs.cs
      2007-07-05 20:32:23 UTC (rev 81436)
@@ -48,7 +48,7 @@
                        this.text_rectangle = textRectangle;
                        this.text_color = textColor;
                        this.text_font = textFont;
-                       this.text_direction = ToolStripTextDirection.Horizontal;
+                       this.text_direction = item.TextDirection;
 
                        switch (textAlign) {
                                case ContentAlignment.BottomCenter:

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs 
    2007-07-05 20:29:47 UTC (rev 81435)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs 
    2007-07-05 20:32:23 UTC (rev 81436)
@@ -31,6 +31,7 @@
 using System.ComponentModel;
 using System.Drawing;
 using System.Drawing.Imaging;
+using System.Drawing.Drawing2D;
 
 namespace System.Windows.Forms
 {
@@ -245,9 +246,40 @@
 
                protected virtual void OnRenderItemText 
(ToolStripItemTextRenderEventArgs e)
                {
-                       TextRenderer.DrawText (e.Graphics, e.Text, e.TextFont, 
e.TextRectangle, e.TextColor, e.TextFormat);
-               
-                       ToolStripItemTextRenderEventHandler eh = 
(ToolStripItemTextRenderEventHandler)Events [RenderItemTextEvent];
+                       if (e.TextDirection == 
ToolStripTextDirection.Vertical90) {
+                               GraphicsState gs = e.Graphics.Save ();
+                               PointF p = new PointF 
(e.Graphics.Transform.OffsetX, e.Graphics.Transform.OffsetY);
+                               
+                               e.Graphics.ResetTransform ();
+                               e.Graphics.RotateTransform (90);
+                               
+                               RectangleF r = new RectangleF ((e.Item.Height - 
e.TextRectangle.Height) / 2, (e.TextRectangle.Width + p.X) * -1 - 18, 
e.TextRectangle.Height, e.TextRectangle.Width);
+                               
+                               StringFormat sf = new StringFormat ();
+                               sf.Alignment = StringAlignment.Center;
+                               
+                               e.Graphics.DrawString (e.Text, e.TextFont, 
ThemeEngine.Current.ResPool.GetSolidBrush (e.TextColor), r, sf);
+                               
+                               e.Graphics.Restore (gs);
+                       } else if (e.TextDirection == 
ToolStripTextDirection.Vertical270) {
+                               GraphicsState gs = e.Graphics.Save ();
+                               PointF p = new PointF 
(e.Graphics.Transform.OffsetX, e.Graphics.Transform.OffsetY);
+
+                               e.Graphics.ResetTransform ();
+                               e.Graphics.RotateTransform (270);
+
+                               RectangleF r = new RectangleF 
(-e.TextRectangle.Height - (e.Item.Height - e.TextRectangle.Height) / 2, 
(e.TextRectangle.Width + p.X) + 4, e.TextRectangle.Height, 
e.TextRectangle.Width);
+
+                               StringFormat sf = new StringFormat ();
+                               sf.Alignment = StringAlignment.Center;
+
+                               e.Graphics.DrawString (e.Text, e.TextFont, 
ThemeEngine.Current.ResPool.GetSolidBrush (e.TextColor), r, sf);
+
+                               e.Graphics.Restore (gs);
+                       } else
+                               TextRenderer.DrawText (e.Graphics, e.Text, 
e.TextFont, e.TextRectangle, e.TextColor, e.TextFormat);
+
+                       ToolStripItemTextRenderEventHandler eh = 
(ToolStripItemTextRenderEventHandler)Events[RenderItemTextEvent];
                        if (eh != null)
                                eh (this, e);
                }

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
    2007-07-05 20:29:47 UTC (rev 81435)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripSeparator.cs
    2007-07-05 20:32:23 UTC (rev 81436)
@@ -174,6 +174,14 @@
 
                [Browsable (false)]
                [EditorBrowsable (EditorBrowsableState.Never)]
+               [DefaultValue (ToolStripTextDirection.Horizontal)]
+               public override ToolStripTextDirection TextDirection {
+                       get { return base.TextDirection; }
+                       set { base.TextDirection = value; }
+               }
+
+               [Browsable (false)]
+               [EditorBrowsable (EditorBrowsableState.Never)]
                [DesignerSerializationVisibility 
(DesignerSerializationVisibility.Hidden)]
                public new TextImageRelation TextImageRelation {
                        get { return base.TextImageRelation; }
@@ -261,6 +269,10 @@
                        remove { base.TextChanged -= value; }
                }
                #endregion
+
+               #region Internal Method/Properties
+               internal override ToolStripTextDirection DefaultTextDirection { 
get { return ToolStripTextDirection.Horizontal; } }
+               #endregion
        }
 }
 #endif

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to