/************************************************************************************* Extended WPF Toolkit Copyright (C) 2007-2013 Xceed Software Inc. This program is provided to you under the terms of the Microsoft Public License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license For more features, controls, and fast professional support, pick up the Plus Edition at http://xceed.com/wpf_toolkit Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids ***********************************************************************************/ using System; using System.Windows; using System.Windows.Controls; namespace Xceed.Wpf.Toolkit { /// /// Base class for controls that represents controls that can spin. /// public abstract class Spinner : Control { #region Properties /// /// Identifies the ValidSpinDirection dependency property. /// public static readonly DependencyProperty ValidSpinDirectionProperty = DependencyProperty.Register( "ValidSpinDirection", typeof( ValidSpinDirections ), typeof( Spinner ), new PropertyMetadata( ValidSpinDirections.Increase | ValidSpinDirections.Decrease, OnValidSpinDirectionPropertyChanged ) ); public ValidSpinDirections ValidSpinDirection { get { return ( ValidSpinDirections )GetValue( ValidSpinDirectionProperty ); } set { SetValue( ValidSpinDirectionProperty, value ); } } /// /// ValidSpinDirectionProperty property changed handler. /// /// ButtonSpinner that changed its ValidSpinDirection. /// Event arguments. private static void OnValidSpinDirectionPropertyChanged( DependencyObject d, DependencyPropertyChangedEventArgs e ) { Spinner source = ( Spinner )d; ValidSpinDirections oldvalue = ( ValidSpinDirections )e.OldValue; ValidSpinDirections newvalue = ( ValidSpinDirections )e.NewValue; source.OnValidSpinDirectionChanged( oldvalue, newvalue ); } #endregion //Properties /// /// Occurs when spinning is initiated by the end-user. /// public event EventHandler Spin; /// /// Initializes a new instance of the Spinner class. /// protected Spinner() { } /// /// Raises the OnSpin event when spinning is initiated by the end-user. /// /// Spin event args. protected virtual void OnSpin( SpinEventArgs e ) { ValidSpinDirections valid = e.Direction == SpinDirection.Increase ? ValidSpinDirections.Increase : ValidSpinDirections.Decrease; //Only raise the event if spin is allowed. if( ( ValidSpinDirection & valid ) == valid ) { EventHandler handler = Spin; if( handler != null ) { handler( this, e ); } } } /// /// Called when valid spin direction changed. /// /// The old value. /// The new value. protected virtual void OnValidSpinDirectionChanged( ValidSpinDirections oldValue, ValidSpinDirections newValue ) { } } }