/*************************************************************************************
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 )
{
}
}
}