Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Input / Command / MouseGesture.cs / 1 / MouseGesture.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: The MouseGesture class is used by the developer to create Gestures for // Mouse Device // // See spec at : [....]/coreUI/Specs/Commanding%20--%20design.htm // // // History: // 03/26/2004 : [....] - Created // //--------------------------------------------------------------------------- using System; using System.Windows.Input; using System.Windows; using System.Windows.Markup; using System.ComponentModel; namespace System.Windows.Input { ////// MouseGesture - MouseAction and Modifier combination. /// Can be set on properties of MouseBinding and RoutedCommand. /// [TypeConverter(typeof(MouseGestureConverter))] [ValueSerializer(typeof(MouseGestureValueSerializer))] public class MouseGesture : InputGesture { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors ////// Constructor /// public MouseGesture() // Mouse action { } ////// constructor /// /// Mouse Action public MouseGesture(MouseAction mouseAction): this(mouseAction, ModifierKeys.None) { } ////// Constructor /// /// Mouse Action /// Modifiers public MouseGesture( MouseAction mouseAction,ModifierKeys modifiers) // acclerator action { if (!MouseGesture.IsDefinedMouseAction(mouseAction)) throw new InvalidEnumArgumentException("mouseAction", (int)mouseAction, typeof(MouseAction)); if (!ModifierKeysConverter.IsDefinedModifierKeys(modifiers)) throw new InvalidEnumArgumentException("modifiers", (int)modifiers, typeof(ModifierKeys)); _modifiers = modifiers; _mouseAction = mouseAction; //AttachClassListeners(); } #endregion Constructors //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- #region Public Methods ////// Action /// public MouseAction MouseAction { get { return _mouseAction; } set { if (!MouseGesture.IsDefinedMouseAction((MouseAction)value)) throw new InvalidEnumArgumentException("value", (int)value, typeof(MouseAction)); _mouseAction = (MouseAction)value; } } ////// Modifiers /// public ModifierKeys Modifiers { get { return _modifiers; } set { if (!ModifierKeysConverter.IsDefinedModifierKeys((ModifierKeys)value)) throw new InvalidEnumArgumentException("value", (int)value, typeof(ModifierKeys)); _modifiers = (ModifierKeys)value; } } ////// Compares InputEventArgs with current Input /// /// the element to receive the command /// inputEventArgs to compare to ///True - if matches, false otherwise. /// public override bool Matches(object targetElement, InputEventArgs inputEventArgs) { MouseAction mouseAction = GetMouseAction(inputEventArgs); if(mouseAction != MouseAction.None) { return ( ( (int)this.MouseAction == (int)mouseAction ) && ( this.Modifiers == Keyboard.Modifiers ) ); } return false; } // Helper like Enum.IsDefined, for MouseAction. internal static bool IsDefinedMouseAction(MouseAction mouseAction) { return (mouseAction >= MouseAction.None && mouseAction <= MouseAction.MiddleDoubleClick); } #endregion Public Methods //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static MouseAction GetMouseAction(InputEventArgs inputArgs) { MouseAction MouseAction = MouseAction.None; MouseEventArgs mouseArgs = inputArgs as MouseEventArgs; if(mouseArgs != null) { if(inputArgs is MouseWheelEventArgs) { MouseAction = MouseAction.WheelClick; } else { MouseButtonEventArgs args = inputArgs as MouseButtonEventArgs; switch(args.ChangedButton) { case MouseButton.Left: { if(args.ClickCount == 2) MouseAction = MouseAction.LeftDoubleClick; else if(args.ClickCount == 1) MouseAction = MouseAction.LeftClick; } break; case MouseButton.Right: { if(args.ClickCount == 2) MouseAction = MouseAction.RightDoubleClick; else if(args.ClickCount == 1) MouseAction = MouseAction.RightClick; } break; case MouseButton.Middle: { if(args.ClickCount == 2) MouseAction = MouseAction.MiddleDoubleClick; else if(args.ClickCount == 1) MouseAction = MouseAction.MiddleClick; } break; } } } return MouseAction; } #endregion Internal Methods //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields private MouseAction _mouseAction = MouseAction.None; private ModifierKeys _modifiers = ModifierKeys.None; // private static bool _classRegistered = false; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RegionData.cs
- ButtonChrome.cs
- FieldNameLookup.cs
- SignatureResourceHelper.cs
- CustomLineCap.cs
- TreeViewHitTestInfo.cs
- AmbiguousMatchException.cs
- FamilyMap.cs
- PeerApplicationLaunchInfo.cs
- Normalization.cs
- BufferAllocator.cs
- XmlSchemaAnnotation.cs
- MetadataPropertyvalue.cs
- OutgoingWebResponseContext.cs
- ThreadStateException.cs
- SafeLibraryHandle.cs
- FunctionParameter.cs
- NTAccount.cs
- SettingsPropertyValue.cs
- PathFigureCollectionConverter.cs
- Int32Storage.cs
- Enlistment.cs
- Error.cs
- TypeProvider.cs
- OwnerDrawPropertyBag.cs
- SafeFileMappingHandle.cs
- Propagator.ExtentPlaceholderCreator.cs
- DataGridViewCell.cs
- MessageSecurityOverMsmq.cs
- InputScope.cs
- CurrencyManager.cs
- Trace.cs
- AccessedThroughPropertyAttribute.cs
- GeneralTransform3DTo2DTo3D.cs
- AncestorChangedEventArgs.cs
- ColorAnimation.cs
- ApplicationServiceHelper.cs
- EpmSyndicationContentDeSerializer.cs
- DocumentPageHost.cs
- JsonClassDataContract.cs
- OpenTypeMethods.cs
- DesignerForm.cs
- SmtpFailedRecipientException.cs
- MediaTimeline.cs
- SelectedGridItemChangedEvent.cs
- DataColumnChangeEvent.cs
- EncoderParameters.cs
- XmlnsDefinitionAttribute.cs
- SecureStringHasher.cs
- DeferredReference.cs
- ImageClickEventArgs.cs
- MarkupExtensionSerializer.cs
- CryptoStream.cs
- CheckBoxList.cs
- InvalidContentTypeException.cs
- OTFRasterizer.cs
- SortedList.cs
- EntityCommandCompilationException.cs
- TextCompositionManager.cs
- ExpressionLink.cs
- Int32AnimationUsingKeyFrames.cs
- DivideByZeroException.cs
- HtmlInputButton.cs
- QilVisitor.cs
- BoolExpression.cs
- Utils.cs
- RepeaterItemCollection.cs
- ClientScriptItem.cs
- DoubleKeyFrameCollection.cs
- DefaultValueTypeConverter.cs
- Axis.cs
- ManipulationVelocities.cs
- ToolboxBitmapAttribute.cs
- SettingsBase.cs
- DoubleConverter.cs
- EndPoint.cs
- ParameterElement.cs
- IDQuery.cs
- Deserializer.cs
- TemplateContentLoader.cs
- BrushMappingModeValidation.cs
- EasingKeyFrames.cs
- Int32CollectionValueSerializer.cs
- RMPublishingDialog.cs
- GeneralTransformGroup.cs
- RedistVersionInfo.cs
- CompiledAction.cs
- EnvelopedPkcs7.cs
- ContentOperations.cs
- Timer.cs
- PanelDesigner.cs
- IPEndPoint.cs
- propertytag.cs
- DataTemplateKey.cs
- Cursor.cs
- FontStyles.cs
- DataControlButton.cs
- TreeNodeClickEventArgs.cs
- VirtualDirectoryMappingCollection.cs
- TableTextElementCollectionInternal.cs