Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / UIAutomation / UIAutomationClient / System / Windows / Automation / PropertyCondition.cs / 1 / PropertyCondition.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: // // History: // 10/14/2003 : BrendanM - Created // //--------------------------------------------------------------------------- using System; using System.Globalization; using System.Windows.Automation; using MS.Internal.Automation; namespace System.Windows.Automation { ////// Flags that affect how a property value is compared in a PropertyCondition /// [Flags] #if (INTERNAL_COMPILE) internal enum PropertyConditionFlags #else public enum PropertyConditionFlags #endif { ///Properties are to be compared using default options (eg. case-sensitive comparison for strings) None = 0x00, ///For string comparisons, specifies that a case-insensitive comparison should be used IgnoreCase = 0x01, } ////// Condition that checks whether a property has the specified value /// #if (INTERNAL_COMPILE) internal class PropertyCondition : Condition #else public class PropertyCondition : Condition #endif { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors ////// Constructor to create a condition that checks whether a property has the specified value /// /// The property to check /// The value to check the property for public PropertyCondition( AutomationProperty property, object value ) { Init(property, value, PropertyConditionFlags.None); } ////// Constructor to create a condition that checks whether a property has the specified value /// /// The property to check /// The value to check the property for /// Flags that affect the comparison public PropertyCondition( AutomationProperty property, object value, PropertyConditionFlags flags ) { Init(property, value, flags); } #endregion Constructors //------------------------------------------------------ // // Public Properties // //----------------------------------------------------- #region Public Properties ////// Returns the property that this condition is checking for /// public AutomationProperty Property { get { return _property; } } ////// Returns the value of the property that this condition is checking for /// public object Value { get { return _val; } } ////// Returns the flags used in this property comparison /// public PropertyConditionFlags Flags { get { return _flags; } } #endregion Public Properties //------------------------------------------------------ // // Private Methods // //------------------------------------------------------ #region Private Methods void Init(AutomationProperty property, object val, PropertyConditionFlags flags ) { Misc.ValidateArgumentNonNull(property, "property"); AutomationPropertyInfo info; if (!Schema.GetPropertyInfo(property, out info)) { throw new ArgumentException(SR.Get(SRID.UnsupportedProperty)); } // Check type is appropriate: NotSupported is allowed against any property, // null is allowed for any reference type (ie not for value types), otherwise // type must be assignable from expected type. Type expectedType = info.Type; if (val != AutomationElement.NotSupported && ((val == null && expectedType.IsValueType) || (val != null && !expectedType.IsAssignableFrom(val.GetType())))) { throw new ArgumentException(SR.Get(SRID.PropertyConditionIncorrectType, property.ProgrammaticName, expectedType.Name)); } if ((flags & PropertyConditionFlags.IgnoreCase) != 0) { Misc.ValidateArgument(val is string, SRID.IgnoreCaseRequiresString); } // Some types are handled differently in managed vs unmanaged - handle those here... if (val is AutomationElement) { // If this is a comparison against a Raw/LogicalElement, // save the runtime ID instead of the element so that we // can take it cross-proc if needed. val = ((AutomationElement)val).GetRuntimeId(); } else if (val is ControlType) { // If this is a control type, use the ID, not the CLR object val = ((ControlType)val).Id; } else if (val is Rect) { Rect rc = (Rect)val; val = new double[] { rc.Left, rc.Top, rc.Width, rc.Height }; } else if (val is Point) { Point pt = (Point)val; val = new double[] { pt.X, pt.Y }; } else if (val is CultureInfo) { val = ((CultureInfo)val).LCID; } _property = property; _val = val; _flags = flags; SetMarshalData(new UiaCoreApi.UiaPropertyCondition(_property.Id, _val, _flags)); } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields private AutomationProperty _property; private object _val; private PropertyConditionFlags _flags; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: // // History: // 10/14/2003 : BrendanM - Created // //--------------------------------------------------------------------------- using System; using System.Globalization; using System.Windows.Automation; using MS.Internal.Automation; namespace System.Windows.Automation { ////// Flags that affect how a property value is compared in a PropertyCondition /// [Flags] #if (INTERNAL_COMPILE) internal enum PropertyConditionFlags #else public enum PropertyConditionFlags #endif { ///Properties are to be compared using default options (eg. case-sensitive comparison for strings) None = 0x00, ///For string comparisons, specifies that a case-insensitive comparison should be used IgnoreCase = 0x01, } ////// Condition that checks whether a property has the specified value /// #if (INTERNAL_COMPILE) internal class PropertyCondition : Condition #else public class PropertyCondition : Condition #endif { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors ////// Constructor to create a condition that checks whether a property has the specified value /// /// The property to check /// The value to check the property for public PropertyCondition( AutomationProperty property, object value ) { Init(property, value, PropertyConditionFlags.None); } ////// Constructor to create a condition that checks whether a property has the specified value /// /// The property to check /// The value to check the property for /// Flags that affect the comparison public PropertyCondition( AutomationProperty property, object value, PropertyConditionFlags flags ) { Init(property, value, flags); } #endregion Constructors //------------------------------------------------------ // // Public Properties // //----------------------------------------------------- #region Public Properties ////// Returns the property that this condition is checking for /// public AutomationProperty Property { get { return _property; } } ////// Returns the value of the property that this condition is checking for /// public object Value { get { return _val; } } ////// Returns the flags used in this property comparison /// public PropertyConditionFlags Flags { get { return _flags; } } #endregion Public Properties //------------------------------------------------------ // // Private Methods // //------------------------------------------------------ #region Private Methods void Init(AutomationProperty property, object val, PropertyConditionFlags flags ) { Misc.ValidateArgumentNonNull(property, "property"); AutomationPropertyInfo info; if (!Schema.GetPropertyInfo(property, out info)) { throw new ArgumentException(SR.Get(SRID.UnsupportedProperty)); } // Check type is appropriate: NotSupported is allowed against any property, // null is allowed for any reference type (ie not for value types), otherwise // type must be assignable from expected type. Type expectedType = info.Type; if (val != AutomationElement.NotSupported && ((val == null && expectedType.IsValueType) || (val != null && !expectedType.IsAssignableFrom(val.GetType())))) { throw new ArgumentException(SR.Get(SRID.PropertyConditionIncorrectType, property.ProgrammaticName, expectedType.Name)); } if ((flags & PropertyConditionFlags.IgnoreCase) != 0) { Misc.ValidateArgument(val is string, SRID.IgnoreCaseRequiresString); } // Some types are handled differently in managed vs unmanaged - handle those here... if (val is AutomationElement) { // If this is a comparison against a Raw/LogicalElement, // save the runtime ID instead of the element so that we // can take it cross-proc if needed. val = ((AutomationElement)val).GetRuntimeId(); } else if (val is ControlType) { // If this is a control type, use the ID, not the CLR object val = ((ControlType)val).Id; } else if (val is Rect) { Rect rc = (Rect)val; val = new double[] { rc.Left, rc.Top, rc.Width, rc.Height }; } else if (val is Point) { Point pt = (Point)val; val = new double[] { pt.X, pt.Y }; } else if (val is CultureInfo) { val = ((CultureInfo)val).LCID; } _property = property; _val = val; _flags = flags; SetMarshalData(new UiaCoreApi.UiaPropertyCondition(_property.Id, _val, _flags)); } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields private AutomationProperty _property; private object _val; private PropertyConditionFlags _flags; #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
- TrackingRecord.cs
- CheckBoxField.cs
- StructuralType.cs
- OAVariantLib.cs
- PrintDialogException.cs
- ConsoleCancelEventArgs.cs
- ContentFileHelper.cs
- TypeConverterValueSerializer.cs
- RedistVersionInfo.cs
- TraceContext.cs
- FontStyle.cs
- SqlInternalConnection.cs
- TextSelectionHighlightLayer.cs
- SequenceNumber.cs
- DynamicRendererThreadManager.cs
- COAUTHIDENTITY.cs
- DelimitedListTraceListener.cs
- ScalarType.cs
- KnownBoxes.cs
- XmlReflectionMember.cs
- WebPartManager.cs
- Storyboard.cs
- PowerEase.cs
- WebEvents.cs
- StringToken.cs
- odbcmetadatafactory.cs
- X509ChainElement.cs
- PasswordBoxAutomationPeer.cs
- NullableBoolConverter.cs
- SqlWriter.cs
- NullReferenceException.cs
- CompressedStack.cs
- ActivitiesCollection.cs
- InfoCardServiceInstallComponent.cs
- UrlAuthorizationModule.cs
- Symbol.cs
- CannotUnloadAppDomainException.cs
- IInstanceContextProvider.cs
- SchemaElement.cs
- DesignerDeviceConfig.cs
- XmlAttributeOverrides.cs
- QilCloneVisitor.cs
- FamilyCollection.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- CodeCommentStatement.cs
- ClientUrlResolverWrapper.cs
- GestureRecognizer.cs
- ReadOnlyDataSource.cs
- _SecureChannel.cs
- EditorZoneBase.cs
- WebPartZone.cs
- Pool.cs
- ParseElement.cs
- TextBoxView.cs
- CommandConverter.cs
- ColumnResizeUndoUnit.cs
- DetailsViewDeleteEventArgs.cs
- DesignColumnCollection.cs
- BindingExpressionBase.cs
- _ConnectOverlappedAsyncResult.cs
- SmiXetterAccessMap.cs
- ProfileSettingsCollection.cs
- ClientScriptItemCollection.cs
- TabItemAutomationPeer.cs
- SerializationAttributes.cs
- XPathNodeHelper.cs
- ImmutableCollection.cs
- ScriptResourceInfo.cs
- IDispatchConstantAttribute.cs
- MsmqIntegrationBindingCollectionElement.cs
- SqlInfoMessageEvent.cs
- AutomationPatternInfo.cs
- SimpleWebHandlerParser.cs
- JumpTask.cs
- Size3DConverter.cs
- FilterRepeater.cs
- HtmlInputControl.cs
- StylusButtonEventArgs.cs
- safelink.cs
- TickBar.cs
- Guid.cs
- WebServiceAttribute.cs
- DependencyPropertyKey.cs
- ZipPackage.cs
- SqlMultiplexer.cs
- TextParagraphCache.cs
- ClientUrlResolverWrapper.cs
- FragmentQuery.cs
- Transform3DGroup.cs
- AutomationPattern.cs
- IsolatedStorageFilePermission.cs
- serverconfig.cs
- DashStyle.cs
- TableLayoutPanel.cs
- NonDualMessageSecurityOverHttp.cs
- ObjectDataSourceMethodEventArgs.cs
- KeySplineConverter.cs
- FixedPosition.cs
- TokenBasedSetEnumerator.cs
- TakeQueryOptionExpression.cs