-//\r
-// ToolStripComboBox.cs\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-// Copyright (c) 2006 Jonathan Pobst\r
-//\r
-// Authors:\r
-// Jonathan Pobst (monkey@jpobst.com)\r
-//\r
-#if NET_2_0\r
-using System.Drawing;\r
-using System.ComponentModel;\r
-\r
-namespace System.Windows.Forms\r
-{\r
- public class ToolStripComboBox : ToolStripControlHost\r
- {\r
- #region Public Constructors\r
- public ToolStripComboBox () : base (new ToolStripComboBoxControl ())\r
- {\r
- }\r
-\r
- public ToolStripComboBox (Control c) : base (c)\r
- {\r
- throw new NotSupportedException ();\r
- }\r
-\r
- public ToolStripComboBox (string name) : this ()\r
- {\r
- base.Control.Name = name;\r
- }\r
- #endregion\r
-\r
- #region Public Properties\r
- public ComboBox ComboBox {\r
- get { return (ComboBox)base.Control; }\r
- }\r
-\r
- public ComboBoxStyle DropDownStyle {\r
- get { return this.ComboBox.DropDownStyle; }\r
- set { this.ComboBox.DropDownStyle = value; }\r
- }\r
-\r
- public int DropDownWidth {\r
- get { return this.ComboBox.DropDownWidth; }\r
- set { this.ComboBox.DropDownWidth = value; }\r
- }\r
-\r
- public bool DroppedDown {\r
- get { return this.ComboBox.DroppedDown; }\r
- set { this.ComboBox.DroppedDown = value; }\r
- }\r
-\r
- [Localizable (true)]\r
- public bool IntegralHeight {\r
- get { return this.ComboBox.IntegralHeight; }\r
- set { this.ComboBox.IntegralHeight = value; }\r
- }\r
-\r
- [Localizable (true)]\r
- public ComboBox.ObjectCollection Items {\r
- get { return this.ComboBox.Items; }\r
- }\r
-\r
- [Localizable (true)]\r
- public int MaxDropDownItems {\r
- get { return this.ComboBox.MaxDropDownItems; }\r
- set { this.ComboBox.MaxDropDownItems = value; }\r
- }\r
-\r
- [Localizable (true)]\r
- public int MaxLength {\r
- get { return this.ComboBox.MaxLength; }\r
- set { this.ComboBox.MaxLength = value; }\r
- }\r
-\r
- public int SelectedIndex {\r
- get { return this.ComboBox.SelectedIndex; }\r
- set { this.ComboBox.SelectedIndex = value; }\r
- }\r
-\r
- [Bindable (true)]\r
- public Object SelectedItem {\r
- get { return this.ComboBox.SelectedItem; }\r
- set { this.ComboBox.SelectedItem = value; }\r
- }\r
-\r
- public string SelectedText {\r
- get { return this.ComboBox.SelectedText; }\r
- set { this.ComboBox.SelectedText = value; }\r
- }\r
-\r
- public int SelectionLength {\r
- get { return this.ComboBox.SelectionLength; }\r
- set { this.ComboBox.SelectionLength = value; }\r
- }\r
-\r
- public int SelectionStart {\r
- get { return this.ComboBox.SelectionStart; }\r
- set { this.ComboBox.SelectionStart = value; }\r
- }\r
-\r
- public bool Sorted {\r
- get { return this.ComboBox.Sorted; }\r
- set { this.ComboBox.Sorted = value; }\r
- }\r
- #endregion\r
-\r
- #region Protected Properties\r
- protected internal override Padding DefaultMargin { get { return new Padding (2); } }\r
- protected override Size DefaultSize { get { return new Size (100, 22); } }\r
- #endregion\r
-\r
- #region Public Methods\r
- public void BeginUpdate ()\r
- {\r
- this.ComboBox.BeginUpdate ();\r
- }\r
-\r
- public void EndUpdate ()\r
- {\r
- this.ComboBox.EndUpdate ();\r
- }\r
-\r
- public int FindString (string s)\r
- {\r
- return this.ComboBox.FindString (s);\r
- }\r
-\r
- public int FindString (string s, int startIndex)\r
- {\r
- return this.ComboBox.FindString (s, startIndex);\r
- }\r
-\r
- public int FindStringExact (string s)\r
- {\r
- return this.ComboBox.FindStringExact (s);\r
- }\r
-\r
- public int FindStringExact (string s, int startIndex)\r
- {\r
- return this.ComboBox.FindStringExact (s, startIndex);\r
- }\r
-\r
- public int GetItemHeight (int index)\r
- {\r
- return this.ComboBox.GetItemHeight (index);\r
- }\r
-\r
- public override Size GetPreferredSize (Size constrainingSize)\r
- {\r
- return base.GetPreferredSize (constrainingSize);\r
- }\r
-\r
- public void Select (int start, int length)\r
- {\r
- this.ComboBox.Select (start, length);\r
- }\r
-\r
- public void SelectAll ()\r
- {\r
- this.ComboBox.SelectAll ();\r
- }\r
-\r
- public override string ToString ()\r
- {\r
- return this.ComboBox.ToString ();\r
- }\r
- #endregion\r
-\r
- #region Protected Methods\r
- protected virtual void OnDropDown (EventArgs e)\r
- {\r
- if (DropDown != null) DropDown (this, e);\r
- }\r
-\r
- protected virtual void OnDropDownClosed (EventArgs e)\r
- {\r
- if (DropDownClosed != null) DropDownClosed (this, e);\r
- }\r
-\r
- protected virtual void OnDropDownStyleChanged (EventArgs e)\r
- {\r
- if (DropDownStyleChanged != null) DropDownStyleChanged (this, e);\r
- }\r
-\r
- protected virtual void OnSelectedIndexChanged (EventArgs e)\r
- {\r
- if (SelectedIndexChanged != null) SelectedIndexChanged (this, e);\r
- }\r
-\r
- protected virtual void OnSelectionChangeCommitted (EventArgs e)\r
- {\r
- }\r
-\r
- [MonoTODO ("Needs to hook into DropDownClosed and TextUpdate when ComboBox 2.0 has them.")]\r
- protected override void OnSubscribeControlEvents (Control control)\r
- {\r
- base.OnSubscribeControlEvents (control);\r
-\r
- this.ComboBox.DropDown += new EventHandler (HandleDropDown);\r
- this.ComboBox.DropDownStyleChanged += new EventHandler (HandleDropDownStyleChanged);\r
- this.ComboBox.SelectedIndexChanged += new EventHandler (HandleSelectedIndexChanged);\r
- }\r
-\r
- protected virtual void OnTextUpdate (EventArgs e)\r
- {\r
- if (TextUpdate != null) TextUpdate (this, e);\r
- }\r
-\r
- protected override void OnUnsubscribeControlEvents (Control control)\r
- {\r
- base.OnUnsubscribeControlEvents (control);\r
- }\r
- #endregion\r
-\r
- #region Public Events\r
- [Browsable (false)]\r
- [EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler DoubleClick;\r
- public event EventHandler DropDown;\r
- public event EventHandler DropDownClosed;\r
- public event EventHandler DropDownStyleChanged;\r
- public event EventHandler SelectedIndexChanged;\r
- public event EventHandler TextUpdate;\r
- #endregion\r
-\r
- #region Private Methods\r
- private void HandleDropDown (object sender, EventArgs e)\r
- {\r
- OnDropDown (e);\r
- }\r
-\r
- private void HandleDropDownStyleChanged (object sender, EventArgs e)\r
- {\r
- OnDisplayStyleChanged (e);\r
- }\r
-\r
- private void HandleSelectedIndexChanged (object sender, EventArgs e)\r
- {\r
- OnSelectedIndexChanged (e);\r
- }\r
- #endregion\r
-\r
- private class ToolStripComboBoxControl : ComboBox\r
- {\r
- public ToolStripComboBoxControl () : base ()\r
- {\r
- this.border_style = BorderStyle.None;\r
- }\r
- }\r
- }\r
-}\r
-#endif
\ No newline at end of file
+//
+// ToolStripComboBox.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// 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) 2006 Jonathan Pobst
+//
+// Authors:
+// Jonathan Pobst (monkey@jpobst.com)
+//
+#if NET_2_0
+using System.Drawing;
+using System.ComponentModel;
+using System.Windows.Forms.Design;
+
+namespace System.Windows.Forms
+{
+ [DefaultProperty ("Items")]
+ [ToolStripItemDesignerAvailability (ToolStripItemDesignerAvailability.ToolStrip)]
+ public class ToolStripComboBox : ToolStripControlHost
+ {
+ #region Public Constructors
+ public ToolStripComboBox () : base (new ToolStripComboBoxControl ())
+ {
+ }
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public ToolStripComboBox (Control c) : base (c)
+ {
+ throw new NotSupportedException ();
+ }
+
+ public ToolStripComboBox (string name) : this ()
+ {
+ base.Name = name;
+ }
+ #endregion
+
+ #region Public Properties
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public override Image BackgroundImage {
+ get { return base.BackgroundImage; }
+ set { base.BackgroundImage = value; }
+ }
+
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public override ImageLayout BackgroundImageLayout {
+ get { return base.BackgroundImageLayout; }
+ set { base.BackgroundImageLayout = value; }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public ComboBox ComboBox {
+ get { return (ComboBox)base.Control; }
+ }
+
+ [MonoTODO ("Stub, will not actually affect anything.")]
+ [Browsable (false)]
+ [DefaultValue (106)]
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public int DropDownHeight {
+ get { return 106; }
+ set { }
+ }
+
+ [DefaultValue (ComboBoxStyle.DropDown)]
+ [RefreshProperties (RefreshProperties.All)]
+ public ComboBoxStyle DropDownStyle {
+ get { return this.ComboBox.DropDownStyle; }
+ set { this.ComboBox.DropDownStyle = value; }
+ }
+
+ public int DropDownWidth {
+ get { return this.ComboBox.DropDownWidth; }
+ set { this.ComboBox.DropDownWidth = value; }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public bool DroppedDown {
+ get { return this.ComboBox.DroppedDown; }
+ set { this.ComboBox.DroppedDown = value; }
+ }
+
+ [Localizable (true)]
+ [DefaultValue (true)]
+ public bool IntegralHeight {
+ get { return this.ComboBox.IntegralHeight; }
+ set { this.ComboBox.IntegralHeight = value; }
+ }
+
+ [Localizable (true)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
+ [Editor ("System.Windows.Forms.Design.ListControlStringCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+ public ComboBox.ObjectCollection Items {
+ get { return this.ComboBox.Items; }
+ }
+
+ [Localizable (true)]
+ [DefaultValue (8)]
+ public int MaxDropDownItems {
+ get { return this.ComboBox.MaxDropDownItems; }
+ set { this.ComboBox.MaxDropDownItems = value; }
+ }
+
+ [Localizable (true)]
+ [DefaultValue (0)]
+ public int MaxLength {
+ get { return this.ComboBox.MaxLength; }
+ set { this.ComboBox.MaxLength = value; }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public int SelectedIndex {
+ get { return this.ComboBox.SelectedIndex; }
+ set {
+ this.ComboBox.SelectedIndex = value;
+ Text = Items [value].ToString ();
+ }
+ }
+
+ [Bindable (true)]
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public Object SelectedItem {
+ get { return this.ComboBox.SelectedItem; }
+ set { this.ComboBox.SelectedItem = value; }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public string SelectedText {
+ get { return this.ComboBox.SelectedText; }
+ set { this.ComboBox.SelectedText = value; }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public int SelectionLength {
+ get { return this.ComboBox.SelectionLength; }
+ set { this.ComboBox.SelectionLength = value; }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public int SelectionStart {
+ get { return this.ComboBox.SelectionStart; }
+ set { this.ComboBox.SelectionStart = value; }
+ }
+
+ [DefaultValue (false)]
+ public bool Sorted {
+ get { return this.ComboBox.Sorted; }
+ set { this.ComboBox.Sorted = value; }
+ }
+ #endregion
+
+ #region Protected Properties
+ protected internal override Padding DefaultMargin { get { return new Padding (1, 0, 1, 0); } }
+ protected override Size DefaultSize { get { return new Size (100, 22); } }
+ #endregion
+
+ #region Public Methods
+ public void BeginUpdate ()
+ {
+ this.ComboBox.BeginUpdate ();
+ }
+
+ public void EndUpdate ()
+ {
+ this.ComboBox.EndUpdate ();
+ }
+
+ public int FindString (string s)
+ {
+ return this.ComboBox.FindString (s);
+ }
+
+ public int FindString (string s, int startIndex)
+ {
+ return this.ComboBox.FindString (s, startIndex);
+ }
+
+ public int FindStringExact (string s)
+ {
+ return this.ComboBox.FindStringExact (s);
+ }
+
+ public int FindStringExact (string s, int startIndex)
+ {
+ return this.ComboBox.FindStringExact (s, startIndex);
+ }
+
+ public int GetItemHeight (int index)
+ {
+ return this.ComboBox.GetItemHeight (index);
+ }
+
+ public override Size GetPreferredSize (Size constrainingSize)
+ {
+ return base.GetPreferredSize (constrainingSize);
+ }
+
+ public void Select (int start, int length)
+ {
+ this.ComboBox.Select (start, length);
+ }
+
+ public void SelectAll ()
+ {
+ this.ComboBox.SelectAll ();
+ }
+
+ public override string ToString ()
+ {
+ return this.ComboBox.ToString ();
+ }
+ #endregion
+
+ #region Protected Methods
+ protected virtual void OnDropDown (EventArgs e)
+ {
+ EventHandler eh = (EventHandler)(Events [DropDownEvent]);
+ if (eh != null)
+ eh (this, e);
+ }
+
+ protected virtual void OnDropDownClosed (EventArgs e)
+ {
+ EventHandler eh = (EventHandler)(Events [DropDownClosedEvent]);
+ if (eh != null)
+ eh (this, e);
+ }
+
+ protected virtual void OnDropDownStyleChanged (EventArgs e)
+ {
+ EventHandler eh = (EventHandler)(Events [DropDownStyleChangedEvent]);
+ if (eh != null)
+ eh (this, e);
+ }
+
+ protected virtual void OnSelectedIndexChanged (EventArgs e)
+ {
+ EventHandler eh = (EventHandler)(Events [SelectedIndexChangedEvent]);
+ if (eh != null)
+ eh (this, e);
+ }
+
+ protected virtual void OnSelectionChangeCommitted (EventArgs e)
+ {
+ }
+
+ [MonoTODO ("Needs to hook into DropDownClosed and TextUpdate when ComboBox 2.0 has them.")]
+ protected override void OnSubscribeControlEvents (Control control)
+ {
+ base.OnSubscribeControlEvents (control);
+
+ this.ComboBox.DropDown += new EventHandler (HandleDropDown);
+ this.ComboBox.DropDownStyleChanged += new EventHandler (HandleDropDownStyleChanged);
+ this.ComboBox.SelectedIndexChanged += new EventHandler (HandleSelectedIndexChanged);
+ }
+
+ protected virtual void OnTextUpdate (EventArgs e)
+ {
+ EventHandler eh = (EventHandler)(Events [TextUpdateEvent]);
+ if (eh != null)
+ eh (this, e);
+ }
+
+ protected override void OnUnsubscribeControlEvents (Control control)
+ {
+ base.OnUnsubscribeControlEvents (control);
+ }
+ #endregion
+
+ #region Public Events
+ static object DropDownEvent = new object ();
+ static object DropDownClosedEvent = new object ();
+ static object DropDownStyleChangedEvent = new object ();
+ static object SelectedIndexChangedEvent = new object ();
+ static object TextUpdateEvent = new object ();
+
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public new event EventHandler DoubleClick {
+ add { base.DoubleClick += value; }
+ remove { base.DoubleClick -= value; }
+ }
+
+ public event EventHandler DropDown {
+ add { Events.AddHandler (DropDownEvent, value); }
+ remove { Events.RemoveHandler (DropDownEvent, value); }
+ }
+
+ public event EventHandler DropDownClosed {
+ add { Events.AddHandler (DropDownClosedEvent, value); }
+ remove { Events.RemoveHandler (DropDownClosedEvent, value); }
+ }
+
+ public event EventHandler DropDownStyleChanged {
+ add { Events.AddHandler (DropDownStyleChangedEvent, value); }
+ remove { Events.RemoveHandler (DropDownStyleChangedEvent, value); }
+ }
+
+ public event EventHandler SelectedIndexChanged {
+ add { Events.AddHandler (SelectedIndexChangedEvent, value); }
+ remove { Events.RemoveHandler (SelectedIndexChangedEvent, value); }
+ }
+
+ public event EventHandler TextUpdate {
+ add { Events.AddHandler (TextUpdateEvent, value); }
+ remove { Events.RemoveHandler (TextUpdateEvent, value); }
+ }
+ #endregion
+
+ #region Private Methods
+ private void HandleDropDown (object sender, EventArgs e)
+ {
+ OnDropDown (e);
+ }
+
+ private void HandleDropDownStyleChanged (object sender, EventArgs e)
+ {
+ OnDropDownStyleChanged (e);
+ }
+
+ private void HandleSelectedIndexChanged (object sender, EventArgs e)
+ {
+ OnSelectedIndexChanged (e);
+ }
+ #endregion
+
+ private class ToolStripComboBoxControl : ComboBox
+ {
+ public ToolStripComboBoxControl () : base ()
+ {
+ this.border_style = BorderStyle.None;
+ }
+ }
+ }
+}
+#endif