Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WindowsToolbarItemAsMenuItem.cs / 1305600 / WindowsToolbarItemAsMenuItem.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Some applications implement menus with toolbars. This proxy
// will used the IAccessible to expose these toolbar items as
// menu items. This proxy is derived from ToolbarItem since
// the underlying control really is a toolbar and ToolbarItem
// knows how to communicate with a toolbars to get information for
// toolbar items already.
//
// History:
// 01/31/2005 : [....] Created
//---------------------------------------------------------------------------
using System;
using System.Windows.Automation;
using MS.Win32;
namespace MS.Internal.AutomationProxies
{
class ToolbarItemAsMenuItem : ToolbarItem
{
// -----------------------------------------------------
//
// Constructors
//
// -----------------------------------------------------
#region Constructors
internal ToolbarItemAsMenuItem(IntPtr hwnd, ProxyFragment parent, int item, int idCommand, Accessible acc)
: base(hwnd, parent, item, idCommand)
{
_acc = acc;
// Set the control type based on the IAccessible role.
AccessibleRole role = acc.Role;
if (role == AccessibleRole.MenuItem)
{
_cControlType = ControlType.MenuItem;
}
else
{
System.Diagnostics.Debug.Assert(false, "Unexpected role " + role);
}
// MenuItems are by default KeyboardFocusable.
_fIsKeyboardFocusable = true;
}
#endregion
// ------------------------------------------------------
//
// Patterns Implementation
//
// -----------------------------------------------------
#region ProxySimple Interface
// Returns a pattern interface if supported.
internal override object GetPatternProvider (AutomationPattern iid)
{
// Treate these toolbar items as menuitems and only support Invoke or Expand/Collapse patterns.
// Invoke Pattern needs to be supported when the item has no children. When the item does have
// children it needs to support ExpandCollapse Pattern.
// Check if button is a separator
if (IsSeparator())
{
return null;
}
// Check if button is disabled
if (Misc.ProxySendMessageInt(_hwnd, NativeMethods.TB_ISBUTTONENABLED, new IntPtr(_idCommand), IntPtr.Zero) == 0)
{
return null;
}
// Check if button is hidden
if (Misc.ProxySendMessageInt(_hwnd, NativeMethods.TB_ISBUTTONHIDDEN, new IntPtr(_idCommand), IntPtr.Zero) != 0)
{
return null;
}
//
if (iid == InvokePattern.Pattern)
{
// button is enabled and not hidden and not a separator
return this;
}
//
return null;
}
// Process all the Element Properties
internal override object GetElementProperty(AutomationProperty idProp)
{
if (idProp == AutomationElement.HasKeyboardFocusProperty)
{
return IsFocused();
}
return base.GetElementProperty(idProp);
}
#endregion
// ------------------------------------------------------
//
// Private Fields
//
// ------------------------------------------------------
#region Private Fields
Accessible _acc;
#endregion
}
}
// 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
- CheckBoxRenderer.cs
- AutomationIdentifier.cs
- FileDetails.cs
- ErrorRuntimeConfig.cs
- Serializer.cs
- PathFigureCollection.cs
- VisualBrush.cs
- JsonMessageEncoderFactory.cs
- SynchronizedInputPattern.cs
- WebPartDisplayMode.cs
- DbConnectionFactory.cs
- MenuItemCollection.cs
- CategoryAttribute.cs
- AxHost.cs
- XPathDocumentNavigator.cs
- DesignRelationCollection.cs
- WindowsListBox.cs
- CodeTypeReferenceCollection.cs
- BookmarkNameHelper.cs
- DependencyObjectPropertyDescriptor.cs
- CanExecuteRoutedEventArgs.cs
- InvokeSchedule.cs
- DataGridViewTopLeftHeaderCell.cs
- _SSPISessionCache.cs
- XmlImplementation.cs
- WeakReferenceEnumerator.cs
- XmlSchemaResource.cs
- HtmlPageAdapter.cs
- Buffer.cs
- KnownColorTable.cs
- CodeSnippetTypeMember.cs
- indexingfiltermarshaler.cs
- UnknownWrapper.cs
- ExtensibleClassFactory.cs
- WebPartEditorOkVerb.cs
- UInt32.cs
- SHA1CryptoServiceProvider.cs
- ConfigurationPropertyAttribute.cs
- SymbolEqualComparer.cs
- HtmlMeta.cs
- DataListItemEventArgs.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- XmlSerializer.cs
- EdmItemCollection.cs
- MeasureItemEvent.cs
- XmlBinaryWriter.cs
- RewritingProcessor.cs
- Single.cs
- InfoCardAsymmetricCrypto.cs
- StrokeIntersection.cs
- TypedAsyncResult.cs
- LinqDataSourceDisposeEventArgs.cs
- UncommonField.cs
- ConfigLoader.cs
- Tile.cs
- SynchronizedInputPattern.cs
- Event.cs
- TabControl.cs
- DataMember.cs
- KeyInterop.cs
- Vector3DAnimationUsingKeyFrames.cs
- SizeChangedEventArgs.cs
- CodeChecksumPragma.cs
- XsltLoader.cs
- ApplicationServicesHostFactory.cs
- XmlChildNodes.cs
- CaseInsensitiveComparer.cs
- Types.cs
- PerspectiveCamera.cs
- DataGridViewAutoSizeModeEventArgs.cs
- InstanceDataCollectionCollection.cs
- XmlReflectionImporter.cs
- DbCommandDefinition.cs
- ServerIdentity.cs
- ContractBase.cs
- TriggerCollection.cs
- ElementHostAutomationPeer.cs
- HttpApplicationFactory.cs
- EntityDataSource.cs
- SharedPerformanceCounter.cs
- AuthenticationService.cs
- ReferentialConstraint.cs
- FutureFactory.cs
- DelegatingTypeDescriptionProvider.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ElementNotEnabledException.cs
- ElementAction.cs
- SecurityPolicySection.cs
- ParameterCollection.cs
- SByteConverter.cs
- HttpProtocolReflector.cs
- DataListItem.cs
- Latin1Encoding.cs
- Pen.cs
- PasswordBoxAutomationPeer.cs
- Codec.cs
- NavigatorInvalidBodyAccessException.cs
- TableCell.cs
- DocumentOrderComparer.cs
- HttpAsyncResult.cs