Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Automation / SynchronizedInputProviderWrapper.cs / 1305600 / SynchronizedInputProviderWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: SynchronizedInput pattern provider wrapper for WCP // // History: // 11/10/2008 : Added by [....] // //--------------------------------------------------------------------------- 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 SynchronizedInputProviderWrapper: MarshalByRefObject, ISynchronizedInputProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private SynchronizedInputProviderWrapper( AutomationPeer peer, ISynchronizedInputProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface ISynchronizedInputProvider // //----------------------------------------------------- #region Interface ISynchronizedInputProvider public void StartListening(SynchronizedInputType inputType) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( StartListening ), inputType ); } public void Cancel() { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( Cancel ), null ); } #endregion Interface ISynchronizedInputProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new SynchronizedInputProviderWrapper( peer, (ISynchronizedInputProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object StartListening( object arg ) { _iface.StartListening((SynchronizedInputType)arg); return null; } private object Cancel( object unused ) { _iface.Cancel(); return null; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private ISynchronizedInputProvider _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: SynchronizedInput pattern provider wrapper for WCP // // History: // 11/10/2008 : Added by [....] // //--------------------------------------------------------------------------- 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 SynchronizedInputProviderWrapper: MarshalByRefObject, ISynchronizedInputProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private SynchronizedInputProviderWrapper( AutomationPeer peer, ISynchronizedInputProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface ISynchronizedInputProvider // //----------------------------------------------------- #region Interface ISynchronizedInputProvider public void StartListening(SynchronizedInputType inputType) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( StartListening ), inputType ); } public void Cancel() { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( Cancel ), null ); } #endregion Interface ISynchronizedInputProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new SynchronizedInputProviderWrapper( peer, (ISynchronizedInputProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object StartListening( object arg ) { _iface.StartListening((SynchronizedInputType)arg); return null; } private object Cancel( object unused ) { _iface.Cancel(); return null; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private ISynchronizedInputProvider _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
- ProfilePropertyNameValidator.cs
- SmiContextFactory.cs
- WebServiceTypeData.cs
- ContainerActivationHelper.cs
- ConfigurationSectionGroupCollection.cs
- WebResourceAttribute.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- Signature.cs
- RuntimeHelpers.cs
- FontEmbeddingManager.cs
- JournalNavigationScope.cs
- BoolExpression.cs
- ImageField.cs
- PropertyGrid.cs
- SmtpException.cs
- SqlUDTStorage.cs
- OleDbParameter.cs
- TextModifierScope.cs
- StringConverter.cs
- PointF.cs
- StateElementCollection.cs
- QueryContinueDragEvent.cs
- Process.cs
- IgnoreFileBuildProvider.cs
- DataTableMapping.cs
- AssemblyNameProxy.cs
- MenuItem.cs
- TrustManagerPromptUI.cs
- HtmlTitle.cs
- EntityDescriptor.cs
- GenericAuthenticationEventArgs.cs
- HtmlToClrEventProxy.cs
- MSHTMLHost.cs
- FixedSOMSemanticBox.cs
- HasCopySemanticsAttribute.cs
- ListBoxChrome.cs
- IndentedWriter.cs
- ObjectHelper.cs
- JsonEnumDataContract.cs
- MetadataCacheItem.cs
- WebPartHeaderCloseVerb.cs
- QilTernary.cs
- XmlSiteMapProvider.cs
- ApplicationSecurityInfo.cs
- ResourcePermissionBase.cs
- ZipIOLocalFileDataDescriptor.cs
- TypeName.cs
- Literal.cs
- CachedTypeface.cs
- WindowsListViewSubItem.cs
- DynamicMethod.cs
- ToolStripSystemRenderer.cs
- PropertyItem.cs
- DataGridViewColumnHeaderCell.cs
- PartEditor.cs
- ByteStreamGeometryContext.cs
- ArgumentException.cs
- RelationshipDetailsRow.cs
- LoggedException.cs
- SafeEventHandle.cs
- Transform.cs
- ZoneButton.cs
- ProfileServiceManager.cs
- InteropTrackingRecord.cs
- _ServiceNameStore.cs
- SystemColorTracker.cs
- DockingAttribute.cs
- SystemIcmpV6Statistics.cs
- EndpointDiscoveryBehavior.cs
- TextControl.cs
- EventHandlers.cs
- ComponentSerializationService.cs
- TextEmbeddedObject.cs
- MailAddress.cs
- SafeFileMapViewHandle.cs
- ActivityStatusChangeEventArgs.cs
- OutputCacheProfile.cs
- DataSourceExpression.cs
- XhtmlBasicLabelAdapter.cs
- PageParserFilter.cs
- FixedElement.cs
- ToolStripStatusLabel.cs
- XmlSchemaValidationException.cs
- InlineObject.cs
- DataObjectMethodAttribute.cs
- TextRenderingModeValidation.cs
- GeneralTransform2DTo3DTo2D.cs
- DashStyle.cs
- TypeUsageBuilder.cs
- SmiXetterAccessMap.cs
- AuthStoreRoleProvider.cs
- VectorConverter.cs
- DataFieldCollectionEditor.cs
- CaseInsensitiveComparer.cs
- TextServicesDisplayAttributePropertyRanges.cs
- ChunkedMemoryStream.cs
- BlurEffect.cs
- NativeMethods.cs
- HierarchicalDataTemplate.cs
- ObjectViewFactory.cs