Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / UIAutomationClient / System / Windows / Automation / ScrollPattern.cs / 1305600 / ScrollPattern.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Client-side wrapper for Scroll Pattern
//
// History:
// 06/23/2003 : BrendanM Ported to WCP
//
//---------------------------------------------------------------------------
using System;
using System.Windows.Automation.Provider;
using MS.Internal.Automation;
namespace System.Windows.Automation
{
///
/// Represents UI elements that are expressing a value
///
#if (INTERNAL_COMPILE)
internal class ScrollPattern: BasePattern
#else
public class ScrollPattern: BasePattern
#endif
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
private ScrollPattern(AutomationElement el, SafePatternHandle hPattern, bool cached)
: base(el, hPattern)
{
_hPattern = hPattern;
_cached = cached;
}
#endregion Constructors
//------------------------------------------------------
//
// Public Constants / Readonly Fields
//
//-----------------------------------------------------
#region Public Constants and Readonly Fields
/// Value used by SetSCrollPercent to indicate that no scrolling should take place in the specified direction
public const double NoScroll = -1.0;
/// Scroll pattern
public static readonly AutomationPattern Pattern = ScrollPatternIdentifiers.Pattern;
/// Property ID: HorizontalScrollPercent - Current horizontal scroll position
public static readonly AutomationProperty HorizontalScrollPercentProperty = ScrollPatternIdentifiers.HorizontalScrollPercentProperty;
/// Property ID: HorizontalViewSize - Minimum possible horizontal scroll position
public static readonly AutomationProperty HorizontalViewSizeProperty = ScrollPatternIdentifiers.HorizontalViewSizeProperty;
/// Property ID: VerticalScrollPercent - Current vertical scroll position
public static readonly AutomationProperty VerticalScrollPercentProperty = ScrollPatternIdentifiers.VerticalScrollPercentProperty;
/// Property ID: VerticalViewSize
public static readonly AutomationProperty VerticalViewSizeProperty = ScrollPatternIdentifiers.VerticalViewSizeProperty;
/// Property ID: HorizontallyScrollable
public static readonly AutomationProperty HorizontallyScrollableProperty = ScrollPatternIdentifiers.HorizontallyScrollableProperty;
/// Property ID: VerticallyScrollable
public static readonly AutomationProperty VerticallyScrollableProperty = ScrollPatternIdentifiers.VerticallyScrollableProperty;
#endregion Public Constants and Readonly Fields
//------------------------------------------------------
//
// Public Methods
//
//------------------------------------------------------
#region Public Methods
/// Request to set the current horizontal and Vertical scroll position
/// by percent (0-100). Passing in the value of "-1" will indicate that
/// scrolling in that direction should be ignored.
/// The ability to call this method and simultaneously scroll horizontally and
/// vertically provides simple panning support.
/// Amount to scroll by horizontally
/// Amount to scroll by vertically
///
///
/// This API does not work inside the secure execution environment.
///
///
public void SetScrollPercent( double horizontalPercent, double verticalPercent )
{
UiaCoreApi.ScrollPattern_SetScrollPercent(_hPattern, horizontalPercent, verticalPercent);
}
/// Request to scroll horizontally and vertically by the specified amount.
/// The ability to call this method and simultaneously scroll horizontally
/// and vertically provides simple panning support. If only horizontal or vertical percent
/// needs to be changed the constant SetScrollPercentUnchanged can be used for
/// either parameter and that axis wil be unchanged.
///
/// amount to scroll by horizontally
/// amount to scroll by vertically
///
///
/// This API does not work inside the secure execution environment.
///
///
public void Scroll( ScrollAmount horizontalAmount, ScrollAmount verticalAmount )
{
UiaCoreApi.ScrollPattern_Scroll(_hPattern, horizontalAmount, verticalAmount);
}
///
/// Request to scroll horizontally by the specified amount
///
/// Amount to scroll by
///
///
/// This API does not work inside the secure execution environment.
///
///
public void ScrollHorizontal( ScrollAmount amount )
{
UiaCoreApi.ScrollPattern_Scroll(_hPattern, amount, ScrollAmount.NoAmount);
}
///
/// Request to scroll vertically by the specified amount
///
/// Amount to scroll by
///
///
/// This API does not work inside the secure execution environment.
///
///
public void ScrollVertical( ScrollAmount amount )
{
UiaCoreApi.ScrollPattern_Scroll(_hPattern, ScrollAmount.NoAmount, amount);
}
#endregion Public Methods
//-----------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
#region Public Properties
///
/// This member allows access to previously requested
/// cached properties for this element. The returned object
/// has accessors for each property defined for this pattern.
///
///
/// Cached property values must have been previously requested
/// using a CacheRequest. If you try to access a cached
/// property that was not previously requested, an InvalidOperation
/// Exception will be thrown.
///
/// To get the value of a property at the current point in time,
/// access the property via the Current accessor instead of
/// Cached.
///
public ScrollPatternInformation Cached
{
get
{
Misc.ValidateCached(_cached);
return new ScrollPatternInformation(_el, true);
}
}
///
/// This member allows access to current property values
/// for this element. The returned object has accessors for
/// each property defined for this pattern.
///
///
/// This pattern must be from an AutomationElement with a
/// Full reference in order to get current values. If the
/// AutomationElement was obtained using AutomationElementMode.None,
/// then it contains only cached data, and attempting to get
/// the current value of any property will throw an InvalidOperationException.
///
/// To get the cached value of a property that was previously
/// specified using a CacheRequest, access the property via the
/// Cached accessor instead of Current.
///
public ScrollPatternInformation Current
{
get
{
Misc.ValidateCurrent(_hPattern);
return new ScrollPatternInformation(_el, false);
}
}
#endregion Public Properties
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
static internal object Wrap(AutomationElement el, SafePatternHandle hPattern, bool cached)
{
return new ScrollPattern(el, hPattern, cached);
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
SafePatternHandle _hPattern;
bool _cached;
#endregion Private Fields
//-----------------------------------------------------
//
// Nested Classes
//
//------------------------------------------------------
#region Nested Classes
///
/// This class provides access to either Cached or Current
/// properties on a pattern via the pattern's .Cached or
/// .Current accessors.
///
public struct ScrollPatternInformation
{
//------------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
internal ScrollPatternInformation(AutomationElement el, bool useCache)
{
_el = el;
_useCache = useCache;
}
#endregion Constructors
//------------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
#region Public Properties
///
/// Get the current horizontal scroll position
///
///
///
/// This API does not work inside the secure execution environment.
///
///
public double HorizontalScrollPercent
{
get
{
return (double)_el.GetPatternPropertyValue(HorizontalScrollPercentProperty, _useCache);
}
}
///
/// Get the current vertical scroll position
///
///
///
/// This API does not work inside the secure execution environment.
///
///
public double VerticalScrollPercent
{
get
{
return (double)_el.GetPatternPropertyValue(VerticalScrollPercentProperty, _useCache);
}
}
///
/// Equal to the horizontal percentage of the entire control that is currently viewable.
///
///
///
/// This API does not work inside the secure execution environment.
///
///
public double HorizontalViewSize
{
get
{
return (double)_el.GetPatternPropertyValue(HorizontalViewSizeProperty, _useCache);
}
}
///
/// Equal to the horizontal percentage of the entire control that is currently viewable.
///
///
///
/// This API does not work inside the secure execution environment.
///
///
public double VerticalViewSize
{
get
{
return (double)_el.GetPatternPropertyValue(VerticalViewSizeProperty, _useCache);
}
}
///
/// True if control can scroll horizontally
///
///
///
/// This API does not work inside the secure execution environment.
///
///
public bool HorizontallyScrollable
{
get
{
return (bool)_el.GetPatternPropertyValue(HorizontallyScrollableProperty, _useCache);
}
}
///
/// True if control can scroll vertically
///
///
///
/// This API does not work inside the secure execution environment.
///
///
public bool VerticallyScrollable
{
get
{
return (bool)_el.GetPatternPropertyValue(VerticallyScrollableProperty, _useCache);
}
}
#endregion Public Properties
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private AutomationElement _el; // AutomationElement that contains the cache or live reference
private bool _useCache; // true to use cache, false to use live reference to get current values
#endregion Private Fields
}
#endregion Nested Classes
}
}
// 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
- SQLMoney.cs
- MemoryPressure.cs
- HostUtils.cs
- ExpandoObject.cs
- InsufficientMemoryException.cs
- WorkflowServiceNamespace.cs
- ApplicationGesture.cs
- ConstrainedDataObject.cs
- AnchorEditor.cs
- TraceXPathNavigator.cs
- FieldAccessException.cs
- OlePropertyStructs.cs
- SiteMapNode.cs
- DtrList.cs
- InstanceKeyView.cs
- CultureTable.cs
- AutoGeneratedFieldProperties.cs
- InputScopeAttribute.cs
- WindowsUpDown.cs
- ObjectSecurity.cs
- AspNetHostingPermission.cs
- SerializationObjectManager.cs
- EncryptedPackage.cs
- PageOrientation.cs
- Directory.cs
- BitmapEffect.cs
- AuthenticationConfig.cs
- FreezableCollection.cs
- XmlSchemaObject.cs
- PrtTicket_Public_Simple.cs
- DataPagerFieldCommandEventArgs.cs
- TriggerActionCollection.cs
- XmlSchemaDatatype.cs
- ListView.cs
- TTSEngineTypes.cs
- TextParaLineResult.cs
- StorageMappingItemCollection.cs
- PerfCounterSection.cs
- HttpValueCollection.cs
- ReadOnlyAttribute.cs
- HttpDictionary.cs
- ConstructorExpr.cs
- LinkArea.cs
- EventHandlerService.cs
- PathNode.cs
- SurrogateSelector.cs
- CustomGrammar.cs
- EUCJPEncoding.cs
- GenericIdentity.cs
- FastEncoderStatics.cs
- EditingScope.cs
- UnsafeNativeMethods.cs
- CheckBoxList.cs
- QueryExpression.cs
- RectConverter.cs
- StandardRuntimeEnumValidator.cs
- XmlHelper.cs
- CodePageUtils.cs
- __Filters.cs
- DiagnosticTraceRecords.cs
- TerminatorSinks.cs
- TextSpan.cs
- ProgressBarAutomationPeer.cs
- ListComponentEditor.cs
- VerificationAttribute.cs
- PriorityQueue.cs
- EditingCoordinator.cs
- FtpWebRequest.cs
- UIElement3DAutomationPeer.cs
- FixedTextContainer.cs
- IProducerConsumerCollection.cs
- Property.cs
- XmlNavigatorStack.cs
- CodeArrayIndexerExpression.cs
- ConfigurationSectionGroupCollection.cs
- tooltip.cs
- StorageSetMapping.cs
- MobileTextWriter.cs
- XmlSerializationGeneratedCode.cs
- SrgsSubset.cs
- TextEncodedRawTextWriter.cs
- XmlNamedNodeMap.cs
- HttpRequestTraceRecord.cs
- ValidationHelper.cs
- BidirectionalDictionary.cs
- ImageCodecInfo.cs
- EntryPointNotFoundException.cs
- DataRelation.cs
- RadioButtonStandardAdapter.cs
- StickyNoteAnnotations.cs
- TextDecorations.cs
- PrimitiveType.cs
- SelfIssuedAuthAsymmetricKey.cs
- SimpleNameService.cs
- TextPattern.cs
- ExpandableObjectConverter.cs
- Int32CAMarshaler.cs
- SpecialFolderEnumConverter.cs
- EdmComplexPropertyAttribute.cs
- ObjectTokenCategory.cs