Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / MS / Internal / Automation / ValueProviderWrapper.cs / 1 / ValueProviderWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: 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 ValueProviderWrapper: MarshalByRefObject, IValueProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private ValueProviderWrapper( AutomationPeer peer, IValueProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IValueProvider // //----------------------------------------------------- #region Interface IValueProvider public void SetValue( string val ) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( SetValueInternal ), val ); } public string Value { get { return (string) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetValue ), null ); } } public bool IsReadOnly { get { return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsReadOnly ), null ); } } #endregion Interface IValueProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new ValueProviderWrapper( peer, (IValueProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object SetValueInternal( object arg ) { _iface.SetValue( (string)arg ); return null; } private object GetValue( object unused ) { return _iface.Value; } private object GetIsReadOnly( object unused ) { return _iface.IsReadOnly; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IValueProvider _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: 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 ValueProviderWrapper: MarshalByRefObject, IValueProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private ValueProviderWrapper( AutomationPeer peer, IValueProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IValueProvider // //----------------------------------------------------- #region Interface IValueProvider public void SetValue( string val ) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( SetValueInternal ), val ); } public string Value { get { return (string) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetValue ), null ); } } public bool IsReadOnly { get { return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsReadOnly ), null ); } } #endregion Interface IValueProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new ValueProviderWrapper( peer, (IValueProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object SetValueInternal( object arg ) { _iface.SetValue( (string)arg ); return null; } private object GetValue( object unused ) { return _iface.Value; } private object GetIsReadOnly( object unused ) { return _iface.IsReadOnly; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IValueProvider _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
- SmiTypedGetterSetter.cs
- DataGridColumnsPage.cs
- DataSourceHelper.cs
- UITypeEditor.cs
- StateWorkerRequest.cs
- ValidationSummary.cs
- TextBoxBase.cs
- WebPartsSection.cs
- SoapCodeExporter.cs
- SelectionPattern.cs
- MailAddress.cs
- CodeGenHelper.cs
- HandlerWithFactory.cs
- KeyGestureValueSerializer.cs
- CultureTableRecord.cs
- FontSourceCollection.cs
- oledbconnectionstring.cs
- ObjectDataSourceSelectingEventArgs.cs
- IDispatchConstantAttribute.cs
- PriorityQueue.cs
- ExecutorLocksHeldException.cs
- cookie.cs
- EmptyQuery.cs
- LoginName.cs
- DependencyStoreSurrogate.cs
- FreezableOperations.cs
- SystemResourceKey.cs
- Triangle.cs
- EmissiveMaterial.cs
- SymbolTable.cs
- VScrollProperties.cs
- DocumentPageViewAutomationPeer.cs
- WebPartDisplayMode.cs
- ConvertersCollection.cs
- DirectionalLight.cs
- OpenTypeLayoutCache.cs
- PrintControllerWithStatusDialog.cs
- GACMembershipCondition.cs
- SubclassTypeValidatorAttribute.cs
- SocketElement.cs
- TraceHwndHost.cs
- ReferencedAssembly.cs
- ActivityCollectionMarkupSerializer.cs
- CmsInterop.cs
- documentation.cs
- GlyphingCache.cs
- LicenseProviderAttribute.cs
- CompositeScriptReference.cs
- AttachedPropertiesService.cs
- BaseAddressPrefixFilterElement.cs
- WizardPanel.cs
- ConsoleCancelEventArgs.cs
- SqlPersonalizationProvider.cs
- UserValidatedEventArgs.cs
- EncoderReplacementFallback.cs
- StylusEventArgs.cs
- ToolStripOverflowButton.cs
- SimpleModelProvider.cs
- WebPartEventArgs.cs
- XmlSortKeyAccumulator.cs
- BaseTreeIterator.cs
- TaskResultSetter.cs
- QueryableDataSource.cs
- InstancePersistenceCommandException.cs
- SystemWebCachingSectionGroup.cs
- DesignerCategoryAttribute.cs
- XmlSchemaExporter.cs
- COM2IProvidePropertyBuilderHandler.cs
- NavigationProperty.cs
- ParentQuery.cs
- EditorOptionAttribute.cs
- ModifierKeysValueSerializer.cs
- ListBoxAutomationPeer.cs
- EventManager.cs
- DateTimeOffsetStorage.cs
- ScaleTransform.cs
- MemberJoinTreeNode.cs
- ObjectPropertyMapping.cs
- DataGridCheckBoxColumn.cs
- TypeUnloadedException.cs
- FilteredReadOnlyMetadataCollection.cs
- HandlerMappingMemo.cs
- StreamingContext.cs
- ProgressiveCrcCalculatingStream.cs
- CatalogZone.cs
- PopupRoot.cs
- FileSystemInfo.cs
- OdbcCommandBuilder.cs
- TemplateKey.cs
- Metadata.cs
- TextElementCollection.cs
- _BaseOverlappedAsyncResult.cs
- DataGridViewRowsAddedEventArgs.cs
- GenericTypeParameterBuilder.cs
- AstNode.cs
- SharedUtils.cs
- NaturalLanguageHyphenator.cs
- CreateSequence.cs
- SoapReflectionImporter.cs
- ValidationManager.cs