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
- SendContent.cs
- MappedMetaModel.cs
- DurationConverter.cs
- MailMessageEventArgs.cs
- ModuleElement.cs
- ReadOnlyMetadataCollection.cs
- PagerSettings.cs
- EventLogStatus.cs
- WebPartExportVerb.cs
- HttpPostLocalhostServerProtocol.cs
- CounterSampleCalculator.cs
- TagMapCollection.cs
- ObjectStateFormatter.cs
- SamlAudienceRestrictionCondition.cs
- XamlValidatingReader.cs
- StylusPointDescription.cs
- PermissionListSet.cs
- ToolStripOverflowButton.cs
- Typeface.cs
- Empty.cs
- Cursors.cs
- HtmlTableRow.cs
- ConnectionStringsExpressionBuilder.cs
- HtmlInputImage.cs
- KeyedHashAlgorithm.cs
- SqlDataSourceView.cs
- SymbolTable.cs
- NameSpaceExtractor.cs
- StringUtil.cs
- InputReferenceExpression.cs
- IsolationInterop.cs
- RawStylusInput.cs
- ErrorTolerantObjectWriter.cs
- WebZone.cs
- InlineObject.cs
- NonParentingControl.cs
- PathGradientBrush.cs
- VectorAnimationUsingKeyFrames.cs
- SymmetricAlgorithm.cs
- TdsRecordBufferSetter.cs
- BufferedGenericXmlSecurityToken.cs
- TextElement.cs
- ThreadStartException.cs
- PointCollectionValueSerializer.cs
- CharacterMetrics.cs
- ContentType.cs
- FileDataSourceCache.cs
- WebPartConnectionCollection.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- ArgumentNullException.cs
- QuaternionAnimation.cs
- QueryCacheManager.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- LassoSelectionBehavior.cs
- Substitution.cs
- CellConstant.cs
- NTAccount.cs
- TextRunCache.cs
- SchemaObjectWriter.cs
- Sentence.cs
- IntellisenseTextBox.designer.cs
- XmlSignatureProperties.cs
- ClientRuntimeConfig.cs
- RegexTree.cs
- OleDbFactory.cs
- CSharpCodeProvider.cs
- ComponentEvent.cs
- ControlBuilderAttribute.cs
- ZoomPercentageConverter.cs
- FindCriteria11.cs
- LicenseManager.cs
- ObjectListFieldCollection.cs
- DataErrorValidationRule.cs
- CodeDefaultValueExpression.cs
- IssuedTokenClientCredential.cs
- DictionaryGlobals.cs
- EntityDesignerUtils.cs
- SqlTriggerContext.cs
- BuildProvidersCompiler.cs
- DbInsertCommandTree.cs
- EndGetFileNameFromUserRequest.cs
- CatalogPartChrome.cs
- ScriptResourceInfo.cs
- XhtmlBasicListAdapter.cs
- SetStoryboardSpeedRatio.cs
- SafeTimerHandle.cs
- TextRangeProviderWrapper.cs
- CalendarKeyboardHelper.cs
- PackageRelationshipSelector.cs
- LinkedResource.cs
- ConfigurationValidatorAttribute.cs
- ToggleButton.cs
- Size3DConverter.cs
- safex509handles.cs
- SelectionProcessor.cs
- GridPattern.cs
- Identity.cs
- MetaModel.cs
- ToolStripManager.cs
- DPAPIProtectedConfigurationProvider.cs