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
- IgnorePropertiesAttribute.cs
- FrameworkElementAutomationPeer.cs
- TreeNodeEventArgs.cs
- PageContentCollection.cs
- DataSourceDescriptorCollection.cs
- QilScopedVisitor.cs
- DelegateArgument.cs
- IItemProperties.cs
- x509utils.cs
- Paragraph.cs
- CommonDialog.cs
- FontSizeConverter.cs
- SemanticValue.cs
- SelectionListComponentEditor.cs
- HMAC.cs
- DynamicILGenerator.cs
- DocumentGridContextMenu.cs
- RuntimeHelpers.cs
- PropertyGridEditorPart.cs
- FormatVersion.cs
- VariableBinder.cs
- GenerateScriptTypeAttribute.cs
- DockPattern.cs
- TextBlock.cs
- _HelperAsyncResults.cs
- CombinedGeometry.cs
- PtsHelper.cs
- FontDialog.cs
- ValidationRule.cs
- xmlsaver.cs
- DocumentSequenceHighlightLayer.cs
- RegistrationServices.cs
- SplitterEvent.cs
- InstalledVoice.cs
- DataGridState.cs
- SqlInternalConnectionSmi.cs
- NetCodeGroup.cs
- XmlSchemaSimpleTypeList.cs
- TdsParserStaticMethods.cs
- CloseSequence.cs
- loginstatus.cs
- PropertyItem.cs
- DataViewSettingCollection.cs
- DerivedKeyCachingSecurityTokenSerializer.cs
- PageSettings.cs
- DoubleAverageAggregationOperator.cs
- SourceFileBuildProvider.cs
- CodeConditionStatement.cs
- SystemMulticastIPAddressInformation.cs
- AnimatedTypeHelpers.cs
- XslTransform.cs
- LiteralLink.cs
- EndpointDiscoveryMetadataCD1.cs
- EnumerableRowCollectionExtensions.cs
- SqlParameter.cs
- TableStyle.cs
- XmlBufferedByteStreamReader.cs
- Calendar.cs
- NotCondition.cs
- XmlIgnoreAttribute.cs
- BaseCollection.cs
- NullableLongSumAggregationOperator.cs
- StorageComplexPropertyMapping.cs
- DescendentsWalker.cs
- SystemPens.cs
- XPathNode.cs
- FocusWithinProperty.cs
- MessageDecoder.cs
- LinkDescriptor.cs
- UnsafeNetInfoNativeMethods.cs
- Pair.cs
- RewritingValidator.cs
- PropertyEmitter.cs
- ClientTargetCollection.cs
- PlacementWorkspace.cs
- AspNetCompatibilityRequirementsMode.cs
- SymLanguageType.cs
- FormClosingEvent.cs
- VerificationAttribute.cs
- StdRegProviderWrapper.cs
- RoutedEventHandlerInfo.cs
- StringWriter.cs
- ExclusiveNamedPipeTransportManager.cs
- HybridCollection.cs
- HighlightComponent.cs
- WebServiceTypeData.cs
- ContentPresenter.cs
- XPathNodePointer.cs
- ReturnValue.cs
- TargetInvocationException.cs
- MarshalByRefObject.cs
- WebPartEditVerb.cs
- InfoCardRSACryptoProvider.cs
- UnsafeNativeMethods.cs
- ConnectorRouter.cs
- XDeferredAxisSource.cs
- _ChunkParse.cs
- DataServiceEntityAttribute.cs
- FullTrustAssemblyCollection.cs
- DWriteFactory.cs