TabItemAutomationPeer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Automation / Peers / TabItemAutomationPeer.cs / 1 / TabItemAutomationPeer.cs

                            using System; 
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Text; 
using System.Windows;
using System.Windows.Automation.Provider; 
using System.Windows.Controls; 
using System.Windows.Controls.Primitives;
using System.Windows.Interop; 
using System.Windows.Media;

using MS.Internal;
using MS.Win32; 

namespace System.Windows.Automation.Peers 
{ 

    /// 
    public class TabItemAutomationPeer : SelectorItemAutomationPeer, ISelectionItemProvider
    {
        ///
        public TabItemAutomationPeer(object owner, TabControlAutomationPeer tabControlAutomationPeer) 
            : base(owner, tabControlAutomationPeer)
        {} 
 
        ///
        override protected string GetClassNameCore() 
        {
            return "TabItem";
        }
 
        ///
        override protected AutomationControlType GetAutomationControlTypeCore() 
        { 
            return AutomationControlType.TabItem;
        } 

        // Return the base without the AccessKey character
        ///
        override protected string GetNameCore() 
        {
            string result = base.GetNameCore(); 
            if (!string.IsNullOrEmpty(result)) 
            {
                TabItem tabItem = GetWrapper() as TabItem; 
                if (tabItem.Header is string)
                {
                    return AccessText.RemoveAccessKeyMarker(result);
                } 
            }
 
            return result; 
        }
 
        // Selected TabItem content is located under the TabControl style visual tree
        ///
        protected override List GetChildrenCore()
        { 
            // Call the base in case we have children in the header
            List headerChildren = base.GetChildrenCore(); 
 
            // Only if the TabItem is selected we need to add its visual children
            TabItem tabItem = GetWrapper() as TabItem; 
            if (tabItem != null && tabItem.IsSelected)
            {
                TabControl parentTabControl = ItemsControlAutomationPeer.Owner as TabControl;
                if (parentTabControl != null) 
                {
                    ContentPresenter contentHost = parentTabControl.SelectedContentPresenter; 
                    if (contentHost != null) 
                    {
                        AutomationPeer contentHostPeer = new FrameworkElementAutomationPeer(contentHost); 
                        List contentChildren = contentHostPeer.GetChildren();
                        if (contentChildren != null)
                        {
                            if (headerChildren == null) 
                                headerChildren = contentChildren;
                            else 
                                headerChildren.AddRange(contentChildren); 
                        }
                    } 
                }
            }

            return headerChildren; 
        }
 
        void ISelectionItemProvider.RemoveFromSelection() 
        {
            if (!IsEnabled()) 
                throw new ElementNotEnabledException();

            TabItem tabItem = GetWrapper() as TabItem;
            if (tabItem.IsSelected) 
            {
                throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); 
            } 
        }
 
    }
}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System; 
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Text; 
using System.Windows;
using System.Windows.Automation.Provider; 
using System.Windows.Controls; 
using System.Windows.Controls.Primitives;
using System.Windows.Interop; 
using System.Windows.Media;

using MS.Internal;
using MS.Win32; 

namespace System.Windows.Automation.Peers 
{ 

    /// 
    public class TabItemAutomationPeer : SelectorItemAutomationPeer, ISelectionItemProvider
    {
        ///
        public TabItemAutomationPeer(object owner, TabControlAutomationPeer tabControlAutomationPeer) 
            : base(owner, tabControlAutomationPeer)
        {} 
 
        ///
        override protected string GetClassNameCore() 
        {
            return "TabItem";
        }
 
        ///
        override protected AutomationControlType GetAutomationControlTypeCore() 
        { 
            return AutomationControlType.TabItem;
        } 

        // Return the base without the AccessKey character
        ///
        override protected string GetNameCore() 
        {
            string result = base.GetNameCore(); 
            if (!string.IsNullOrEmpty(result)) 
            {
                TabItem tabItem = GetWrapper() as TabItem; 
                if (tabItem.Header is string)
                {
                    return AccessText.RemoveAccessKeyMarker(result);
                } 
            }
 
            return result; 
        }
 
        // Selected TabItem content is located under the TabControl style visual tree
        ///
        protected override List GetChildrenCore()
        { 
            // Call the base in case we have children in the header
            List headerChildren = base.GetChildrenCore(); 
 
            // Only if the TabItem is selected we need to add its visual children
            TabItem tabItem = GetWrapper() as TabItem; 
            if (tabItem != null && tabItem.IsSelected)
            {
                TabControl parentTabControl = ItemsControlAutomationPeer.Owner as TabControl;
                if (parentTabControl != null) 
                {
                    ContentPresenter contentHost = parentTabControl.SelectedContentPresenter; 
                    if (contentHost != null) 
                    {
                        AutomationPeer contentHostPeer = new FrameworkElementAutomationPeer(contentHost); 
                        List contentChildren = contentHostPeer.GetChildren();
                        if (contentChildren != null)
                        {
                            if (headerChildren == null) 
                                headerChildren = contentChildren;
                            else 
                                headerChildren.AddRange(contentChildren); 
                        }
                    } 
                }
            }

            return headerChildren; 
        }
 
        void ISelectionItemProvider.RemoveFromSelection() 
        {
            if (!IsEnabled()) 
                throw new ElementNotEnabledException();

            TabItem tabItem = GetWrapper() as TabItem;
            if (tabItem.IsSelected) 
            {
                throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); 
            } 
        }
 
    }
}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK