Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Automation / Peers / TableAutomationPeer.cs / 1 / TableAutomationPeer.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: TableAutomationPeer.cs
//
// Description: Automation peer for Table
//
//---------------------------------------------------------------------------
using System.Windows.Automation.Provider; // IRawElementProviderSimple
using System.Windows.Documents;
namespace System.Windows.Automation.Peers
{
///
public class TableAutomationPeer : TextElementAutomationPeer, IGridProvider
{
///
/// Constructor.
///
/// Owner of the AutomationPeer.
public TableAutomationPeer(Table owner)
: base(owner)
{
_rowCount = GetRowCount();
_columnCount = GetColumnCount();
}
///
///
///
public override object GetPattern(PatternInterface patternInterface)
{
if (patternInterface == PatternInterface.Grid)
{
return this;
}
return null;
}
///
///
///
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Table;
}
///
///
///
protected override string GetClassNameCore()
{
return "Table";
}
///
///
///
protected override bool IsControlElementCore()
{
return true;
}
///
///
///
protected override bool IsContentElementCore()
{
return true;
}
///
/// Raises property changed events in response to structure changes.
///
internal void OnStructureInvalidated()
{
int rowCount = GetRowCount();
if (rowCount != _rowCount)
{
RaisePropertyChangedEvent(GridPatternIdentifiers.RowCountProperty, _rowCount, rowCount);
_rowCount = rowCount;
}
int columnCount = GetColumnCount();
if (columnCount != _columnCount)
{
RaisePropertyChangedEvent(GridPatternIdentifiers.ColumnCountProperty, _columnCount, columnCount);
_columnCount = columnCount;
}
}
///
/// Returns the number of rows.
///
private int GetRowCount()
{
int rows = 0;
foreach (TableRowGroup group in ((Table)Owner).RowGroups)
{
rows += group.Rows.Count;
}
return rows;
}
///
/// Returns the number of columns.
///
private int GetColumnCount()
{
return ((Table)Owner).ColumnCount;
}
private int _rowCount;
private int _columnCount;
//-------------------------------------------------------------------
//
// IGridProvider Members
//
//-------------------------------------------------------------------
#region IGridProvider Members
///
/// Returns the provider for the element that is located at the row and
/// column location requested by the client.
///
IRawElementProviderSimple IGridProvider.GetItem(int row, int column)
{
if (row < 0 || row >= ((IGridProvider)this).RowCount)
{
throw new ArgumentOutOfRangeException("row");
}
if (column < 0 || column >= ((IGridProvider)this).ColumnCount)
{
throw new ArgumentOutOfRangeException("column");
}
int currentRow = 0;
Table table = (Table)Owner;
foreach (TableRowGroup group in table.RowGroups)
{
if (currentRow + group.Rows.Count < row)
{
currentRow += group.Rows.Count;
}
else
{
foreach (TableRow tableRow in group.Rows)
{
if (currentRow == row)
{
foreach (TableCell cell in tableRow.Cells)
{
if (cell.ColumnIndex <= column && cell.ColumnIndex + cell.ColumnSpan > column)
{
return ProviderFromPeer(CreatePeerForElement(cell));
}
}
// check spanned cells
foreach (TableCell cell in tableRow.SpannedCells)
{
if (cell.ColumnIndex <= column && cell.ColumnIndex + cell.ColumnSpan > column)
{
return ProviderFromPeer(CreatePeerForElement(cell));
}
}
}
else
{
currentRow++;
}
}
}
}
return null;
}
///
/// Returns the number of rows in the grid at the time this was requested.
///
int IGridProvider.RowCount
{
get { return _rowCount; }
}
///
/// Returns the number of columns in the grid at the time this was requested.
///
int IGridProvider.ColumnCount
{
get { return _columnCount; }
}
#endregion IGridProvider Members
}
}
// 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.
//
// File: TableAutomationPeer.cs
//
// Description: Automation peer for Table
//
//---------------------------------------------------------------------------
using System.Windows.Automation.Provider; // IRawElementProviderSimple
using System.Windows.Documents;
namespace System.Windows.Automation.Peers
{
///
public class TableAutomationPeer : TextElementAutomationPeer, IGridProvider
{
///
/// Constructor.
///
/// Owner of the AutomationPeer.
public TableAutomationPeer(Table owner)
: base(owner)
{
_rowCount = GetRowCount();
_columnCount = GetColumnCount();
}
///
///
///
public override object GetPattern(PatternInterface patternInterface)
{
if (patternInterface == PatternInterface.Grid)
{
return this;
}
return null;
}
///
///
///
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Table;
}
///
///
///
protected override string GetClassNameCore()
{
return "Table";
}
///
///
///
protected override bool IsControlElementCore()
{
return true;
}
///
///
///
protected override bool IsContentElementCore()
{
return true;
}
///
/// Raises property changed events in response to structure changes.
///
internal void OnStructureInvalidated()
{
int rowCount = GetRowCount();
if (rowCount != _rowCount)
{
RaisePropertyChangedEvent(GridPatternIdentifiers.RowCountProperty, _rowCount, rowCount);
_rowCount = rowCount;
}
int columnCount = GetColumnCount();
if (columnCount != _columnCount)
{
RaisePropertyChangedEvent(GridPatternIdentifiers.ColumnCountProperty, _columnCount, columnCount);
_columnCount = columnCount;
}
}
///
/// Returns the number of rows.
///
private int GetRowCount()
{
int rows = 0;
foreach (TableRowGroup group in ((Table)Owner).RowGroups)
{
rows += group.Rows.Count;
}
return rows;
}
///
/// Returns the number of columns.
///
private int GetColumnCount()
{
return ((Table)Owner).ColumnCount;
}
private int _rowCount;
private int _columnCount;
//-------------------------------------------------------------------
//
// IGridProvider Members
//
//-------------------------------------------------------------------
#region IGridProvider Members
///
/// Returns the provider for the element that is located at the row and
/// column location requested by the client.
///
IRawElementProviderSimple IGridProvider.GetItem(int row, int column)
{
if (row < 0 || row >= ((IGridProvider)this).RowCount)
{
throw new ArgumentOutOfRangeException("row");
}
if (column < 0 || column >= ((IGridProvider)this).ColumnCount)
{
throw new ArgumentOutOfRangeException("column");
}
int currentRow = 0;
Table table = (Table)Owner;
foreach (TableRowGroup group in table.RowGroups)
{
if (currentRow + group.Rows.Count < row)
{
currentRow += group.Rows.Count;
}
else
{
foreach (TableRow tableRow in group.Rows)
{
if (currentRow == row)
{
foreach (TableCell cell in tableRow.Cells)
{
if (cell.ColumnIndex <= column && cell.ColumnIndex + cell.ColumnSpan > column)
{
return ProviderFromPeer(CreatePeerForElement(cell));
}
}
// check spanned cells
foreach (TableCell cell in tableRow.SpannedCells)
{
if (cell.ColumnIndex <= column && cell.ColumnIndex + cell.ColumnSpan > column)
{
return ProviderFromPeer(CreatePeerForElement(cell));
}
}
}
else
{
currentRow++;
}
}
}
}
return null;
}
///
/// Returns the number of rows in the grid at the time this was requested.
///
int IGridProvider.RowCount
{
get { return _rowCount; }
}
///
/// Returns the number of columns in the grid at the time this was requested.
///
int IGridProvider.ColumnCount
{
get { return _columnCount; }
}
#endregion IGridProvider Members
}
}
// 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
- AssemblyBuilderData.cs
- ScheduleChanges.cs
- EdmConstants.cs
- SystemSounds.cs
- InternalConfigHost.cs
- FileFormatException.cs
- ModuleBuilderData.cs
- ContainerFilterService.cs
- DataGridViewDataErrorEventArgs.cs
- BitVec.cs
- UxThemeWrapper.cs
- OutArgumentConverter.cs
- SetterTriggerConditionValueConverter.cs
- RootBuilder.cs
- Focus.cs
- DocumentSchemaValidator.cs
- SelectionRange.cs
- ExitEventArgs.cs
- PolicyManager.cs
- ProfileGroupSettings.cs
- unsafenativemethodsother.cs
- JsonServiceDocumentSerializer.cs
- PcmConverter.cs
- ProtocolInformationReader.cs
- ConnectionManagementElement.cs
- ImageListDesigner.cs
- ContentDefinition.cs
- BinaryMethodMessage.cs
- DbConnectionPoolGroupProviderInfo.cs
- DBCSCodePageEncoding.cs
- typedescriptorpermissionattribute.cs
- FormViewPagerRow.cs
- CollectionType.cs
- BamlMapTable.cs
- Peer.cs
- MeasureItemEvent.cs
- TriState.cs
- IPipelineRuntime.cs
- WpfKnownType.cs
- BitmapEffectGroup.cs
- Line.cs
- FormViewPagerRow.cs
- DataGridCheckBoxColumn.cs
- Block.cs
- DbDataRecord.cs
- EllipticalNodeOperations.cs
- CmsUtils.cs
- NamedPipeWorkerProcess.cs
- Rect.cs
- CodeComment.cs
- HebrewNumber.cs
- SetIterators.cs
- CAGDesigner.cs
- Stack.cs
- IxmlLineInfo.cs
- sqlcontext.cs
- MimePart.cs
- SafeSerializationManager.cs
- ButtonPopupAdapter.cs
- SqlAliasesReferenced.cs
- DataSourceCache.cs
- GridViewRowEventArgs.cs
- XmlSchemas.cs
- embossbitmapeffect.cs
- WebPartDescriptionCollection.cs
- SmiMetaDataProperty.cs
- DoubleConverter.cs
- ExtendedPropertyDescriptor.cs
- BitmapSizeOptions.cs
- HostedBindingBehavior.cs
- EventMappingSettings.cs
- SqlBuilder.cs
- HtmlForm.cs
- EditorZoneBase.cs
- IMembershipProvider.cs
- LeaseManager.cs
- ParagraphResult.cs
- XPathScanner.cs
- SapiGrammar.cs
- EmptyCollection.cs
- InternalDispatchObject.cs
- WebPartConnectionsConfigureVerb.cs
- Maps.cs
- IsolatedStoragePermission.cs
- ReadOnlyDictionary.cs
- XmlSchemaImport.cs
- Form.cs
- updatecommandorderer.cs
- SqlParameterizer.cs
- EastAsianLunisolarCalendar.cs
- ChildDocumentBlock.cs
- MediaEntryAttribute.cs
- KeyGestureValueSerializer.cs
- DbParameterHelper.cs
- KerberosTicketHashIdentifierClause.cs
- PageStatePersister.cs
- XmlQueryStaticData.cs
- TraversalRequest.cs
- ProfileProvider.cs
- ClientBuildManagerCallback.cs