TreeViewAutomationPeer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Automation / Peers / TreeViewAutomationPeer.cs / 1 / TreeViewAutomationPeer.cs

                            using System; 
using System.Collections;
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 TreeViewAutomationPeer : FrameworkElementAutomationPeer, ISelectionProvider
    {
        /// 
        public TreeViewAutomationPeer(TreeView owner): base(owner)
        {} 
 
        ///
        override protected AutomationControlType GetAutomationControlTypeCore() 
        {
            return AutomationControlType.Tree;
        }
 
        ///
        override protected string GetClassNameCore() 
        { 
            return "TreeView";
        } 

        ///
        override public object GetPattern(PatternInterface patternInterface)
        { 
            if (patternInterface == PatternInterface.Selection)
            { 
                return this; 
            }
            else if(patternInterface == PatternInterface.Scroll) 
            {
                ItemsControl owner = (ItemsControl)Owner;
                if(owner.ScrollHost != null)
                { 
                    AutomationPeer scrollPeer = UIElementAutomationPeer.CreatePeerForElement(owner.ScrollHost);
                    if(scrollPeer != null && scrollPeer is IScrollProvider) 
                    { 
                        scrollPeer.EventsSource = this;
                        return (IScrollProvider)scrollPeer; 
                    }
                }
            }
 
            return null;
        } 
 
        ///
        protected override List GetChildrenCore() 
        {
            ItemsControl owner = (ItemsControl)Owner;
            ItemCollection items = owner.Items;
 
            if (items.Count > 0)
            { 
                List children = new List(items.Count); 
                for (int i = 0; i < items.Count; i++)
                { 
                    TreeViewItem treeViewItem = owner.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
                    if (treeViewItem != null)
                    {
                        AutomationPeer peer = UIElementAutomationPeer.FromElement(treeViewItem); 
                        if (peer == null)
                            peer = UIElementAutomationPeer.CreatePeerForElement(treeViewItem); 
                        children.Add(peer); 
                    }
                } 
                return children;
            }

            return null; 
        }
 
        //-------------------------------------------------------------------- 
        //
        //  ISelectionProvider 
        //
        //-------------------------------------------------------------------

        #region ISelectionProvider 

        ///  
        ///     Returns the current selection. 
        /// 
        /// The current selection. 
        IRawElementProviderSimple[] ISelectionProvider.GetSelection()
        {
            IRawElementProviderSimple[] selection = null;
            TreeViewItem selectedContainer = ((TreeView)Owner).SelectedContainer; 
            if (selectedContainer != null)
            { 
                AutomationPeer peer = UIElementAutomationPeer.FromElement(selectedContainer); 
                if (peer != null)
                { 
                    selection = new IRawElementProviderSimple[] { ProviderFromPeer(peer) };
                }
            }
 
            if (selection == null)
            { 
                selection = new IRawElementProviderSimple[0]; 
            }
 
            return selection;
        }

        bool ISelectionProvider.CanSelectMultiple 
        {
            get 
            { 
                return false;
            } 
        }

        bool ISelectionProvider.IsSelectionRequired
        { 
            get
            { 
                return false; 
            }
        } 

        #endregion
    }
} 

 
 

// 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