Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Automation / RangeValueProviderWrapper.cs / 1305600 / RangeValueProviderWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Range Value pattern provider wrapper for WCP // // History: // 07/21/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- using System; using System.Windows.Threading; using System.Windows.Media; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows.Automation.Peers; namespace MS.Internal.Automation { // Automation/WCP Wrapper class: Implements that UIAutomation I...Provider // interface, and calls through to a WCP AutomationPeer which implements the corresponding // I...Provider inteface. Marshalls the call from the RPC thread onto the // target AutomationPeer's context. // // Class has two major parts to it: // * Implementation of the I...Provider, which uses Dispatcher.Invoke // to call a private method (lives in second half of the class) via a delegate, // if necessary, packages any params into an object param. Return type of Invoke // must be cast from object to appropriate type. // * private methods - one for each interface entry point - which get called back // on the right context. These call through to the peer that's actually // implenting the I...Provider version of the interface. internal class RangeValueProviderWrapper: MarshalByRefObject, IRangeValueProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private RangeValueProviderWrapper( AutomationPeer peer, IRangeValueProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IRangeValueProvider // //----------------------------------------------------- #region Interface IRangeValueProvider public void SetValue( double val ) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( SetValueInternal ), val ); } public double Value { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetValue ), null ); } } public bool IsReadOnly { get { return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsReadOnly ), null ); } } public double Maximum { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetMaximum ), null ); } } public double Minimum { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetMinimum ), null ); } } public double LargeChange { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetLargeChange ), null ); } } public double SmallChange { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetSmallChange ), null ); } } #endregion Interface IRangeValueProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new RangeValueProviderWrapper( peer, (IRangeValueProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object SetValueInternal( object arg ) { _iface.SetValue( (double)arg ); return null; } private object GetValue( object unused ) { return _iface.Value; } private object GetIsReadOnly( object unused ) { return _iface.IsReadOnly; } private object GetMaximum( object unused ) { return _iface.Maximum; } private object GetMinimum( object unused ) { return _iface.Minimum; } private object GetLargeChange( object unused ) { return _iface.LargeChange; } private object GetSmallChange( object unused ) { return _iface.SmallChange; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IRangeValueProvider _iface; #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: Range Value pattern provider wrapper for WCP // // History: // 07/21/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- using System; using System.Windows.Threading; using System.Windows.Media; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows.Automation.Peers; namespace MS.Internal.Automation { // Automation/WCP Wrapper class: Implements that UIAutomation I...Provider // interface, and calls through to a WCP AutomationPeer which implements the corresponding // I...Provider inteface. Marshalls the call from the RPC thread onto the // target AutomationPeer's context. // // Class has two major parts to it: // * Implementation of the I...Provider, which uses Dispatcher.Invoke // to call a private method (lives in second half of the class) via a delegate, // if necessary, packages any params into an object param. Return type of Invoke // must be cast from object to appropriate type. // * private methods - one for each interface entry point - which get called back // on the right context. These call through to the peer that's actually // implenting the I...Provider version of the interface. internal class RangeValueProviderWrapper: MarshalByRefObject, IRangeValueProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private RangeValueProviderWrapper( AutomationPeer peer, IRangeValueProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IRangeValueProvider // //----------------------------------------------------- #region Interface IRangeValueProvider public void SetValue( double val ) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( SetValueInternal ), val ); } public double Value { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetValue ), null ); } } public bool IsReadOnly { get { return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsReadOnly ), null ); } } public double Maximum { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetMaximum ), null ); } } public double Minimum { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetMinimum ), null ); } } public double LargeChange { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetLargeChange ), null ); } } public double SmallChange { get { return (double) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetSmallChange ), null ); } } #endregion Interface IRangeValueProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new RangeValueProviderWrapper( peer, (IRangeValueProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object SetValueInternal( object arg ) { _iface.SetValue( (double)arg ); return null; } private object GetValue( object unused ) { return _iface.Value; } private object GetIsReadOnly( object unused ) { return _iface.IsReadOnly; } private object GetMaximum( object unused ) { return _iface.Maximum; } private object GetMinimum( object unused ) { return _iface.Minimum; } private object GetLargeChange( object unused ) { return _iface.LargeChange; } private object GetSmallChange( object unused ) { return _iface.SmallChange; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IRangeValueProvider _iface; #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
- BamlCollectionHolder.cs
- DbProviderConfigurationHandler.cs
- DoubleLinkListEnumerator.cs
- CqlErrorHelper.cs
- PageFunction.cs
- RbTree.cs
- SerialReceived.cs
- DocumentViewerBaseAutomationPeer.cs
- TrackingExtract.cs
- JsonDeserializer.cs
- PropertyChangeTracker.cs
- figurelength.cs
- FixedTextSelectionProcessor.cs
- SqlEnums.cs
- EnumBuilder.cs
- ApplicationDirectoryMembershipCondition.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- DispatcherExceptionEventArgs.cs
- StateMachineWorkflowDesigner.cs
- MonthCalendar.cs
- MLangCodePageEncoding.cs
- GridViewItemAutomationPeer.cs
- RoutedEventValueSerializer.cs
- TableRowCollection.cs
- ProfileSection.cs
- Lease.cs
- Label.cs
- Hex.cs
- BrowserDefinition.cs
- DocumentSequenceHighlightLayer.cs
- EtwTrace.cs
- DockPatternIdentifiers.cs
- RepeatButtonAutomationPeer.cs
- GlobalizationSection.cs
- OutputCacheSettings.cs
- FixedDocumentSequencePaginator.cs
- MimeMultiPart.cs
- XmlComplianceUtil.cs
- UrlMappingsModule.cs
- LogLogRecordHeader.cs
- Int16.cs
- LOSFormatter.cs
- AnnotationResourceChangedEventArgs.cs
- Fx.cs
- DataGridViewColumnEventArgs.cs
- QueryableDataSourceEditData.cs
- SizeIndependentAnimationStorage.cs
- Splitter.cs
- TextBoxBase.cs
- TypeLoadException.cs
- StateItem.cs
- GcHandle.cs
- entityreference_tresulttype.cs
- ArrayItemReference.cs
- DbConnectionClosed.cs
- SelfIssuedTokenFactoryCredential.cs
- CompoundFileStreamReference.cs
- FileDialogCustomPlacesCollection.cs
- ColorContextHelper.cs
- XamlBrushSerializer.cs
- DataRelationPropertyDescriptor.cs
- DiffuseMaterial.cs
- embossbitmapeffect.cs
- HtmlInputPassword.cs
- ProxyOperationRuntime.cs
- InheritedPropertyDescriptor.cs
- UIAgentCrashedException.cs
- MainMenu.cs
- Component.cs
- HMACSHA256.cs
- RequestUriProcessor.cs
- ProgressPage.cs
- XmlHierarchicalDataSourceView.cs
- InstanceOwner.cs
- Expression.cs
- DynamicControlParameter.cs
- RequestCachePolicyConverter.cs
- BasicViewGenerator.cs
- AnimationLayer.cs
- RawAppCommandInputReport.cs
- WindowsGraphics.cs
- ASCIIEncoding.cs
- PlanCompiler.cs
- WebPartDescriptionCollection.cs
- TextServicesManager.cs
- DynamicResourceExtensionConverter.cs
- TemplatePropertyEntry.cs
- ExtensionQuery.cs
- BufferedGenericXmlSecurityToken.cs
- BuildResultCache.cs
- Int64KeyFrameCollection.cs
- HttpHandlersSection.cs
- PointAnimationUsingPath.cs
- AssemblySettingAttributes.cs
- UnsafeNativeMethods.cs
- Rotation3D.cs
- DbFunctionCommandTree.cs
- BehaviorEditorPart.cs
- XamlStream.cs
- ManagementInstaller.cs