Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Automation / TableProviderWrapper.cs / 1305600 / TableProviderWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Table 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 TableProviderWrapper: MarshalByRefObject, ITableProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private TableProviderWrapper( AutomationPeer peer, ITableProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface ITableProvider // //----------------------------------------------------- #region Interface ITableProvider 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 ); } } public IRawElementProviderSimple [] GetRowHeaders() { return (IRawElementProviderSimple []) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetRowHeaders ), null ); } public IRawElementProviderSimple [] GetColumnHeaders() { return (IRawElementProviderSimple []) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetColumnHeaders ), null ); } public RowOrColumnMajor RowOrColumnMajor { get { return (RowOrColumnMajor) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetRowOrColumnMajor ), null ); } } #endregion Interface ITableProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new TableProviderWrapper( peer, (ITableProvider) 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; } private object GetRowHeaders( object unused ) { return _iface.GetRowHeaders(); } private object GetColumnHeaders( object unused ) { return _iface.GetColumnHeaders(); } private object GetRowOrColumnMajor( object unused ) { return _iface.RowOrColumnMajor; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private ITableProvider _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
- TdsEnums.cs
- ComponentCommands.cs
- CellTreeNodeVisitors.cs
- KeyConverter.cs
- ConversionContext.cs
- EmptyReadOnlyDictionaryInternal.cs
- SamlDelegatingWriter.cs
- ListBoxChrome.cs
- AlphaSortedEnumConverter.cs
- ProfileProvider.cs
- remotingproxy.cs
- FileRecordSequenceCompletedAsyncResult.cs
- FloatUtil.cs
- DoubleAnimationUsingPath.cs
- CustomSignedXml.cs
- XmlBoundElement.cs
- ScrollBar.cs
- DataChangedEventManager.cs
- IdnMapping.cs
- PassportAuthenticationEventArgs.cs
- DataConnectionHelper.cs
- diagnosticsswitches.cs
- TemplateBindingExpression.cs
- EventMappingSettings.cs
- HtmlInputCheckBox.cs
- GridViewAutomationPeer.cs
- SqlProfileProvider.cs
- WarningException.cs
- RegexGroupCollection.cs
- SetterBaseCollection.cs
- CodeEventReferenceExpression.cs
- SharedPersonalizationStateInfo.cs
- WebPartConnection.cs
- EdmItemCollection.OcAssemblyCache.cs
- ReachDocumentSequenceSerializer.cs
- SAPICategories.cs
- AsymmetricCryptoHandle.cs
- ColorConvertedBitmapExtension.cs
- CodeExpressionStatement.cs
- FileVersion.cs
- FlowPosition.cs
- Pair.cs
- XPathScanner.cs
- DetailsViewModeEventArgs.cs
- Color.cs
- CurrencyWrapper.cs
- LineGeometry.cs
- DecoderFallback.cs
- SystemShuttingDownException.cs
- HitTestParameters3D.cs
- WSFederationHttpSecurityElement.cs
- HttpHandlerActionCollection.cs
- LedgerEntry.cs
- FontFamilyConverter.cs
- TrailingSpaceComparer.cs
- SafeRightsManagementSessionHandle.cs
- EditorBrowsableAttribute.cs
- CustomBindingCollectionElement.cs
- HttpRuntime.cs
- Vector3DIndependentAnimationStorage.cs
- SecurityDescriptor.cs
- ContentDesigner.cs
- FunctionNode.cs
- RuleRefElement.cs
- SemanticTag.cs
- PixelShader.cs
- MorphHelper.cs
- EntityDataSourceQueryBuilder.cs
- StateMachineHistory.cs
- ProtocolViolationException.cs
- AutomationPatternInfo.cs
- FormViewCommandEventArgs.cs
- CharacterHit.cs
- TextSelection.cs
- oledbmetadatacolumnnames.cs
- CryptoApi.cs
- CustomCredentialPolicy.cs
- WebPartsSection.cs
- TableChangeProcessor.cs
- EventLogTraceListener.cs
- MenuTracker.cs
- WindowsTitleBar.cs
- ExcCanonicalXml.cs
- MessageQueuePermissionEntryCollection.cs
- ImageBrush.cs
- XmlTypeAttribute.cs
- HTMLTagNameToTypeMapper.cs
- CustomCredentialPolicy.cs
- TreeNodeStyle.cs
- PermissionAttributes.cs
- TextEditorCharacters.cs
- ListItemDetailViewAttribute.cs
- EntityDataSourceDesignerHelper.cs
- StrokeIntersection.cs
- SubstitutionList.cs
- sqlpipe.cs
- TabletDevice.cs
- ValueQuery.cs
- TabItemAutomationPeer.cs
- ImageMapEventArgs.cs