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 / ToggleProviderWrapper.cs / 1 / ToggleProviderWrapper.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Toggle pattern provider wrapper for WCP
//
// History:
// 02/04/2004 : MKarr wrote
//
//---------------------------------------------------------------------------
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 ToggleProviderWrapper: MarshalByRefObject, IToggleProvider
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
private ToggleProviderWrapper( AutomationPeer peer, IToggleProvider iface )
{
_peer = peer;
_iface = iface;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface IValueProvider
//
//-----------------------------------------------------
#region Interface IToggleProvider
public void Toggle( )
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( ToggleInternal ), null );
}
public ToggleState ToggleState
{
get
{
return (ToggleState) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetToggleState ), null );
}
}
#endregion Interface IToggleProvider
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
internal static object Wrap( AutomationPeer peer, object iface )
{
return new ToggleProviderWrapper( peer, (IToggleProvider) iface );
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private object ToggleInternal( object unused )
{
_iface.Toggle();
return null;
}
private object GetToggleState( object unused )
{
return _iface.ToggleState;
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private AutomationPeer _peer;
private IToggleProvider _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: Toggle pattern provider wrapper for WCP
//
// History:
// 02/04/2004 : MKarr wrote
//
//---------------------------------------------------------------------------
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 ToggleProviderWrapper: MarshalByRefObject, IToggleProvider
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
private ToggleProviderWrapper( AutomationPeer peer, IToggleProvider iface )
{
_peer = peer;
_iface = iface;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface IValueProvider
//
//-----------------------------------------------------
#region Interface IToggleProvider
public void Toggle( )
{
ElementUtil.Invoke( _peer, new DispatcherOperationCallback( ToggleInternal ), null );
}
public ToggleState ToggleState
{
get
{
return (ToggleState) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetToggleState ), null );
}
}
#endregion Interface IToggleProvider
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
#region Internal Methods
internal static object Wrap( AutomationPeer peer, object iface )
{
return new ToggleProviderWrapper( peer, (IToggleProvider) iface );
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private object ToggleInternal( object unused )
{
_iface.Toggle();
return null;
}
private object GetToggleState( object unused )
{
return _iface.ToggleState;
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private AutomationPeer _peer;
private IToggleProvider _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
- ContextActivityUtils.cs
- PlatformCulture.cs
- Convert.cs
- WorkflowPrinting.cs
- ToolStripContentPanel.cs
- SqlStream.cs
- SchemaTypeEmitter.cs
- OutgoingWebRequestContext.cs
- DataServiceBehavior.cs
- JsonWriter.cs
- DataTableMapping.cs
- RegexGroup.cs
- MruCache.cs
- DataGridPagerStyle.cs
- PreviewPrintController.cs
- MetabaseReader.cs
- ComponentCommands.cs
- AuthenticationSection.cs
- SQLSingleStorage.cs
- BatchParser.cs
- EventSinkActivityDesigner.cs
- EventProvider.cs
- TypeConverterHelper.cs
- HashAlgorithm.cs
- ZipIORawDataFileBlock.cs
- TitleStyle.cs
- IncrementalReadDecoders.cs
- NativeMethods.cs
- DeclaredTypeValidator.cs
- TextFormatter.cs
- ScrollChrome.cs
- SmtpNetworkElement.cs
- DataRowView.cs
- AQNBuilder.cs
- HMACMD5.cs
- DataView.cs
- ModelTreeEnumerator.cs
- LostFocusEventManager.cs
- SmiEventSink_Default.cs
- PagedControl.cs
- BindingMemberInfo.cs
- InputScope.cs
- _HelperAsyncResults.cs
- ChtmlTextWriter.cs
- XmlComplianceUtil.cs
- PrinterUnitConvert.cs
- DrawingDrawingContext.cs
- StylusSystemGestureEventArgs.cs
- KerberosRequestorSecurityToken.cs
- Latin1Encoding.cs
- ToolZone.cs
- ToolZone.cs
- DefaultMemberAttribute.cs
- SizeChangedInfo.cs
- RuntimeConfigLKG.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- SerializationEventsCache.cs
- CompareValidator.cs
- RawStylusSystemGestureInputReport.cs
- DataBoundLiteralControl.cs
- Query.cs
- EnvelopedPkcs7.cs
- InheritanceContextChangedEventManager.cs
- DataControlCommands.cs
- SQlBooleanStorage.cs
- SelectionListDesigner.cs
- ViewValidator.cs
- Int16AnimationBase.cs
- CqlWriter.cs
- MulticastOption.cs
- InputProcessorProfilesLoader.cs
- CutCopyPasteHelper.cs
- PriorityBinding.cs
- BaseParagraph.cs
- EntityObject.cs
- MulticastDelegate.cs
- BamlStream.cs
- PostBackOptions.cs
- DesignerHierarchicalDataSourceView.cs
- ContentPlaceHolder.cs
- SapiRecognizer.cs
- RangeValuePattern.cs
- WSSecurityPolicy.cs
- SelectedCellsChangedEventArgs.cs
- TrailingSpaceComparer.cs
- HtmlMeta.cs
- MouseDevice.cs
- DataGridViewHitTestInfo.cs
- HostedElements.cs
- OperatorExpressions.cs
- Rethrow.cs
- TickBar.cs
- Socket.cs
- RichTextBox.cs
- InvalidateEvent.cs
- Vector3DIndependentAnimationStorage.cs
- RTLAwareMessageBox.cs
- EntityWithKeyStrategy.cs
- DataProtection.cs
- HasCopySemanticsAttribute.cs