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
- XmlUtil.cs
- GiveFeedbackEvent.cs
- SourceFileInfo.cs
- ScaleTransform3D.cs
- _ConnectStream.cs
- SelfIssuedTokenFactoryCredential.cs
- AnnotationAdorner.cs
- RootProfilePropertySettingsCollection.cs
- unsafenativemethodstextservices.cs
- AnimationStorage.cs
- AxHost.cs
- Win32Native.cs
- KeySpline.cs
- WebPartActionVerb.cs
- XmlReaderSettings.cs
- Assembly.cs
- BuildProvider.cs
- UpdatePanelTrigger.cs
- TrackPoint.cs
- ImmutableObjectAttribute.cs
- GlyphTypeface.cs
- XmlAttributeOverrides.cs
- LongTypeConverter.cs
- XsltException.cs
- MeshGeometry3D.cs
- EndpointInfo.cs
- RowCache.cs
- PenContexts.cs
- DataServiceCollectionOfT.cs
- HorizontalAlignConverter.cs
- ConsumerConnectionPoint.cs
- ControlBuilderAttribute.cs
- ImmComposition.cs
- LoginCancelEventArgs.cs
- Win32Native.cs
- OptimizerPatterns.cs
- ImageCodecInfoPrivate.cs
- FrameworkElementFactory.cs
- TableLayoutPanelDesigner.cs
- DataAdapter.cs
- SolidColorBrush.cs
- SpnEndpointIdentity.cs
- While.cs
- ping.cs
- ResourceReferenceExpressionConverter.cs
- UserCancellationException.cs
- ToolStripItemImageRenderEventArgs.cs
- EmptyWithCancelationCheckWorkItem.cs
- CutCopyPasteHelper.cs
- FileStream.cs
- ServiceContractGenerator.cs
- UnknownWrapper.cs
- ListControl.cs
- ExpressionEditorAttribute.cs
- ContainerUIElement3D.cs
- AxHost.cs
- Transform3DGroup.cs
- DeviceSpecificDialogCachedState.cs
- UnmanagedHandle.cs
- ResourceAssociationType.cs
- ProxyWebPart.cs
- BufferedOutputAsyncStream.cs
- ExternalDataExchangeService.cs
- XmlSerializerVersionAttribute.cs
- InputLanguageProfileNotifySink.cs
- ObjectQueryExecutionPlan.cs
- ErrorRuntimeConfig.cs
- ObjectQuery_EntitySqlExtensions.cs
- cryptoapiTransform.cs
- PerformanceCounterPermission.cs
- SerializationFieldInfo.cs
- TimerElapsedEvenArgs.cs
- TypeUtils.cs
- WpfWebRequestHelper.cs
- QueryGenerator.cs
- HttpModuleActionCollection.cs
- Component.cs
- KeyboardNavigation.cs
- RenameRuleObjectDialog.cs
- TraceSource.cs
- ConstraintManager.cs
- TreeNodeMouseHoverEvent.cs
- ClonableStack.cs
- Tuple.cs
- QueryAccessibilityHelpEvent.cs
- DataTableClearEvent.cs
- PropertyPushdownHelper.cs
- ConsumerConnectionPointCollection.cs
- GeometryValueSerializer.cs
- MasterPageCodeDomTreeGenerator.cs
- TextServicesManager.cs
- DbReferenceCollection.cs
- ValidationError.cs
- XmlSortKeyAccumulator.cs
- TopClause.cs
- InternalTypeHelper.cs
- XmlQueryCardinality.cs
- CodeAttachEventStatement.cs
- RichTextBox.cs
- ControlIdConverter.cs