SelectorItemAutomationPeer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / SelectorItemAutomationPeer.cs / 1305600 / SelectorItemAutomationPeer.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 abstract class SelectorItemAutomationPeer : ItemAutomationPeer, ISelectionItemProvider
    {
        /// 
        protected SelectorItemAutomationPeer(object owner, SelectorAutomationPeer selectorAutomationPeer)
            : base(owner, selectorAutomationPeer) 
        { 
        }
 
        ///
        override public object GetPattern(PatternInterface patternInterface)
        {
            if(patternInterface == PatternInterface.SelectionItem) 
            {
                return this; 
            } 
            return base.GetPattern(patternInterface);
        } 

        /// 
        /// Sets the current element as the selection
        /// This clears the selection from other elements in the container 
        /// 
        void ISelectionItemProvider.Select() 
        { 
            if(!IsEnabled())
                throw new ElementNotEnabledException(); 

            Selector parentSelector = (Selector)(ItemsControlAutomationPeer.Owner);
            if (parentSelector == null)
            { 
                throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed));
            } 
 
            parentSelector.SelectionChange.SelectJustThisItem(Item, true /* assumeInItemsCollection */);
        } 


        /// 
        /// Adds current element to selection 
        /// 
        void ISelectionItemProvider.AddToSelection() 
        { 
            if(!IsEnabled())
                throw new ElementNotEnabledException(); 

            Selector parentSelector = (Selector)(ItemsControlAutomationPeer.Owner);
            if ((parentSelector == null) || (!parentSelector.CanSelectMultiple && parentSelector.SelectedItem != null && parentSelector.SelectedItem != Item))
            { 
                // Parent must exist and be multi-select
                // in single-select mode the selected item should be null or Owner 
                throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); 
            }
 
            parentSelector.SelectionChange.Begin();
            parentSelector.SelectionChange.Select(Item, true);
            parentSelector.SelectionChange.End();
        } 

 
        ///  
        /// Removes current element from selection
        ///  
        void ISelectionItemProvider.RemoveFromSelection()
        {
            if(!IsEnabled())
                throw new ElementNotEnabledException(); 

            Selector parentSelector = (Selector)(ItemsControlAutomationPeer.Owner); 
 
            parentSelector.SelectionChange.Begin();
            parentSelector.SelectionChange.Unselect(Item); 
            parentSelector.SelectionChange.End();
        }

 
        /// 
        /// Check whether an element is selected 
        ///  
        /// returns true if the element is selected
        bool ISelectionItemProvider.IsSelected 
        {
            get
            {
                Selector parentSelector = (Selector)(ItemsControlAutomationPeer.Owner); 
                return parentSelector._selectedItems.Contains(Item);
            } 
        } 

 
        /// 
        /// The logical element that supports the SelectionPattern for this Item
        /// 
        /// returns an IRawElementProviderSimple 
        IRawElementProviderSimple ISelectionItemProvider.SelectionContainer
        { 
            get 
            {
                return ProviderFromPeer(ItemsControlAutomationPeer); 
            }
        }

        // 
        [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
        internal void RaiseAutomationIsSelectedChanged(bool isSelected) 
        { 
            RaisePropertyChangedEvent(
                SelectionItemPatternIdentifiers.IsSelectedProperty, 
                !isSelected,
                isSelected);
        }
 
    }
} 
 

 

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