Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WindowsListViewItemStartMenu.cs / 1 / 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
- SmiEventSink.cs
- Soap12ServerProtocol.cs
- MimeAnyImporter.cs
- EventLogPermissionEntryCollection.cs
- RegistryConfigurationProvider.cs
- DigestComparer.cs
- NotificationContext.cs
- Registration.cs
- SqlCacheDependencyDatabaseCollection.cs
- AdPostCacheSubstitution.cs
- HttpModuleAction.cs
- ActiveXHost.cs
- DataControlField.cs
- ToolStripItemBehavior.cs
- PrivilegedConfigurationManager.cs
- DataGridViewLayoutData.cs
- CloudCollection.cs
- XmlNode.cs
- ActivationServices.cs
- NativeMethodsCLR.cs
- ToolStripOverflowButton.cs
- DesignerProperties.cs
- ChildDocumentBlock.cs
- InlineCollection.cs
- AnnotationAdorner.cs
- Pair.cs
- SwitchElementsCollection.cs
- ConfigViewGenerator.cs
- ComplexBindingPropertiesAttribute.cs
- FontSourceCollection.cs
- TargetFrameworkAttribute.cs
- HttpDebugHandler.cs
- FragmentQueryProcessor.cs
- WebPartManager.cs
- TextPattern.cs
- StreamBodyWriter.cs
- Line.cs
- FileLogRecordHeader.cs
- validationstate.cs
- ProviderConnectionPointCollection.cs
- TcpTransportBindingElement.cs
- WebPartConnectionsCancelEventArgs.cs
- Expressions.cs
- DbMetaDataCollectionNames.cs
- WinInet.cs
- BigInt.cs
- SystemIPGlobalProperties.cs
- WebPartConnectionCollection.cs
- ActivityStatusChangeEventArgs.cs
- Atom10FormatterFactory.cs
- Matrix3DStack.cs
- OleDbConnectionFactory.cs
- hresults.cs
- TextReader.cs
- AsymmetricCryptoHandle.cs
- UserPersonalizationStateInfo.cs
- LinearKeyFrames.cs
- WeakHashtable.cs
- _SslSessionsCache.cs
- HitTestResult.cs
- InputMethod.cs
- ZoneIdentityPermission.cs
- DeviceContext2.cs
- ToolStripHighContrastRenderer.cs
- WebPartConnectionsEventArgs.cs
- XhtmlConformanceSection.cs
- RequestQueryParser.cs
- OracleInternalConnection.cs
- AnonymousIdentificationSection.cs
- DefaultMemberAttribute.cs
- ValidationPropertyAttribute.cs
- SmtpReplyReader.cs
- DataRowView.cs
- DataGridViewColumnCollection.cs
- ByteStream.cs
- XmlUtf8RawTextWriter.cs
- ReverseQueryOperator.cs
- MultiView.cs
- AuthorizationSection.cs
- Calendar.cs
- BitmapPalette.cs
- XmlBindingWorker.cs
- SingleObjectCollection.cs
- MaskDescriptor.cs
- BrowserDefinitionCollection.cs
- DrawingGroupDrawingContext.cs
- ModuleConfigurationInfo.cs
- CollaborationHelperFunctions.cs
- FormViewPageEventArgs.cs
- CollectionChangedEventManager.cs
- WebPartCloseVerb.cs
- RowTypeElement.cs
- CacheVirtualItemsEvent.cs
- Baml2006ReaderContext.cs
- ResourceReferenceKeyNotFoundException.cs
- StringConverter.cs
- XamlValidatingReader.cs
- RootBrowserWindowProxy.cs
- ImageClickEventArgs.cs
- TextPointerBase.cs