Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- XmlNamespaceMapping.cs
- DataListItemCollection.cs
- HandlerBase.cs
- ClientBuildManagerCallback.cs
- Exceptions.cs
- CodeCompileUnit.cs
- EventsTab.cs
- FormViewInsertedEventArgs.cs
- WindowsProgressbar.cs
- IntPtr.cs
- XmlDocument.cs
- peersecuritysettings.cs
- DiagnosticTraceSource.cs
- MenuItemCollection.cs
- _FixedSizeReader.cs
- SqlCaseSimplifier.cs
- WMIInterop.cs
- Root.cs
- ButtonBaseAdapter.cs
- SemanticBasicElement.cs
- Button.cs
- DoubleCollection.cs
- CapabilitiesAssignment.cs
- SingleBodyParameterMessageFormatter.cs
- MouseEventArgs.cs
- ChainedAsyncResult.cs
- DocumentGridPage.cs
- PathFigureCollection.cs
- ControlBuilder.cs
- Literal.cs
- DllNotFoundException.cs
- PageHandlerFactory.cs
- ScriptResourceAttribute.cs
- BitmapData.cs
- XmlQueryRuntime.cs
- ExpressionBindingCollection.cs
- HtmlToClrEventProxy.cs
- Typography.cs
- SerializationSectionGroup.cs
- UserControlCodeDomTreeGenerator.cs
- Stream.cs
- EventQueueState.cs
- AsymmetricSignatureDeformatter.cs
- ExclusiveTcpListener.cs
- TextServicesCompartment.cs
- ListViewGroupItemCollection.cs
- UIElement3D.cs
- WebPartConnectionsCancelVerb.cs
- MappedMetaModel.cs
- DataControlFieldsEditor.cs
- Stylesheet.cs
- XsltArgumentList.cs
- XmlSchemaElement.cs
- UrlPropertyAttribute.cs
- BindingNavigator.cs
- VectorKeyFrameCollection.cs
- Button.cs
- SmiContext.cs
- AtlasWeb.Designer.cs
- CodeCastExpression.cs
- DispatcherExceptionFilterEventArgs.cs
- Wrapper.cs
- UIElementParagraph.cs
- VisualProxy.cs
- TransformGroup.cs
- SingleKeyFrameCollection.cs
- DataBindingList.cs
- CuspData.cs
- CodeRemoveEventStatement.cs
- ListView.cs
- FlowDocumentReader.cs
- StateManagedCollection.cs
- RelationshipEndCollection.cs
- VariantWrapper.cs
- MultiPropertyDescriptorGridEntry.cs
- ValidationEventArgs.cs
- TypefaceCollection.cs
- XamlReader.cs
- BooleanKeyFrameCollection.cs
- CollectionChangedEventManager.cs
- FormatException.cs
- LinqDataSourceDeleteEventArgs.cs
- SystemBrushes.cs
- LocatorPartList.cs
- XmlTypeMapping.cs
- regiisutil.cs
- ShaperBuffers.cs
- PrivateFontCollection.cs
- ContainerFilterService.cs
- SoapTypeAttribute.cs
- MarshalByRefObject.cs
- GestureRecognitionResult.cs
- StylusPointPropertyUnit.cs
- DesignerWebPartChrome.cs
- AssociationSetMetadata.cs
- ListViewItem.cs
- RuleSetReference.cs
- ResourceAssociationTypeEnd.cs
- PathGradientBrush.cs
- WebPartCatalogAddVerb.cs