Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolBarButton.cs')
-rw-r--r--mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolBarButton.cs294
1 files changed, 294 insertions, 0 deletions
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolBarButton.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolBarButton.cs
new file mode 100644
index 00000000000..34c6ee3da2e
--- /dev/null
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolBarButton.cs
@@ -0,0 +1,294 @@
+//
+// System.Windows.Forms.ToolBarButton.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) 2004 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+// Ravindra (rkumar@novell.com)
+//
+// TODO:
+// - Adding a button to two toolbars
+//
+
+
+// NOT COMPLETE
+
+using System.ComponentModel;
+using System.ComponentModel.Design;
+using System.Drawing;
+using System.Drawing.Imaging;
+
+namespace System.Windows.Forms
+{
+ [DefaultProperty ("Text")]
+ [Designer ("System.Windows.Forms.Design.ToolBarButtonDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+ [DesignTimeVisible (false)]
+ [ToolboxItem (false)]
+ public class ToolBarButton : Component
+ {
+ #region instance variable
+ private bool enabled = true;
+ private int image_index = -1;
+ private ContextMenu menu;
+ private ToolBar parent;
+ private bool partial_push = false;
+ private bool pushed = false;
+ private ToolBarButtonStyle style = ToolBarButtonStyle.PushButton;
+ private object tag;
+ private string text = "";
+ private string tooltip = "";
+ private bool visible = true;
+ private Point location = new Point (ThemeEngine.Current.ToolBarGripWidth,
+ ThemeEngine.Current.ToolBarGripWidth);
+ internal bool dd_pressed = false; // to check for a mouse down on dropdown rect
+ internal bool hilight = false; // to hilight buttons in flat style
+ internal bool inside = false; // to handle the mouse move event with mouse pressed
+ internal bool wrapper = false; // to mark a wrapping button
+ internal bool pressed = false; // this is to check for mouse down on a button
+ #endregion
+
+ #region constructors
+ public ToolBarButton () { }
+
+ public ToolBarButton (string text)
+ {
+ this.text = text;
+ }
+ #endregion
+
+ #region internal properties
+ internal bool Hilight {
+ get { return hilight; }
+ set {
+ if (! pushed)
+ hilight = value;
+ else
+ hilight = false;
+ }
+ }
+
+ internal Point Location {
+ get { return location; }
+ set { location = value; }
+ }
+
+ internal bool Pressed {
+ get {
+ if (pressed && inside)
+ return true;
+ else
+ return false;
+ }
+ set { pressed = value; }
+ }
+
+ internal bool Wrapper {
+ get { return wrapper; }
+ set { wrapper = value; }
+ }
+ #endregion internal properties
+
+ #region properties
+ [DefaultValue (null)]
+ [TypeConverter (typeof (ReferenceConverter))]
+ public Menu DropDownMenu {
+ get { return menu; }
+
+ set {
+ if (value is ContextMenu)
+ menu = (ContextMenu) value;
+ else
+ throw new ArgumentException ("DropDownMenu must be of type ContextMenu.");
+ }
+ }
+
+ [DefaultValue (true)]
+ [Localizable (true)]
+ public bool Enabled {
+ get { return enabled; }
+ set {
+ if (value == enabled)
+ return;
+
+ enabled = value;
+ if (parent != null)
+ parent.Redraw (false);
+ }
+ }
+
+ [DefaultValue (-1)]
+ [Editor ("System.Windows.Forms.Design.ImageIndexEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+ [Localizable (true)]
+ [TypeConverter (typeof (ImageIndexConverter))]
+ public int ImageIndex {
+ get { return image_index; }
+ set {
+ if (value < -1)
+ throw new ArgumentException ("ImageIndex value must be above or equal to -1.");
+
+ if (value == image_index)
+ return;
+
+ image_index = value;
+ if (parent != null)
+ parent.Redraw (true);
+ }
+ }
+
+ [Browsable (false)]
+ public ToolBar Parent {
+ get { return parent; }
+ }
+
+ [DefaultValue (false)]
+ public bool PartialPush {
+ get { return partial_push; }
+ set {
+ if (value == partial_push)
+ return;
+
+ partial_push = value;
+ if (parent != null)
+ parent.Redraw (false);
+ }
+ }
+
+ [DefaultValue (false)]
+ public bool Pushed {
+ get { return pushed; }
+ set {
+ if (value == pushed)
+ return;
+
+ pushed = value;
+ if (pushed)
+ hilight = false;
+ if (parent != null)
+ parent.Redraw (false);
+ }
+ }
+
+ public Rectangle Rectangle {
+ get {
+ if (parent == null)
+ return Rectangle.Empty;
+ else if (visible && parent.Visible)
+ return parent.GetChildBounds (this);
+ else
+ return Rectangle.Empty;
+ }
+ }
+
+ [DefaultValue (ToolBarButtonStyle.PushButton)]
+ [RefreshProperties (RefreshProperties.Repaint)]
+ public ToolBarButtonStyle Style {
+ get { return style; }
+ set {
+ if (value == style)
+ return;
+
+ style = value;
+ if (parent != null)
+ parent.Redraw (true);
+ }
+ }
+
+ [Bindable (true)]
+ [DefaultValue (null)]
+ [Localizable (false)]
+ [TypeConverter (typeof (StringConverter))]
+ public object Tag {
+ get { return tag; }
+ set { tag = value; }
+ }
+
+ [DefaultValue ("")]
+ [Localizable (true)]
+ public string Text {
+ get { return text; }
+ set {
+ if (value == text)
+ return;
+
+ text = value;
+ if (parent != null)
+ parent.Redraw (true);
+ }
+ }
+
+ [DefaultValue ("")]
+ [Localizable (true)]
+ public string ToolTipText {
+ get { return tooltip; }
+ set { tooltip = value; }
+ }
+
+ [DefaultValue (true)]
+ [Localizable (true)]
+ public bool Visible {
+ get { return visible; }
+ set {
+ if (value == visible)
+ return;
+
+ visible = value;
+ if (parent != null)
+ parent.Redraw (true);
+ }
+ }
+ #endregion
+
+ #region internal methods
+ internal void SetParent (ToolBar parent)
+ {
+ this.parent = parent;
+ }
+
+ internal void Dump ()
+ {
+ Console.WriteLine ("TBButton: style: " + this.Style);
+ Console.WriteLine ("TBButton: wrapper: " + this.Wrapper);
+ Console.WriteLine ("TBButton: hilight: " + this.Hilight);
+ Console.WriteLine ("TBButton: loc: " + this.Location);
+ Console.WriteLine ("TBButton: rect: " + this.Rectangle);
+ Console.WriteLine ("TBButton: txt: " + this.Text);
+ Console.WriteLine ("TBButton: visible " + this.Visible);
+ Console.WriteLine ("TBButton: enabled: " + this.Enabled);
+ Console.WriteLine ("TBButton: image index: " + this.ImageIndex);
+ Console.WriteLine ("TBButton: pushed: " + this.Pushed);
+ Console.WriteLine ("TBButton: partial push: " + this.PartialPush);
+ }
+ #endregion
+
+ #region methods
+ protected override void Dispose (bool disposing)
+ {
+ base.Dispose (disposing);
+ }
+
+ public override string ToString ()
+ {
+ return string.Format ("ToolBarButton: {0}, Style: {1}", text, style);
+ }
+ #endregion
+ }
+}