Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Automation / ItemContainerProviderWrapper.cs / 1305600 / ItemContainerProviderWrapper.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Item Container pattern provider wrapper for WPF
//
// History:
// 10/22/2008 : [....] - created
//
//---------------------------------------------------------------------------
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/WPF Wrapper class: Implements that UIAutomation I...Provider
// interface, and calls through to a WPF 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 ItemContainerProviderWrapper : MarshalByRefObject, IItemContainerProvider
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
private ItemContainerProviderWrapper(AutomationPeer peer, IItemContainerProvider iface)
{
_peer = peer;
_iface = iface;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface IItemContainerProvider
//
//-----------------------------------------------------
#region Interface IItemContainerProvider
public IRawElementProviderSimple FindItemByProperty(IRawElementProviderSimple startAfter, int propertyId, object value)
{
object [] args = new object[]{startAfter, propertyId, value};
return (IRawElementProviderSimple)ElementUtil.Invoke(_peer, new DispatcherOperationCallback(FindItemByProperty), args);
}
#endregion Interface IItemContainerProvider
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
internal static object Wrap(AutomationPeer peer, object iface)
{
return new ItemContainerProviderWrapper(peer, (IItemContainerProvider)iface);
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private object FindItemByProperty(object arg)
{
object[] args = (object[])arg;
IRawElementProviderSimple startAfter = (IRawElementProviderSimple)args[0];
int propertyId = (int)args[1];
object value = (object)args[2];
return _iface.FindItemByProperty(startAfter, propertyId, value);
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private AutomationPeer _peer;
private IItemContainerProvider _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: Item Container pattern provider wrapper for WPF
//
// History:
// 10/22/2008 : [....] - created
//
//---------------------------------------------------------------------------
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/WPF Wrapper class: Implements that UIAutomation I...Provider
// interface, and calls through to a WPF 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 ItemContainerProviderWrapper : MarshalByRefObject, IItemContainerProvider
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
private ItemContainerProviderWrapper(AutomationPeer peer, IItemContainerProvider iface)
{
_peer = peer;
_iface = iface;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface IItemContainerProvider
//
//-----------------------------------------------------
#region Interface IItemContainerProvider
public IRawElementProviderSimple FindItemByProperty(IRawElementProviderSimple startAfter, int propertyId, object value)
{
object [] args = new object[]{startAfter, propertyId, value};
return (IRawElementProviderSimple)ElementUtil.Invoke(_peer, new DispatcherOperationCallback(FindItemByProperty), args);
}
#endregion Interface IItemContainerProvider
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
internal static object Wrap(AutomationPeer peer, object iface)
{
return new ItemContainerProviderWrapper(peer, (IItemContainerProvider)iface);
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private object FindItemByProperty(object arg)
{
object[] args = (object[])arg;
IRawElementProviderSimple startAfter = (IRawElementProviderSimple)args[0];
int propertyId = (int)args[1];
object value = (object)args[2];
return _iface.FindItemByProperty(startAfter, propertyId, value);
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private AutomationPeer _peer;
private IItemContainerProvider _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
- PropertyMappingExceptionEventArgs.cs
- mediaeventshelper.cs
- Ports.cs
- MessageQueueException.cs
- BitmapMetadataBlob.cs
- DataControlFieldHeaderCell.cs
- RegexTree.cs
- LayoutTable.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- BlurEffect.cs
- DomNameTable.cs
- ProcessHostFactoryHelper.cs
- WorkflowTransactionOptions.cs
- HttpValueCollection.cs
- StorageFunctionMapping.cs
- ResolveNameEventArgs.cs
- WasNotInstalledException.cs
- PolicyException.cs
- LinkLabelLinkClickedEvent.cs
- BooleanSwitch.cs
- SqlWorkflowInstanceStore.cs
- Int32.cs
- WebSysDescriptionAttribute.cs
- BitmapFrameDecode.cs
- AmbientProperties.cs
- AlgoModule.cs
- MenuAdapter.cs
- XmlSchemaValidationException.cs
- FloatUtil.cs
- TemplateXamlParser.cs
- FloaterBaseParaClient.cs
- RadioButton.cs
- BindableTemplateBuilder.cs
- ConfigXmlElement.cs
- RegexReplacement.cs
- AspNetSynchronizationContext.cs
- WindowVisualStateTracker.cs
- ShutDownListener.cs
- ToolStripProgressBar.cs
- CommonDialog.cs
- DataChangedEventManager.cs
- EntityDataSourceStatementEditor.cs
- AdornerPresentationContext.cs
- MemberJoinTreeNode.cs
- MessageDescription.cs
- TextProviderWrapper.cs
- WebBrowserNavigatedEventHandler.cs
- AlignmentXValidation.cs
- DesigntimeLicenseContextSerializer.cs
- CopyNodeSetAction.cs
- DesignerValidatorAdapter.cs
- IssuedTokenClientElement.cs
- TdsParser.cs
- WebPartManagerInternals.cs
- VectorKeyFrameCollection.cs
- Token.cs
- parserscommon.cs
- FixedNode.cs
- StrongNameIdentityPermission.cs
- WindowsToolbarItemAsMenuItem.cs
- OneOf.cs
- SmtpNtlmAuthenticationModule.cs
- FixedTextView.cs
- EntityCommand.cs
- BitmapCache.cs
- Encoder.cs
- ObjectDataSourceView.cs
- PopupEventArgs.cs
- WebEventTraceProvider.cs
- ColorConverter.cs
- ColorBlend.cs
- DynamicControl.cs
- FileUtil.cs
- Keywords.cs
- ClientApiGenerator.cs
- AdRotator.cs
- ServiceReflector.cs
- LostFocusEventManager.cs
- Image.cs
- CodeAssignStatement.cs
- UnionCqlBlock.cs
- RegexWriter.cs
- RemotingException.cs
- TableDesigner.cs
- SafeFindHandle.cs
- HuffModule.cs
- ExtentKey.cs
- MultiTargetingUtil.cs
- DataGridPagingPage.cs
- CharacterMetricsDictionary.cs
- DataControlFieldCollection.cs
- URLEditor.cs
- TextDecorationLocationValidation.cs
- OdbcRowUpdatingEvent.cs
- AvtEvent.cs
- SafePipeHandle.cs
- Point3DCollectionConverter.cs
- TextTrailingWordEllipsis.cs
- StateWorkerRequest.cs
- SwitchAttribute.cs