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
 | 
						|
 | 
						|
    }
 | 
						|
} |