671 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			671 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.ComponentModel;
 | |
| 
 | |
| using System.Globalization;
 | |
| using System.Drawing;
 | |
| using System.Runtime.InteropServices;
 | |
| using DevComponents.DotNetBar;
 | |
| using System.Windows.Forms;
 | |
| using System;
 | |
| 
 | |
| namespace DevComponents.DotNetBar.Controls
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Represents the bound data navigator in current DotNetBar style.
 | |
|     /// </summary>
 | |
|     [DefaultEvent("RefreshItems"), Description("DotNetBar Binding Navigator Control"), ClassInterface(ClassInterfaceType.AutoDispatch), DefaultProperty("BindingSource")]
 | |
|     [Designer("DevComponents.DotNetBar.Design.BindingNavigatorExDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf")]
 | |
|     [ToolboxBitmap(typeof(BindingNavigatorEx), "Controls.BindingNavigatorEx.ico"), ToolboxItem(true)]
 | |
|     public class BindingNavigatorEx : Bar, ISupportInitialize
 | |
|     {
 | |
|         #region Private Variables
 | |
|         private ButtonItem _AddNewButton;
 | |
|         private bool _AddNewItemUserEnabled;
 | |
|         private BindingSource _BindingSource;
 | |
|         private LabelItem _CountLabel;
 | |
|         private string _CountLabelFormat;
 | |
|         private ButtonItem _DeleteButton;
 | |
|         private bool _DeleteButtonUserEnabled;
 | |
|         private bool _Initializing;
 | |
|         private ButtonItem _MoveFirstButton;
 | |
|         private ButtonItem _MoveLastButton;
 | |
|         private ButtonItem _MoveNextButton;
 | |
|         private ButtonItem _MovePreviousButton;
 | |
|         private TextBoxItem _PositionTextBox;
 | |
|         #endregion
 | |
| 
 | |
|         #region Constructor
 | |
|         /// <summary>
 | |
|         /// Creates new instance of BindingNavigatorEx
 | |
|         /// </summary>
 | |
|         [EditorBrowsable(EditorBrowsableState.Never)]
 | |
|         public BindingNavigatorEx()
 | |
|             : this(false)
 | |
|         {
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Creates new instance of BindingNavigatorEx
 | |
|         /// </summary>
 | |
|         public BindingNavigatorEx(bool addStandardItems)
 | |
|         {
 | |
|             _CountLabelFormat = "of {0}";
 | |
|             _AddNewItemUserEnabled = true;
 | |
|             _DeleteButtonUserEnabled = true;
 | |
|             if (addStandardItems)
 | |
|             {
 | |
|                 this.AddDefaultItems();
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Creates new instance of BindingNavigatorEx
 | |
|         /// </summary>
 | |
|         [EditorBrowsable(EditorBrowsableState.Never)]
 | |
|         public BindingNavigatorEx(IContainer container)
 | |
|             : this(false)
 | |
|         {
 | |
|             if (container == null)
 | |
|             {
 | |
|                 throw new ArgumentNullException("container");
 | |
|             }
 | |
|             container.Add(this);
 | |
| 
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Creates new instance of BindingNavigatorEx
 | |
|         /// </summary>
 | |
|         public BindingNavigatorEx(BindingSource bindingSource)
 | |
|             : this(true)
 | |
|         {
 | |
|             this.BindingSource = bindingSource;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region Internal Implementation
 | |
| 
 | |
|         private void AcceptNewPosition()
 | |
|         {
 | |
|             if (_PositionTextBox != null && _BindingSource != null)
 | |
|             {
 | |
|                 int position = this._BindingSource.Position;
 | |
|                 try
 | |
|                 {
 | |
|                     position = Convert.ToInt32(this._PositionTextBox.Text, CultureInfo.CurrentCulture) - 1;
 | |
|                 }
 | |
|                 catch (FormatException)
 | |
|                 {
 | |
|                 }
 | |
|                 catch (OverflowException)
 | |
|                 {
 | |
|                 }
 | |
|                 if (position != this._BindingSource.Position)
 | |
|                 {
 | |
|                     this._BindingSource.Position = position;
 | |
|                 }
 | |
|                 this.RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Adds default items that make up the binding navigation control.
 | |
|         /// </summary>
 | |
|         public virtual void AddDefaultItems()
 | |
|         {
 | |
|             this.MoveFirstButton = new ButtonItem();
 | |
|             this.MovePreviousButton = new ButtonItem();
 | |
|             this.MoveNextButton = new ButtonItem();
 | |
|             this.MoveLastButton = new ButtonItem();
 | |
|             this.PositionTextBox = new TextBoxItem();
 | |
|             this.CountLabel = new LabelItem();
 | |
|             this.AddNewRecordButton = new ButtonItem();
 | |
|             this.DeleteButton = new ButtonItem();
 | |
|             char ch = (string.IsNullOrEmpty(base.Name) || char.IsLower(base.Name[0])) ? 'b' : 'B';
 | |
|             this.MoveFirstButton.Name = ch + "indingNavigatorMoveFirstItem";
 | |
|             this.MovePreviousButton.Name = ch + "indingNavigatorMovePreviousItem";
 | |
|             this.MoveNextButton.Name = ch + "indingNavigatorMoveNextItem";
 | |
|             this.MoveLastButton.Name = ch + "indingNavigatorMoveLastItem";
 | |
|             this.PositionTextBox.Name = ch + "indingNavigatorPositionItem";
 | |
|             this.CountLabel.Name = ch + "indingNavigatorCountItem";
 | |
|             this.AddNewRecordButton.Name = ch + "indingNavigatorAddNewItem";
 | |
|             this.DeleteButton.Name = ch + "indingNavigatorDeleteItem";
 | |
|             this.MoveFirstButton.Text = "Move first";
 | |
|             this.MovePreviousButton.Text = "Move previous";
 | |
|             this.MoveNextButton.Text = "Move next";
 | |
|             this.MoveLastButton.Text = "Move last";
 | |
|             this.AddNewRecordButton.Text = "Add new";
 | |
|             this.DeleteButton.Text = "Delete";
 | |
|             this.PositionTextBox.AccessibleName = "Position";
 | |
| 
 | |
|             _PositionTextBox.BeginGroup = true;
 | |
|             _MoveNextButton.BeginGroup = true;
 | |
|             _MoveFirstButton.Image = BarFunctions.LoadBitmap("SystemImages.FirstRecord.png");
 | |
|             _MovePreviousButton.Image = BarFunctions.LoadBitmap("SystemImages.PreviousRecord.png");
 | |
|             _MoveNextButton.Image = BarFunctions.LoadBitmap("SystemImages.NextRecord.png"); ;
 | |
|             _MoveLastButton.Image = BarFunctions.LoadBitmap("SystemImages.LastRecord.png"); ;
 | |
|             _AddNewButton.Image = BarFunctions.LoadBitmap("SystemImages.NewRecord.png"); ;
 | |
|             _DeleteButton.Image = BarFunctions.LoadBitmap("SystemImages.Delete.png"); ;
 | |
| 
 | |
|             _PositionTextBox.TextBoxWidth = 54;
 | |
|             this.Items.AddRange(new BaseItem[] { this.MoveFirstButton, this.MovePreviousButton, this.PositionTextBox, this.CountLabel, this.MoveNextButton, this.MoveLastButton, this.AddNewRecordButton, this.DeleteButton });
 | |
|         }
 | |
| 
 | |
| 
 | |
|         private void CancelNewPosition()
 | |
|         {
 | |
|             this.RefreshStateInternal();
 | |
|         }
 | |
| 
 | |
|         private bool _IsDisposing = false;
 | |
|         protected override void Dispose(bool disposing)
 | |
|         {
 | |
|             if (disposing)
 | |
|             {
 | |
|                 _IsDisposing = true;
 | |
|                 try
 | |
|                 {
 | |
|                     this.BindingSource = null;
 | |
|                 }
 | |
|                 finally
 | |
|                 {
 | |
|                     _IsDisposing = false;
 | |
|                 }
 | |
|             }
 | |
|             base.Dispose(disposing);
 | |
|         }
 | |
| 
 | |
|         private void OnAddNew(object sender, EventArgs e)
 | |
|         {
 | |
|             if (this.Validate() && _BindingSource != null)
 | |
|             {
 | |
|                 _BindingSource.EndEdit();
 | |
|                 _BindingSource.AddNew();
 | |
|                 RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnAddNewItemEnabledChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             if (AddNewRecordButton != null)
 | |
|             {
 | |
|                 _AddNewItemUserEnabled = _AddNewButton.Enabled;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnBindingSourceListChanged(object sender, ListChangedEventArgs e)
 | |
|         {
 | |
|             RefreshStateInternal();
 | |
|         }
 | |
| 
 | |
|         private void OnBindingSourceStateChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             RefreshStateInternal();
 | |
|         }
 | |
| 
 | |
|         private void OnDelete(object sender, EventArgs e)
 | |
|         {
 | |
|             if (this.Validate() && _BindingSource != null)
 | |
|             {
 | |
|                 _BindingSource.RemoveCurrent();
 | |
|                 RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnDeleteItemEnabledChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             if (DeleteButton != null)
 | |
|             {
 | |
|                 _DeleteButtonUserEnabled = _DeleteButton.Enabled;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnMoveFirst(object sender, EventArgs e)
 | |
|         {
 | |
|             if (Validate() && _BindingSource != null)
 | |
|             {
 | |
|                 _BindingSource.MoveFirst();
 | |
|                 RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnMoveLast(object sender, EventArgs e)
 | |
|         {
 | |
|             if (Validate() && _BindingSource != null)
 | |
|             {
 | |
|                 _BindingSource.MoveLast();
 | |
|                 RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnMoveNext(object sender, EventArgs e)
 | |
|         {
 | |
|             if (Validate() && this._BindingSource != null)
 | |
|             {
 | |
|                 _BindingSource.MoveNext();
 | |
|                 RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnMovePrevious(object sender, EventArgs e)
 | |
|         {
 | |
|             if (Validate() && _BindingSource != null)
 | |
|             {
 | |
|                 _BindingSource.MovePrevious();
 | |
|                 RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void OnPositionKey(object sender, KeyEventArgs e)
 | |
|         {
 | |
|             Keys keyCode = e.KeyCode;
 | |
|             if (keyCode != Keys.Return)
 | |
|             {
 | |
|                 if (keyCode != Keys.Escape)
 | |
|                 {
 | |
|                     return;
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 AcceptNewPosition();
 | |
|                 return;
 | |
|             }
 | |
|             CancelNewPosition();
 | |
|         }
 | |
| 
 | |
|         private void OnPositionLostFocus(object sender, EventArgs e)
 | |
|         {
 | |
|             AcceptNewPosition();
 | |
|         }
 | |
| 
 | |
|         protected virtual void OnRefreshState()
 | |
|         {
 | |
|             RefreshState();
 | |
|         }
 | |
| 
 | |
|         [EditorBrowsable(EditorBrowsableState.Advanced)]
 | |
|         protected virtual void RefreshState()
 | |
|         {
 | |
|             int count;
 | |
|             int currentPosition;
 | |
|             bool allowNew;
 | |
|             bool allowRemove;
 | |
|             if (_BindingSource == null)
 | |
|             {
 | |
|                 count = 0;
 | |
|                 currentPosition = 0;
 | |
|                 allowNew = false;
 | |
|                 allowRemove = false;
 | |
|             }
 | |
|             else if (_BindingSource.Position == -1)
 | |
|             {
 | |
|                 count = -1;
 | |
|                 currentPosition = -1;
 | |
|                 allowNew = true;
 | |
|                 allowRemove = false;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 count = _BindingSource.Count;
 | |
|                 currentPosition = _BindingSource.Position + 1;
 | |
|                 allowNew = _BindingSource.AllowNew;
 | |
|                 allowRemove = _BindingSource.AllowRemove;
 | |
|             }
 | |
|             if (!base.DesignMode)
 | |
|             {
 | |
|                 if (MoveFirstButton != null)
 | |
|                 {
 | |
|                     _MoveFirstButton.Enabled = currentPosition > 1;
 | |
|                 }
 | |
|                 if (MovePreviousButton != null)
 | |
|                 {
 | |
|                     _MovePreviousButton.Enabled = currentPosition > 1;
 | |
|                 }
 | |
|                 if (MoveNextButton != null)
 | |
|                 {
 | |
|                     _MoveNextButton.Enabled = currentPosition < count;
 | |
|                 }
 | |
|                 if (MoveLastButton != null)
 | |
|                 {
 | |
|                     _MoveLastButton.Enabled = currentPosition < count;
 | |
|                 }
 | |
|                 if (AddNewRecordButton != null)
 | |
|                 {
 | |
|                     EventHandler handler = this.OnAddNewItemEnabledChanged;
 | |
|                     _AddNewButton.EnabledChanged -= handler;
 | |
|                     _AddNewButton.Enabled = _AddNewItemUserEnabled && allowNew;
 | |
|                     _AddNewButton.EnabledChanged += handler;
 | |
|                 }
 | |
|                 if (DeleteButton != null)
 | |
|                 {
 | |
|                     EventHandler handler2 = OnDeleteItemEnabledChanged;
 | |
|                     _DeleteButton.EnabledChanged -= handler2;
 | |
|                     _DeleteButton.Enabled = (this._DeleteButtonUserEnabled && allowRemove) && (count > 0);
 | |
|                     _DeleteButton.EnabledChanged += handler2;
 | |
|                 }
 | |
|                 if (PositionTextBox != null)
 | |
|                 {
 | |
|                     _PositionTextBox.Enabled = (currentPosition > 0) && (count > 0);
 | |
|                 }
 | |
|                 if (CountLabel != null)
 | |
|                 {
 | |
|                     _CountLabel.Enabled = count > 0;
 | |
|                 }
 | |
|             }
 | |
|             if (_PositionTextBox != null)
 | |
|             {
 | |
|                 _PositionTextBox.Text = currentPosition.ToString(CultureInfo.CurrentCulture);
 | |
|             }
 | |
|             if (_CountLabel != null)
 | |
|             {
 | |
|                 _CountLabel.Text = base.DesignMode ? CountLabelFormat : string.Format(CultureInfo.CurrentCulture, CountLabelFormat, new object[] { count });
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void RefreshStateInternal()
 | |
|         {
 | |
|             if (!_Initializing && !_IsDisposing)
 | |
|                 OnRefreshState();
 | |
|         }
 | |
| 
 | |
|         public bool Validate()
 | |
|         {
 | |
|             bool flag = false;
 | |
|             System.Reflection.MethodInfo mi = ((Control)this).GetType().GetMethod("ValidateActiveControl", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
 | |
|             if (mi != null)
 | |
|             {
 | |
|                 return (bool)mi.Invoke(this, new object[] { flag });
 | |
|             }
 | |
|             return true;
 | |
|         }
 | |
| 
 | |
|         private void WireUpBindingSource(ref BindingSource oldBindingSource, BindingSource newBindingSource)
 | |
|         {
 | |
|             if (oldBindingSource != newBindingSource)
 | |
|             {
 | |
|                 if (oldBindingSource != null)
 | |
|                 {
 | |
|                     oldBindingSource.PositionChanged -= OnBindingSourceStateChanged;
 | |
|                     oldBindingSource.CurrentChanged -= OnBindingSourceStateChanged;
 | |
|                     oldBindingSource.CurrentItemChanged -= OnBindingSourceStateChanged;
 | |
|                     oldBindingSource.DataSourceChanged -= OnBindingSourceStateChanged;
 | |
|                     oldBindingSource.DataMemberChanged -= OnBindingSourceStateChanged;
 | |
|                     oldBindingSource.ListChanged -= OnBindingSourceListChanged;
 | |
|                 }
 | |
|                 if (newBindingSource != null)
 | |
|                 {
 | |
|                     newBindingSource.PositionChanged += OnBindingSourceStateChanged;
 | |
|                     newBindingSource.CurrentChanged += OnBindingSourceStateChanged;
 | |
|                     newBindingSource.CurrentItemChanged += OnBindingSourceStateChanged;
 | |
|                     newBindingSource.DataSourceChanged += OnBindingSourceStateChanged;
 | |
|                     newBindingSource.DataMemberChanged += OnBindingSourceStateChanged;
 | |
|                     newBindingSource.ListChanged += OnBindingSourceListChanged;
 | |
|                 }
 | |
|                 oldBindingSource = newBindingSource;
 | |
|                 this.RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void WireUpButton(ref ButtonItem oldButton, ButtonItem newButton, EventHandler clickHandler)
 | |
|         {
 | |
|             if (oldButton != newButton)
 | |
|             {
 | |
|                 if (oldButton != null)
 | |
|                 {
 | |
|                     oldButton.Click -= clickHandler;
 | |
|                 }
 | |
|                 if (newButton != null)
 | |
|                 {
 | |
|                     newButton.Click += clickHandler;
 | |
|                 }
 | |
|                 oldButton = newButton;
 | |
|                 this.RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void WireUpLabel(ref LabelItem oldLabel, LabelItem newLabel)
 | |
|         {
 | |
|             if (oldLabel != newLabel)
 | |
|             {
 | |
|                 oldLabel = newLabel;
 | |
|                 this.RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void WireUpTextBox(ref TextBoxItem oldTextBox, TextBoxItem newTextBox, KeyEventHandler keyUpHandler, EventHandler lostFocusHandler)
 | |
|         {
 | |
|             if (oldTextBox != newTextBox)
 | |
|             {
 | |
|                 if (oldTextBox != null)
 | |
|                 {
 | |
|                     oldTextBox.KeyUp -= keyUpHandler;
 | |
|                     oldTextBox.LostFocus -= lostFocusHandler;
 | |
|                 }
 | |
|                 if (newTextBox != null)
 | |
|                 {
 | |
|                     newTextBox.KeyUp += keyUpHandler;
 | |
|                     newTextBox.LostFocus += lostFocusHandler;
 | |
|                 }
 | |
|                 oldTextBox = newTextBox;
 | |
|                 this.RefreshStateInternal();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the reference to Add New record button.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Category("Items"), TypeConverter(typeof(ReferenceConverter)), Description("BindingNavigatorAddNewItemPropDescr")]
 | |
|         public ButtonItem AddNewRecordButton
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_AddNewButton != null && _AddNewButton.IsDisposed)
 | |
|                 {
 | |
|                     _AddNewButton = null;
 | |
|                 }
 | |
|                 return _AddNewButton;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 if ((_AddNewButton != value) && (value != null))
 | |
|                 {
 | |
|                     value.EnabledChanged += OnAddNewItemEnabledChanged;
 | |
|                     _AddNewItemUserEnabled = value.Enabled;
 | |
|                 }
 | |
|                 WireUpButton(ref _AddNewButton, value, OnAddNew);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the binding source for the navigator.
 | |
|         /// </summary>
 | |
|         [Category("Data"), Description("Gets or sets the binding source for the navigator."), DefaultValue((string)null), TypeConverter(typeof(ReferenceConverter))]
 | |
|         public BindingSource BindingSource
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _BindingSource;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 WireUpBindingSource(ref _BindingSource, value);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the label which represents the items count.
 | |
|         /// </summary>
 | |
|         [TypeConverter(typeof(ReferenceConverter)), Category("Items"), Description("Indicates label which represents the items count.")]
 | |
|         public LabelItem CountLabel
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_CountLabel != null && _CountLabel.IsDisposed)
 | |
|                 {
 | |
|                     _CountLabel = null;
 | |
|                 }
 | |
|                 return _CountLabel;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 this.WireUpLabel(ref _CountLabel, value);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Indicates the format string for the label which displays the number of items bound.
 | |
|         /// </summary>
 | |
|         [Description("Indicates the format string for the label which displays the number of items bound."), Category("Appearance")]
 | |
|         public string CountLabelFormat
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return _CountLabelFormat;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 if (_CountLabelFormat != value)
 | |
|                 {
 | |
|                     _CountLabelFormat = value;
 | |
|                     RefreshStateInternal();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the item which deletes current record.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Description("Indicates item which deletes current record."), TypeConverter(typeof(ReferenceConverter)), Category("Items")]
 | |
|         public ButtonItem DeleteButton
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if ((this._DeleteButton != null) && this._DeleteButton.IsDisposed)
 | |
|                 {
 | |
|                     _DeleteButton = null;
 | |
|                 }
 | |
|                 return _DeleteButton;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 if ((this._DeleteButton != value) && (value != null))
 | |
|                 {
 | |
|                     value.EnabledChanged += new EventHandler(this.OnDeleteItemEnabledChanged);
 | |
|                     _DeleteButtonUserEnabled = value.Enabled;
 | |
|                 }
 | |
|                 this.WireUpButton(ref _DeleteButton, value, new EventHandler(this.OnDelete));
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets or sets the item which moves to first record.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), TypeConverter(typeof(ReferenceConverter)), Category("Items"), Description("Indicates item which moves to first record.")]
 | |
|         public ButtonItem MoveFirstButton
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_MoveFirstButton != null && _MoveFirstButton.IsDisposed)
 | |
|                 {
 | |
|                     _MoveFirstButton = null;
 | |
|                 }
 | |
|                 return _MoveFirstButton;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 WireUpButton(ref _MoveFirstButton, value, this.OnMoveFirst);
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Gets or sets the item which moves to last record.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Category("Items"), Description("Indicates item which moves to last record."), TypeConverter(typeof(ReferenceConverter))]
 | |
|         public ButtonItem MoveLastButton
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if ((_MoveLastButton != null) && _MoveLastButton.IsDisposed)
 | |
|                 {
 | |
|                     _MoveLastButton = null;
 | |
|                 }
 | |
|                 return _MoveLastButton;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 this.WireUpButton(ref _MoveLastButton, value, OnMoveLast);
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Gets or sets the item which moves to next record.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), TypeConverter(typeof(ReferenceConverter)), Category("Items"), Description("Indicates item which moves to next record")]
 | |
|         public ButtonItem MoveNextButton
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_MoveNextButton != null && _MoveNextButton.IsDisposed)
 | |
|                 {
 | |
|                     _MoveNextButton = null;
 | |
|                 }
 | |
|                 return _MoveNextButton;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 this.WireUpButton(ref _MoveNextButton, value, new EventHandler(this.OnMoveNext));
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Gets or sets the item which moves to previous record.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Description("Indicates item which moves to previous record"), TypeConverter(typeof(ReferenceConverter)), Category("Items")]
 | |
|         public ButtonItem MovePreviousButton
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_MovePreviousButton != null && this._MovePreviousButton.IsDisposed)
 | |
|                 {
 | |
|                     _MovePreviousButton = null;
 | |
|                 }
 | |
|                 return _MovePreviousButton;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 this.WireUpButton(ref _MovePreviousButton, value, OnMovePrevious);
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// Gets or sets the text-box which shows current position.
 | |
|         /// </summary>
 | |
|         [DefaultValue(null), Category("Items"), Description("Indicates text-box which shows current position."), TypeConverter(typeof(ReferenceConverter))]
 | |
|         public TextBoxItem PositionTextBox
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (_PositionTextBox != null && _PositionTextBox.IsDisposed)
 | |
|                 {
 | |
|                     _PositionTextBox = null;
 | |
|                 }
 | |
|                 return _PositionTextBox;
 | |
|             }
 | |
|             set
 | |
|             {
 | |
|                 this.WireUpTextBox(ref _PositionTextBox, value, OnPositionKey, OnPositionLostFocus);
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region ISupportInitialize Members
 | |
| 
 | |
|         void ISupportInitialize.BeginInit()
 | |
|         {
 | |
|             _Initializing = true;
 | |
|         }
 | |
| 
 | |
|         void ISupportInitialize.EndInit()
 | |
|         {
 | |
| 
 | |
|             _Initializing = false;
 | |
|             this.RefreshStateInternal();
 | |
|         }
 | |
| 
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|     }
 | |
| } |