Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WindowsListViewItemStartMenu.cs / 1305600 / WindowsListViewItemStartMenu.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Win32 ListView Item proxy for the Start Menu. // The Start Menu has a special use of ListViews. The items in the // list are treated like menuitems. To expose this special behavor // data from MSAA is need. The Shell team has implemented a special // IAccessible to support the Sart Menu. // // History: // 2005/01/25 - [....] - Created // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows; using Accessibility; using MS.Win32; namespace MS.Internal.AutomationProxies { // This class will only change a couple of aspects of a ListViewItem. So derive from the ListViewItem to // retain the majority of the ListView item functionality. internal class ListViewItemStartMenu : ListViewItem { // ----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal ListViewItemStartMenu(IntPtr hwnd, ProxyFragment parent, int item, IAccessible acc) : base (hwnd, parent, item) { // The items are zero based, i.e. the first listview item is item 0. The // zero item in MSAA is self, so need to add one to the item to get the // correct Accessible child. AccessibleRole role = Accessible.GetRole(acc, item + 1); // Normal Listview items should be of control type listitem. But // the Listview items in the Start Menu act like menuitems. Get the Role // from IAccessible interface implemented by the Shell team and set the // control type. if (role == AccessibleRole.MenuItem) { _cControlType = ControlType.MenuItem; } else { System.Diagnostics.Debug.Assert(false, "The listview item on the Start Menu has an unexpected IAccessible role!"); } } #endregion Constructos //------------------------------------------------------ // // Patterns Implementation // //----------------------------------------------------- #region ProxySimple Interface // Returns a pattern interface if supported. internal override object GetPatternProvider(AutomationPattern iid) { // Treate these listview 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. if (iid == InvokePattern.Pattern) { return this; } // return null; } // Process all the Logical and Raw Element Properties internal override object GetElementProperty(AutomationProperty idProp) { // Normal Listview items do not have a concept of an AccessKey. But // the Listview items in the Start Menu does. This information is // in the IAccessible interface implemented by the Shell team. if (idProp == AutomationElement.AccessKeyProperty) { // The IAccessible should be valid here since it is the cached value in ProxySimple. System.Diagnostics.Debug.Assert(AccessibleObject != null, "Failed to get a valid IAccessible!"); try { string key = AccessibleObject.get_accKeyboardShortcut(_item + 1); if (!string.IsNullOrEmpty(key)) { return ST.Get(STID.KeyAlt) + "+" + key; } } catch (Exception e) { if (Misc.IsCriticalException(e)) { throw; } } } else if (idProp == AutomationElement.HasKeyboardFocusProperty) { return IsFocused(); } return base.GetElementProperty(idProp); } #endregion } } // 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: Win32 ListView Item proxy for the Start Menu. // The Start Menu has a special use of ListViews. The items in the // list are treated like menuitems. To expose this special behavor // data from MSAA is need. The Shell team has implemented a special // IAccessible to support the Sart Menu. // // History: // 2005/01/25 - [....] - Created // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows; using Accessibility; using MS.Win32; namespace MS.Internal.AutomationProxies { // This class will only change a couple of aspects of a ListViewItem. So derive from the ListViewItem to // retain the majority of the ListView item functionality. internal class ListViewItemStartMenu : ListViewItem { // ----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal ListViewItemStartMenu(IntPtr hwnd, ProxyFragment parent, int item, IAccessible acc) : base (hwnd, parent, item) { // The items are zero based, i.e. the first listview item is item 0. The // zero item in MSAA is self, so need to add one to the item to get the // correct Accessible child. AccessibleRole role = Accessible.GetRole(acc, item + 1); // Normal Listview items should be of control type listitem. But // the Listview items in the Start Menu act like menuitems. Get the Role // from IAccessible interface implemented by the Shell team and set the // control type. if (role == AccessibleRole.MenuItem) { _cControlType = ControlType.MenuItem; } else { System.Diagnostics.Debug.Assert(false, "The listview item on the Start Menu has an unexpected IAccessible role!"); } } #endregion Constructos //------------------------------------------------------ // // Patterns Implementation // //----------------------------------------------------- #region ProxySimple Interface // Returns a pattern interface if supported. internal override object GetPatternProvider(AutomationPattern iid) { // Treate these listview 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. if (iid == InvokePattern.Pattern) { return this; } // return null; } // Process all the Logical and Raw Element Properties internal override object GetElementProperty(AutomationProperty idProp) { // Normal Listview items do not have a concept of an AccessKey. But // the Listview items in the Start Menu does. This information is // in the IAccessible interface implemented by the Shell team. if (idProp == AutomationElement.AccessKeyProperty) { // The IAccessible should be valid here since it is the cached value in ProxySimple. System.Diagnostics.Debug.Assert(AccessibleObject != null, "Failed to get a valid IAccessible!"); try { string key = AccessibleObject.get_accKeyboardShortcut(_item + 1); if (!string.IsNullOrEmpty(key)) { return ST.Get(STID.KeyAlt) + "+" + key; } } catch (Exception e) { if (Misc.IsCriticalException(e)) { throw; } } } else if (idProp == AutomationElement.HasKeyboardFocusProperty) { return IsFocused(); } return base.GetElementProperty(idProp); } #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
- ImportCatalogPart.cs
- DataServiceHost.cs
- XamlReaderHelper.cs
- XhtmlConformanceSection.cs
- EntityKey.cs
- WebPartEditorCancelVerb.cs
- PseudoWebRequest.cs
- XmlSchemaAttributeGroupRef.cs
- TextSearch.cs
- StringDictionary.cs
- HwndKeyboardInputProvider.cs
- Page.cs
- DynamicDiscoSearcher.cs
- _Win32.cs
- SkipStoryboardToFill.cs
- TokenBasedSetEnumerator.cs
- TargetConverter.cs
- StackBuilderSink.cs
- RichListBox.cs
- Properties.cs
- SqlDependency.cs
- GridViewColumnHeaderAutomationPeer.cs
- XpsLiterals.cs
- SQLInt16.cs
- TextLineBreak.cs
- DataGridRow.cs
- DataGridViewCellStyleEditor.cs
- RepeaterItemEventArgs.cs
- NamedPipeChannelFactory.cs
- TableCellCollection.cs
- NullReferenceException.cs
- Trace.cs
- SingleConverter.cs
- DesignTimeParseData.cs
- ErrorRuntimeConfig.cs
- As.cs
- StrongNameKeyPair.cs
- SmiContextFactory.cs
- OdbcErrorCollection.cs
- GridLength.cs
- ConfigurationSectionGroupCollection.cs
- WebPartMenuStyle.cs
- XsltSettings.cs
- MappingModelBuildProvider.cs
- PtsHost.cs
- BaseTemplateCodeDomTreeGenerator.cs
- DbgUtil.cs
- OpenFileDialog.cs
- HyperLinkStyle.cs
- CommandLibraryHelper.cs
- SQLConvert.cs
- XmlAnyElementAttributes.cs
- SchemaExporter.cs
- ClientData.cs
- _UriSyntax.cs
- TemplateParser.cs
- ProxyGenerator.cs
- SqlDelegatedTransaction.cs
- TypeDescriptionProviderAttribute.cs
- DataGridCellInfo.cs
- StaticExtensionConverter.cs
- CustomDictionarySources.cs
- _CookieModule.cs
- TextServicesHost.cs
- SelectedDatesCollection.cs
- CodeAttachEventStatement.cs
- TileModeValidation.cs
- OwnerDrawPropertyBag.cs
- BindUriHelper.cs
- TransformDescriptor.cs
- JournalEntryListConverter.cs
- Panel.cs
- CommentAction.cs
- TopClause.cs
- ReadWriteSpinLock.cs
- RoleService.cs
- ILGenerator.cs
- HttpRuntimeSection.cs
- XmlBaseWriter.cs
- FormViewUpdateEventArgs.cs
- ApplicationSettingsBase.cs
- Rect3D.cs
- Util.cs
- HtmlAnchor.cs
- UIInitializationException.cs
- TargetFrameworkUtil.cs
- GridLength.cs
- WindowsFormsSectionHandler.cs
- SafePointer.cs
- HttpRequestCacheValidator.cs
- WaitHandleCannotBeOpenedException.cs
- _RequestLifetimeSetter.cs
- RepeaterItemEventArgs.cs
- OracleTransaction.cs
- UserControl.cs
- Graphics.cs
- TextTreeTextElementNode.cs
- DataGridTextBoxColumn.cs
- MetaTableHelper.cs
- ParameterCollectionEditorForm.cs