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
- HandleCollector.cs
- ShapeTypeface.cs
- AutomationElement.cs
- BamlLocalizationDictionary.cs
- TypeBuilder.cs
- DomainConstraint.cs
- InteropExecutor.cs
- ImmutableClientRuntime.cs
- RegexGroup.cs
- EndOfStreamException.cs
- LayeredChannelListener.cs
- EventRouteFactory.cs
- BufferedWebEventProvider.cs
- ManipulationDeltaEventArgs.cs
- FakeModelPropertyImpl.cs
- XmlQualifiedName.cs
- TimeZoneInfo.cs
- GPRECT.cs
- BaseParagraph.cs
- MatrixAnimationBase.cs
- SqlWebEventProvider.cs
- EnumUnknown.cs
- WebPartVerb.cs
- SeverityFilter.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- Number.cs
- DataListItemCollection.cs
- DiffuseMaterial.cs
- NativeWindow.cs
- ExternalFile.cs
- SqlDataSourceCommandEventArgs.cs
- NextPreviousPagerField.cs
- embossbitmapeffect.cs
- _NetworkingPerfCounters.cs
- FontEmbeddingManager.cs
- StringResourceManager.cs
- XhtmlBasicObjectListAdapter.cs
- DSASignatureDeformatter.cs
- LightweightCodeGenerator.cs
- Cursors.cs
- DataGridAddNewRow.cs
- MsmqHostedTransportConfiguration.cs
- ConfigurationStrings.cs
- SqlDataSourceCache.cs
- ETagAttribute.cs
- MachineSettingsSection.cs
- DataGridViewButtonCell.cs
- StoragePropertyMapping.cs
- CommandBinding.cs
- RegisteredArrayDeclaration.cs
- ClonableStack.cs
- ExtensionSimplifierMarkupObject.cs
- TraceListener.cs
- DefaultTraceListener.cs
- _IPv4Address.cs
- SqlDeflator.cs
- StagingAreaInputItem.cs
- Visual.cs
- WorkflowInstanceTerminatedRecord.cs
- PreviewKeyDownEventArgs.cs
- Content.cs
- remotingproxy.cs
- MailAddress.cs
- CombinedGeometry.cs
- EntityConnectionStringBuilderItem.cs
- MemberAccessException.cs
- DesignerProperties.cs
- _LocalDataStore.cs
- VideoDrawing.cs
- HwndSource.cs
- HttpConfigurationContext.cs
- X509RawDataKeyIdentifierClause.cs
- RadioButton.cs
- PackUriHelper.cs
- PagesChangedEventArgs.cs
- ManualResetEvent.cs
- RefType.cs
- BypassElementCollection.cs
- ElementInit.cs
- SoapExtensionImporter.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- TabItemAutomationPeer.cs
- ListViewInsertedEventArgs.cs
- FrameworkTextComposition.cs
- __Error.cs
- RoutedEventConverter.cs
- DetailsViewInsertedEventArgs.cs
- PerfCounterSection.cs
- RegexCompilationInfo.cs
- SafeUserTokenHandle.cs
- SystemTcpStatistics.cs
- XamlWriter.cs
- EncoderFallback.cs
- ModulesEntry.cs
- BasicExpressionVisitor.cs
- HandlerFactoryWrapper.cs
- ProcessHostFactoryHelper.cs
- ISO2022Encoding.cs
- CodeTryCatchFinallyStatement.cs
- WebPartHeaderCloseVerb.cs