File: MS\Internal\AutomationProxies\EmptyElement.cs
Project: wpf\src\UIAutomation\Win32Providers\UIAutomationClientsideProviders.csproj (UIAutomationClientsideProviders)
//---------------------------------------------------------------------------
//
// <copyright file="EmptyElement.cs" company="Microsoft">
//    Copyright (C) Microsoft Corporation.  All rights reserved.
// </copyright>
//
//
// Description: Implementation of an empty proxy provider
//
// History:
//        alexsn - Created (in DotNet)
//
//---------------------------------------------------------------------------
 
using System;
using System.Windows.Automation;
using System.Windows.Automation.Provider;
using MS.Win32;
 
namespace MS.Internal.AutomationProxies
{
    // Empty proxy provider
    class EmptyElement : IRawElementProviderSimple
    {
        //------------------------------------------------------
        //
        //  Constructors
        //
        //------------------------------------------------------
 
        #region Constructors
        protected EmptyElement()        
        {
        }
        #endregion Constructors
 
        //------------------------------------------------------
        //
        //  IRawElementProviderSimple
        //
        //------------------------------------------------------
 
        #region Interface IRawElementProviderSimple
        ProviderOptions IRawElementProviderSimple.ProviderOptions
        {
            get
            {
                return ProviderOptions.ClientSideProvider;
            }
        }
 
        object IRawElementProviderSimple.GetPatternProvider(int patternId)
        {
            return null;
        }
 
        object IRawElementProviderSimple.GetPropertyValue(int propertyId)
        {
            return null;
        }
 
        IRawElementProviderSimple IRawElementProviderSimple.HostRawElementProvider
        {
            get
            {
                return null;
            }
        }
 
        #endregion Interface IRawElementProviderSimple
 
    }
 
    
    // Empty GridItem cell implementation
    sealed class EmptyGridItem : EmptyElement,
        IRawElementProviderSimple,
        IGridItemProvider
    {
        #region Data
        readonly int _row;
        readonly int _column;
        readonly int _rowSpan;
        readonly int _columnSpan;
        IRawElementProviderSimple _containingGrid;
        #endregion Data
 
        #region Constructor
 
        internal EmptyGridItem(int row, int column, IRawElementProviderSimple containingGrid)
        {
            _row = row;
            _column = column;
            _rowSpan = 1;
            _columnSpan = 1;
            _containingGrid = containingGrid;
        }
 
        #endregion Constructor
 
        #region IRawElementProviderSimple
        
        object IRawElementProviderSimple.GetPatternProvider(int patternId)
        {
            if (patternId == GridItemPattern.Pattern.Id)
            {
                return this;
            }
            return null;
        }
       
        #endregion IRawElementProviderSimple
 
        #region IGridItemProvider
 
        int IGridItemProvider.Column
        {
            get
            {
                return _column;
            }
        }
        int IGridItemProvider.ColumnSpan
        {
            get
            {
                return _columnSpan;
            }
        }
        IRawElementProviderSimple IGridItemProvider.ContainingGrid
        {
            get
            {
                return _containingGrid;
            }
        }
        int IGridItemProvider.Row
        {
            get
            {
                return _row;
            }
        }
        int IGridItemProvider.RowSpan
        {
            get
            {
                return _rowSpan;
            }
        }
 
        #endregion IGridItemProvider
    }
}