Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / MS / Internal / Automation / GridProviderWrapper.cs / 1 / GridProviderWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Grid 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 GridProviderWrapper: MarshalByRefObject, IGridProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private GridProviderWrapper( AutomationPeer peer, IGridProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IGridProvider // //----------------------------------------------------- #region Interface IGridProvider public IRawElementProviderSimple GetItem(int row, int column) { return (IRawElementProviderSimple) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetItem ), new int [ ] { row, column } ); } public int RowCount { get { return (int) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetRowCount ), null ); } } public int ColumnCount { get { return (int) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetColumnCount ), null ); } } #endregion Interface IGridProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new GridProviderWrapper( peer, (IGridProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object GetItem( object arg ) { int [ ] coords = (int [ ]) arg; return _iface.GetItem( coords[ 0 ], coords[ 1 ] ); } private object GetRowCount( object unused ) { return _iface.RowCount; } private object GetColumnCount( object unused ) { return _iface.ColumnCount; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IGridProvider _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: Grid 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 GridProviderWrapper: MarshalByRefObject, IGridProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private GridProviderWrapper( AutomationPeer peer, IGridProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IGridProvider // //----------------------------------------------------- #region Interface IGridProvider public IRawElementProviderSimple GetItem(int row, int column) { return (IRawElementProviderSimple) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetItem ), new int [ ] { row, column } ); } public int RowCount { get { return (int) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetRowCount ), null ); } } public int ColumnCount { get { return (int) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetColumnCount ), null ); } } #endregion Interface IGridProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new GridProviderWrapper( peer, (IGridProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object GetItem( object arg ) { int [ ] coords = (int [ ]) arg; return _iface.GetItem( coords[ 0 ], coords[ 1 ] ); } private object GetRowCount( object unused ) { return _iface.RowCount; } private object GetColumnCount( object unused ) { return _iface.ColumnCount; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IGridProvider _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
- XPathException.cs
- LoginDesigner.cs
- WindowsProgressbar.cs
- OpacityConverter.cs
- MenuTracker.cs
- NameValueSectionHandler.cs
- DropAnimation.xaml.cs
- EventData.cs
- XPathDocumentNavigator.cs
- COM2ExtendedUITypeEditor.cs
- StringHandle.cs
- RightNameExpirationInfoPair.cs
- StreamDocument.cs
- InternalResources.cs
- HttpListenerException.cs
- SweepDirectionValidation.cs
- uribuilder.cs
- KnownIds.cs
- ClientBuildManagerCallback.cs
- SoapAttributeAttribute.cs
- DataRecord.cs
- CompleteWizardStep.cs
- DesignSurfaceServiceContainer.cs
- ReachUIElementCollectionSerializerAsync.cs
- BorderGapMaskConverter.cs
- EventProxy.cs
- NativeRightsManagementAPIsStructures.cs
- versioninfo.cs
- DeviceContext2.cs
- Ipv6Element.cs
- TCPClient.cs
- BigInt.cs
- __Filters.cs
- Point3DAnimation.cs
- BaseParaClient.cs
- DataGridViewCellValidatingEventArgs.cs
- ConnectionStringsExpressionBuilder.cs
- BuildManager.cs
- Atom10FormatterFactory.cs
- RemoteHelper.cs
- EncryptedReference.cs
- XmlEncoding.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- NativeMethodsOther.cs
- BinHexEncoder.cs
- DataComponentGenerator.cs
- XPathSelfQuery.cs
- WebPartExportVerb.cs
- PipelineComponent.cs
- CommonDialog.cs
- ReflectTypeDescriptionProvider.cs
- Hex.cs
- _IPv6Address.cs
- QueryInterceptorAttribute.cs
- FixedPosition.cs
- KeyValueConfigurationCollection.cs
- InfoCardProofToken.cs
- ProgressBarRenderer.cs
- SoapIgnoreAttribute.cs
- SHA256CryptoServiceProvider.cs
- CheckoutException.cs
- SHA512Managed.cs
- OleDbDataAdapter.cs
- ReliableChannelFactory.cs
- WebDescriptionAttribute.cs
- HtmlSelect.cs
- EnumConverter.cs
- HttpResponseHeader.cs
- Stream.cs
- SizeChangedEventArgs.cs
- GraphicsContext.cs
- WindowsToolbarAsMenu.cs
- CalculatedColumn.cs
- BinaryEditor.cs
- DodSequenceMerge.cs
- ObjectListField.cs
- WindowsUpDown.cs
- PageCache.cs
- EventWaitHandleSecurity.cs
- SectionInput.cs
- TraceContextEventArgs.cs
- TraceAsyncResult.cs
- BooleanProjectedSlot.cs
- WmlValidatorAdapter.cs
- SqlTriggerAttribute.cs
- RSACryptoServiceProvider.cs
- DataKey.cs
- SerialPinChanges.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- XmlValueConverter.cs
- RegexReplacement.cs
- _ListenerRequestStream.cs
- _UriSyntax.cs
- SafeProcessHandle.cs
- SQLBytes.cs
- SystemFonts.cs
- DbExpressionVisitor_TResultType.cs
- TypeContext.cs
- DefaultBindingPropertyAttribute.cs
- MenuAdapter.cs