Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Automation / SelectionItemProviderWrapper.cs / 1305600 / SelectionItemProviderWrapper.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Selection Item 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.Collections;
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 SelectionItemProviderWrapper: MarshalByRefObject, ISelectionItemProvider
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
private SelectionItemProviderWrapper( AutomationPeer peer, ISelectionItemProvider iface )
{
_peer = peer;
_iface = iface;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface ISelectionItemProvider
//
//-----------------------------------------------------
#region Interface ISelectionItemProvider
public void Select()
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( Select ), null );
}
public void AddToSelection()
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( AddToSelection ), null );
}
public void RemoveFromSelection()
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( RemoveFromSelection ), null );
}
public bool IsSelected
{
get
{
return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsSelected ), null );
}
}
public IRawElementProviderSimple SelectionContainer
{
get
{
return (IRawElementProviderSimple) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetSelectionContainer ), null );
}
}
#endregion Interface ISelectionItemProvider
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
internal static object Wrap( AutomationPeer peer, object iface )
{
return new SelectionItemProviderWrapper( peer, (ISelectionItemProvider) iface );
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private object Select( object unused )
{
_iface.Select();
return null;
}
private object AddToSelection( object unused )
{
_iface.AddToSelection();
return null;
}
private object RemoveFromSelection( object unused )
{
_iface.RemoveFromSelection();
return null;
}
private object GetIsSelected( object unused )
{
return _iface.IsSelected;
}
private object GetSelectionContainer( object unused )
{
return _iface.SelectionContainer;
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private AutomationPeer _peer;
private ISelectionItemProvider _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: Selection Item 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.Collections;
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 SelectionItemProviderWrapper: MarshalByRefObject, ISelectionItemProvider
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
private SelectionItemProviderWrapper( AutomationPeer peer, ISelectionItemProvider iface )
{
_peer = peer;
_iface = iface;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface ISelectionItemProvider
//
//-----------------------------------------------------
#region Interface ISelectionItemProvider
public void Select()
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( Select ), null );
}
public void AddToSelection()
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( AddToSelection ), null );
}
public void RemoveFromSelection()
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( RemoveFromSelection ), null );
}
public bool IsSelected
{
get
{
return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsSelected ), null );
}
}
public IRawElementProviderSimple SelectionContainer
{
get
{
return (IRawElementProviderSimple) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetSelectionContainer ), null );
}
}
#endregion Interface ISelectionItemProvider
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
internal static object Wrap( AutomationPeer peer, object iface )
{
return new SelectionItemProviderWrapper( peer, (ISelectionItemProvider) iface );
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private object Select( object unused )
{
_iface.Select();
return null;
}
private object AddToSelection( object unused )
{
_iface.AddToSelection();
return null;
}
private object RemoveFromSelection( object unused )
{
_iface.RemoveFromSelection();
return null;
}
private object GetIsSelected( object unused )
{
return _iface.IsSelected;
}
private object GetSelectionContainer( object unused )
{
return _iface.SelectionContainer;
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private AutomationPeer _peer;
private ISelectionItemProvider _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
- Win32Native.cs
- XmlMapping.cs
- ChtmlCommandAdapter.cs
- NestPullup.cs
- HtmlInputCheckBox.cs
- WS2007FederationHttpBinding.cs
- DialogResultConverter.cs
- HttpApplication.cs
- Highlights.cs
- SetterBase.cs
- MultilineStringConverter.cs
- SymDocumentType.cs
- _PooledStream.cs
- SurrogateChar.cs
- InputQueue.cs
- ReflectEventDescriptor.cs
- linebase.cs
- SuppressMergeCheckAttribute.cs
- SiteMapDataSource.cs
- CompositeFontFamily.cs
- ActivityMetadata.cs
- UpdateInfo.cs
- JsonWriter.cs
- BuiltInExpr.cs
- OleDbInfoMessageEvent.cs
- TypeElement.cs
- SecurityKeyEntropyMode.cs
- DataGridRelationshipRow.cs
- OleDbPermission.cs
- StreamAsIStream.cs
- StandardToolWindows.cs
- ArgumentNullException.cs
- ADMembershipProvider.cs
- ItemCheckEvent.cs
- TreeNodeClickEventArgs.cs
- ProtocolsConfiguration.cs
- SecuritySessionFilter.cs
- WebPartDisplayModeCancelEventArgs.cs
- BypassElementCollection.cs
- EditorPartCollection.cs
- Rect3DConverter.cs
- ProviderException.cs
- ErasingStroke.cs
- webbrowsersite.cs
- DataGridColumn.cs
- RolePrincipal.cs
- TrackingValidationObjectDictionary.cs
- OuterProxyWrapper.cs
- CompressEmulationStream.cs
- mediaeventshelper.cs
- SortedSet.cs
- DescendantOverDescendantQuery.cs
- WebZoneDesigner.cs
- TextDecorationCollectionConverter.cs
- ControlCachePolicy.cs
- Brush.cs
- InertiaRotationBehavior.cs
- AutoGeneratedField.cs
- SqlWebEventProvider.cs
- XmlNamespaceDeclarationsAttribute.cs
- SecurityUniqueId.cs
- TrackingMemoryStream.cs
- ItemsChangedEventArgs.cs
- EpmContentSerializerBase.cs
- _SecureChannel.cs
- ScriptMethodAttribute.cs
- __Error.cs
- EntityDataSourceEntityTypeFilterItem.cs
- EmptyQuery.cs
- SHA512Managed.cs
- nulltextcontainer.cs
- DrawingCollection.cs
- SetIndexBinder.cs
- BlurBitmapEffect.cs
- ObjectListFieldCollection.cs
- ToolStripPanel.cs
- TextSchema.cs
- OwnerDrawPropertyBag.cs
- UnsafePeerToPeerMethods.cs
- ToolboxItemAttribute.cs
- WindowProviderWrapper.cs
- MsmqHostedTransportConfiguration.cs
- ComplexType.cs
- XmlEnumAttribute.cs
- Int32KeyFrameCollection.cs
- Latin1Encoding.cs
- PartialTrustVisibleAssembliesSection.cs
- FloaterBaseParagraph.cs
- MethodBuilderInstantiation.cs
- EncoderParameters.cs
- MetadataCollection.cs
- InlineUIContainer.cs
- ExtensionMethods.cs
- VersionValidator.cs
- FormViewRow.cs
- WebPartEditorCancelVerb.cs
- StylusPointPropertyId.cs
- HwndHostAutomationPeer.cs
- LeaseManager.cs
- ZipIOFileItemStream.cs