Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Automation / Peers / FlowDocumentReaderAutomationPeer.cs / 1 / FlowDocumentReaderAutomationPeer.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: FlowDocumentReaderAutomationPeer.cs
//
// Description: AutomationPeer associated with FlowDocumentReader.
//
//---------------------------------------------------------------------------
using System.Collections.Generic; // List
using System.Windows.Automation.Provider; // IMultipleViewProvider
using System.Windows.Controls; // FlowDocumentReader
using System.Windows.Documents; // FlowDocument
using MS.Internal; // Invariant
namespace System.Windows.Automation.Peers
{
///
/// AutomationPeer associated with FlowDocumentScrollViewer.
///
public class FlowDocumentReaderAutomationPeer : FrameworkElementAutomationPeer, IMultipleViewProvider
{
///
/// Constructor.
///
/// Owner of the AutomationPeer.
public FlowDocumentReaderAutomationPeer(FlowDocumentReader owner)
: base(owner)
{ }
///
///
///
public override object GetPattern(PatternInterface patternInterface)
{
object returnValue = null;
if (patternInterface == PatternInterface.MultipleView)
{
returnValue = this;
}
return returnValue;
}
///
///
///
///
/// AutomationPeer associated with FlowDocumentScrollViewer returns an AutomationPeer
/// for hosted Document and for elements in the style.
///
protected override List GetChildrenCore()
{
// Get children for all elements in the style.
List children = base.GetChildrenCore();
// Add AutomationPeer associated with the document.
// Make it the first child of the collection.
FlowDocument document = ((FlowDocumentReader)Owner).Document;
if (document != null)
{
AutomationPeer documentPeer = ContentElementAutomationPeer.CreatePeerForElement(document);
if (_documentPeer != documentPeer)
{
if (_documentPeer != null)
{
_documentPeer.OnDisconnected();
}
_documentPeer = documentPeer as DocumentAutomationPeer;
}
if (documentPeer != null)
{
if (children == null)
{
children = new List();
}
children.Add(documentPeer);
}
}
return children;
}
///
///
///
protected override string GetClassNameCore()
{
return "FlowDocumentReader";
}
///
/// This helper synchronously fires automation PropertyChange event
/// in responce to current view mode change.
///
//
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
internal void RaiseCurrentViewChangedEvent(FlowDocumentReaderViewingMode newMode, FlowDocumentReaderViewingMode oldMode)
{
if (newMode != oldMode)
{
RaisePropertyChangedEvent(MultipleViewPatternIdentifiers.CurrentViewProperty,
ConvertModeToViewId(newMode), ConvertModeToViewId(oldMode));
}
}
///
/// This helper synchronously fires automation PropertyChange event
/// in responce to supported views change.
///
//
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
internal void RaiseSupportedViewsChangedEvent(DependencyPropertyChangedEventArgs e)
{
bool newSingle, oldSingle, newFacing, oldFacing, newScroll, oldScroll;
if (e.Property == FlowDocumentReader.IsPageViewEnabledProperty)
{
newSingle = (bool)e.NewValue;
oldSingle = (bool)e.OldValue;
newFacing = oldFacing = FlowDocumentReader.IsTwoPageViewEnabled;
newScroll = oldScroll = FlowDocumentReader.IsScrollViewEnabled;
}
else if (e.Property == FlowDocumentReader.IsTwoPageViewEnabledProperty)
{
newSingle = oldSingle = FlowDocumentReader.IsPageViewEnabled;
newFacing = (bool)e.NewValue;
oldFacing = (bool)e.OldValue;
newScroll = oldScroll = FlowDocumentReader.IsScrollViewEnabled;
}
else// if (e.Property == FlowDocumentReader.IsScrollViewEnabledProperty)
{
newSingle = oldSingle = FlowDocumentReader.IsPageViewEnabled;
newFacing = oldFacing = FlowDocumentReader.IsTwoPageViewEnabled;
newScroll = (bool)e.NewValue;
oldScroll = (bool)e.OldValue;
}
if (newSingle != oldSingle || newFacing != oldFacing || newScroll != oldScroll)
{
int[] newViews = GetSupportedViews(newSingle, newFacing, newScroll);
int[] oldViews = GetSupportedViews(oldSingle, oldFacing, oldScroll);
RaisePropertyChangedEvent(MultipleViewPatternIdentifiers.SupportedViewsProperty, newViews, oldViews);
}
}
//-------------------------------------------------------------------
//
// Private Members
//
//-------------------------------------------------------------------
#region Private Members
private int[] GetSupportedViews(bool single, bool facing, bool scroll)
{
int count = 0;
if (single) { count++; }
if (facing) { count++; }
if (scroll) { count++; }
int[] views = count > 0 ? new int[count] : null;
count = 0;
if (single) { views[count++] = ConvertModeToViewId(FlowDocumentReaderViewingMode.Page); }
if (facing) { views[count++] = ConvertModeToViewId(FlowDocumentReaderViewingMode.TwoPage); }
if (scroll) { views[count++] = ConvertModeToViewId(FlowDocumentReaderViewingMode.Scroll); }
return views;
}
///
/// Converts viewing mode to view id.
///
private int ConvertModeToViewId(FlowDocumentReaderViewingMode mode)
{
return (int)mode;
}
///
/// Converts view id to viewing mode.
///
private FlowDocumentReaderViewingMode ConvertViewIdToMode(int viewId)
{
Invariant.Assert(viewId >= 0 && viewId <= 2);
return (FlowDocumentReaderViewingMode)viewId;
}
///
/// FlowDocumentReader associated with the peer.
///
private FlowDocumentReader FlowDocumentReader
{
get { return (FlowDocumentReader)Owner; }
}
private DocumentAutomationPeer _documentPeer;
#endregion Private Members
//--------------------------------------------------------------------
//
// IMultipleViewProvider Members
//
//-------------------------------------------------------------------
#region IMultipleViewProvider Members
///
///
///
string IMultipleViewProvider.GetViewName(int viewId)
{
string name = string.Empty;
if (viewId >= 0 && viewId <= 2)
{
FlowDocumentReaderViewingMode mode = ConvertViewIdToMode(viewId);
if (mode == FlowDocumentReaderViewingMode.Page)
{
name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_PageViewName);
}
else if (mode == FlowDocumentReaderViewingMode.TwoPage)
{
name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_TwoPageViewName);
}
else if (mode == FlowDocumentReaderViewingMode.Scroll)
{
name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_ScrollViewName);
}
}
return name;
}
///
///
///
void IMultipleViewProvider.SetCurrentView(int viewId)
{
if (viewId >= 0 && viewId <= 2)
{
FlowDocumentReader.ViewingMode = ConvertViewIdToMode(viewId);
}
}
///
///
///
int IMultipleViewProvider.CurrentView
{
get { return ConvertModeToViewId(FlowDocumentReader.ViewingMode); }
}
///
///
///
int[] IMultipleViewProvider.GetSupportedViews()
{
return GetSupportedViews(
FlowDocumentReader.IsPageViewEnabled,
FlowDocumentReader.IsTwoPageViewEnabled,
FlowDocumentReader.IsScrollViewEnabled);
}
#endregion IMultipleViewProvider Members
}
}
// 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.
//
// File: FlowDocumentReaderAutomationPeer.cs
//
// Description: AutomationPeer associated with FlowDocumentReader.
//
//---------------------------------------------------------------------------
using System.Collections.Generic; // List
using System.Windows.Automation.Provider; // IMultipleViewProvider
using System.Windows.Controls; // FlowDocumentReader
using System.Windows.Documents; // FlowDocument
using MS.Internal; // Invariant
namespace System.Windows.Automation.Peers
{
///
/// AutomationPeer associated with FlowDocumentScrollViewer.
///
public class FlowDocumentReaderAutomationPeer : FrameworkElementAutomationPeer, IMultipleViewProvider
{
///
/// Constructor.
///
/// Owner of the AutomationPeer.
public FlowDocumentReaderAutomationPeer(FlowDocumentReader owner)
: base(owner)
{ }
///
///
///
public override object GetPattern(PatternInterface patternInterface)
{
object returnValue = null;
if (patternInterface == PatternInterface.MultipleView)
{
returnValue = this;
}
return returnValue;
}
///
///
///
///
/// AutomationPeer associated with FlowDocumentScrollViewer returns an AutomationPeer
/// for hosted Document and for elements in the style.
///
protected override List GetChildrenCore()
{
// Get children for all elements in the style.
List children = base.GetChildrenCore();
// Add AutomationPeer associated with the document.
// Make it the first child of the collection.
FlowDocument document = ((FlowDocumentReader)Owner).Document;
if (document != null)
{
AutomationPeer documentPeer = ContentElementAutomationPeer.CreatePeerForElement(document);
if (_documentPeer != documentPeer)
{
if (_documentPeer != null)
{
_documentPeer.OnDisconnected();
}
_documentPeer = documentPeer as DocumentAutomationPeer;
}
if (documentPeer != null)
{
if (children == null)
{
children = new List();
}
children.Add(documentPeer);
}
}
return children;
}
///
///
///
protected override string GetClassNameCore()
{
return "FlowDocumentReader";
}
///
/// This helper synchronously fires automation PropertyChange event
/// in responce to current view mode change.
///
//
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
internal void RaiseCurrentViewChangedEvent(FlowDocumentReaderViewingMode newMode, FlowDocumentReaderViewingMode oldMode)
{
if (newMode != oldMode)
{
RaisePropertyChangedEvent(MultipleViewPatternIdentifiers.CurrentViewProperty,
ConvertModeToViewId(newMode), ConvertModeToViewId(oldMode));
}
}
///
/// This helper synchronously fires automation PropertyChange event
/// in responce to supported views change.
///
//
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
internal void RaiseSupportedViewsChangedEvent(DependencyPropertyChangedEventArgs e)
{
bool newSingle, oldSingle, newFacing, oldFacing, newScroll, oldScroll;
if (e.Property == FlowDocumentReader.IsPageViewEnabledProperty)
{
newSingle = (bool)e.NewValue;
oldSingle = (bool)e.OldValue;
newFacing = oldFacing = FlowDocumentReader.IsTwoPageViewEnabled;
newScroll = oldScroll = FlowDocumentReader.IsScrollViewEnabled;
}
else if (e.Property == FlowDocumentReader.IsTwoPageViewEnabledProperty)
{
newSingle = oldSingle = FlowDocumentReader.IsPageViewEnabled;
newFacing = (bool)e.NewValue;
oldFacing = (bool)e.OldValue;
newScroll = oldScroll = FlowDocumentReader.IsScrollViewEnabled;
}
else// if (e.Property == FlowDocumentReader.IsScrollViewEnabledProperty)
{
newSingle = oldSingle = FlowDocumentReader.IsPageViewEnabled;
newFacing = oldFacing = FlowDocumentReader.IsTwoPageViewEnabled;
newScroll = (bool)e.NewValue;
oldScroll = (bool)e.OldValue;
}
if (newSingle != oldSingle || newFacing != oldFacing || newScroll != oldScroll)
{
int[] newViews = GetSupportedViews(newSingle, newFacing, newScroll);
int[] oldViews = GetSupportedViews(oldSingle, oldFacing, oldScroll);
RaisePropertyChangedEvent(MultipleViewPatternIdentifiers.SupportedViewsProperty, newViews, oldViews);
}
}
//-------------------------------------------------------------------
//
// Private Members
//
//-------------------------------------------------------------------
#region Private Members
private int[] GetSupportedViews(bool single, bool facing, bool scroll)
{
int count = 0;
if (single) { count++; }
if (facing) { count++; }
if (scroll) { count++; }
int[] views = count > 0 ? new int[count] : null;
count = 0;
if (single) { views[count++] = ConvertModeToViewId(FlowDocumentReaderViewingMode.Page); }
if (facing) { views[count++] = ConvertModeToViewId(FlowDocumentReaderViewingMode.TwoPage); }
if (scroll) { views[count++] = ConvertModeToViewId(FlowDocumentReaderViewingMode.Scroll); }
return views;
}
///
/// Converts viewing mode to view id.
///
private int ConvertModeToViewId(FlowDocumentReaderViewingMode mode)
{
return (int)mode;
}
///
/// Converts view id to viewing mode.
///
private FlowDocumentReaderViewingMode ConvertViewIdToMode(int viewId)
{
Invariant.Assert(viewId >= 0 && viewId <= 2);
return (FlowDocumentReaderViewingMode)viewId;
}
///
/// FlowDocumentReader associated with the peer.
///
private FlowDocumentReader FlowDocumentReader
{
get { return (FlowDocumentReader)Owner; }
}
private DocumentAutomationPeer _documentPeer;
#endregion Private Members
//--------------------------------------------------------------------
//
// IMultipleViewProvider Members
//
//-------------------------------------------------------------------
#region IMultipleViewProvider Members
///
///
///
string IMultipleViewProvider.GetViewName(int viewId)
{
string name = string.Empty;
if (viewId >= 0 && viewId <= 2)
{
FlowDocumentReaderViewingMode mode = ConvertViewIdToMode(viewId);
if (mode == FlowDocumentReaderViewingMode.Page)
{
name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_PageViewName);
}
else if (mode == FlowDocumentReaderViewingMode.TwoPage)
{
name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_TwoPageViewName);
}
else if (mode == FlowDocumentReaderViewingMode.Scroll)
{
name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_ScrollViewName);
}
}
return name;
}
///
///
///
void IMultipleViewProvider.SetCurrentView(int viewId)
{
if (viewId >= 0 && viewId <= 2)
{
FlowDocumentReader.ViewingMode = ConvertViewIdToMode(viewId);
}
}
///
///
///
int IMultipleViewProvider.CurrentView
{
get { return ConvertModeToViewId(FlowDocumentReader.ViewingMode); }
}
///
///
///
int[] IMultipleViewProvider.GetSupportedViews()
{
return GetSupportedViews(
FlowDocumentReader.IsPageViewEnabled,
FlowDocumentReader.IsTwoPageViewEnabled,
FlowDocumentReader.IsScrollViewEnabled);
}
#endregion IMultipleViewProvider Members
}
}
// 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
- PackWebRequestFactory.cs
- UnsafeNativeMethods.cs
- CapacityStreamGeometryContext.cs
- AssertSection.cs
- RightsManagementPermission.cs
- StrongNameUtility.cs
- UserThread.cs
- WebBodyFormatMessageProperty.cs
- While.cs
- ReadOnlyObservableCollection.cs
- Rectangle.cs
- ContentElement.cs
- ApplicationServicesHostFactory.cs
- UnhandledExceptionEventArgs.cs
- NewItemsContextMenuStrip.cs
- StrokeNodeOperations.cs
- Blend.cs
- LinkLabelLinkClickedEvent.cs
- HtmlElementEventArgs.cs
- TryCatchDesigner.xaml.cs
- TreeNodeBinding.cs
- Rectangle.cs
- TextTreeNode.cs
- XmlDataSourceView.cs
- BaseResourcesBuildProvider.cs
- UnsignedPublishLicense.cs
- QuotedStringWriteStateInfo.cs
- _NetRes.cs
- EntityViewContainer.cs
- CompositeTypefaceMetrics.cs
- MiniParameterInfo.cs
- FileSystemInfo.cs
- RewritingProcessor.cs
- StructuredTypeEmitter.cs
- DataPagerField.cs
- OrderPreservingSpoolingTask.cs
- XmlIlTypeHelper.cs
- ToolStripItemImageRenderEventArgs.cs
- LogLogRecordHeader.cs
- OleAutBinder.cs
- XmlSchemaIdentityConstraint.cs
- CompilerGeneratedAttribute.cs
- ArrowControl.xaml.cs
- PageTheme.cs
- Form.cs
- TextParagraphCache.cs
- RangeBase.cs
- ApplicationTrust.cs
- ObjectQueryExecutionPlan.cs
- PolicyStatement.cs
- XmlSchemaSubstitutionGroup.cs
- CancelAsyncOperationRequest.cs
- GridViewSelectEventArgs.cs
- FormParameter.cs
- DBDataPermission.cs
- URIFormatException.cs
- TypeElement.cs
- ModelProperty.cs
- ActiveXContainer.cs
- MaterialGroup.cs
- DictionaryChange.cs
- InvalidCommandTreeException.cs
- WbmpConverter.cs
- OrCondition.cs
- GPPOINT.cs
- XmlDictionaryWriter.cs
- DefaultPerformanceCounters.cs
- SpeechRecognizer.cs
- arclist.cs
- SqlDataRecord.cs
- CacheMemory.cs
- IPEndPoint.cs
- AnimationLayer.cs
- OracleConnectionString.cs
- RawMouseInputReport.cs
- MimeWriter.cs
- ProxyWebPart.cs
- ConfigsHelper.cs
- PlacementWorkspace.cs
- ContractMapping.cs
- GridToolTip.cs
- EventLogPropertySelector.cs
- X509Utils.cs
- PointF.cs
- Popup.cs
- PermissionSetTriple.cs
- ReferenceEqualityComparer.cs
- ClientApiGenerator.cs
- AlignmentYValidation.cs
- PrincipalPermission.cs
- DesignerTransactionCloseEvent.cs
- Icon.cs
- Privilege.cs
- JsonGlobals.cs
- DbFunctionCommandTree.cs
- XmlCustomFormatter.cs
- SerializationHelper.cs
- VectorKeyFrameCollection.cs
- MarshalByRefObject.cs
- HttpRequestCacheValidator.cs