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
- ActivityDesignerAccessibleObject.cs
- UnicodeEncoding.cs
- GridViewSelectEventArgs.cs
- ButtonField.cs
- SqlTriggerContext.cs
- LiteralSubsegment.cs
- FilteredDataSetHelper.cs
- ActivityStateRecord.cs
- TokenBasedSet.cs
- SessionStateItemCollection.cs
- Soap12ProtocolReflector.cs
- ContentDisposition.cs
- Button.cs
- ColumnHeaderConverter.cs
- ReferenceService.cs
- JsonWriter.cs
- ListMarkerLine.cs
- DataRowView.cs
- GacUtil.cs
- LingerOption.cs
- CodeTypeReferenceExpression.cs
- SizeLimitedCache.cs
- ContentDisposition.cs
- ObjectContext.cs
- BounceEase.cs
- WindowAutomationPeer.cs
- Brush.cs
- DbXmlEnabledProviderManifest.cs
- SyndicationDeserializer.cs
- ReadWriteObjectLock.cs
- SortableBindingList.cs
- XmlQueryRuntime.cs
- ChannelTraceRecord.cs
- WebPartCancelEventArgs.cs
- AssemblyBuilder.cs
- FunctionImportMapping.cs
- XmlDataSourceView.cs
- SrgsDocument.cs
- WindowsSpinner.cs
- XamlStackWriter.cs
- OleStrCAMarshaler.cs
- OperationCanceledException.cs
- HtmlAnchor.cs
- PatternMatcher.cs
- ProfilePropertySettings.cs
- Point.cs
- DataGridColumnFloatingHeader.cs
- DisplayInformation.cs
- BulletedListEventArgs.cs
- FixedSOMTableCell.cs
- Int64.cs
- MouseEventArgs.cs
- XPathScanner.cs
- AdornerHitTestResult.cs
- TextTreeRootNode.cs
- DurableEnlistmentState.cs
- XsdBuilder.cs
- FontFamilyValueSerializer.cs
- XmlQuerySequence.cs
- GenericTextProperties.cs
- IntMinMaxAggregationOperator.cs
- DelegatingTypeDescriptionProvider.cs
- UpWmlPageAdapter.cs
- FileLevelControlBuilderAttribute.cs
- HttpContextServiceHost.cs
- ClonableStack.cs
- PatternMatchRules.cs
- BitmapEffectInputConnector.cs
- DashStyles.cs
- TypeDescriptorContext.cs
- RectangleGeometry.cs
- GestureRecognizer.cs
- DataTableMapping.cs
- TreeNodeBindingCollection.cs
- SystemUdpStatistics.cs
- ScrollItemProviderWrapper.cs
- EvidenceTypeDescriptor.cs
- BitmapEffectrendercontext.cs
- OpenTypeCommon.cs
- ApplicationServiceHelper.cs
- ServiceDescriptionSerializer.cs
- WeakEventManager.cs
- ExecutedRoutedEventArgs.cs
- XmlChildNodes.cs
- Executor.cs
- BackEase.cs
- RectAnimationUsingKeyFrames.cs
- BoundsDrawingContextWalker.cs
- ContentFileHelper.cs
- ProxyGenerationError.cs
- WebPartUtil.cs
- RuntimeHandles.cs
- ResourceDisplayNameAttribute.cs
- PrimitiveSchema.cs
- FunctionNode.cs
- SerializationInfo.cs
- WebBaseEventKeyComparer.cs
- COM2AboutBoxPropertyDescriptor.cs
- Msmq.cs
- ToolStripRendererSwitcher.cs