Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / TableAutomationPeer.cs / 1305600 / 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; } else { return base.GetPattern(patternInterface); } } ////// /// 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; } else { return base.GetPattern(patternInterface); } } ////// /// 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
- AnnotationAdorner.cs
- OleDbEnumerator.cs
- WS2007HttpBindingElement.cs
- ColorKeyFrameCollection.cs
- UnmanagedHandle.cs
- ParameterEditorUserControl.cs
- ParamArrayAttribute.cs
- SignatureConfirmationElement.cs
- BrowserTree.cs
- OdbcParameterCollection.cs
- InternalRelationshipCollection.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- DynamicDocumentPaginator.cs
- HttpStreamFormatter.cs
- AuthenticatingEventArgs.cs
- StartUpEventArgs.cs
- ParameterBuilder.cs
- SafeBitVector32.cs
- LayoutEvent.cs
- ValidationError.cs
- ObjectListSelectEventArgs.cs
- QuaternionAnimation.cs
- Selection.cs
- SystemColors.cs
- CustomDictionarySources.cs
- XmlAnyElementAttributes.cs
- NetSectionGroup.cs
- DataTableCollection.cs
- DataExpression.cs
- UnauthorizedAccessException.cs
- WebPartConnection.cs
- SettingsPropertyWrongTypeException.cs
- CacheMemory.cs
- SequentialOutput.cs
- TCPListener.cs
- MimeMapping.cs
- FloaterParaClient.cs
- ManagedIStream.cs
- ExpressionBinding.cs
- Transform3DGroup.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- LayoutExceptionEventArgs.cs
- FixedBufferAttribute.cs
- SchemaMerger.cs
- ThousandthOfEmRealPoints.cs
- ClientSettingsProvider.cs
- CommandConverter.cs
- _ConnectStream.cs
- mansign.cs
- ChameleonKey.cs
- MonitoringDescriptionAttribute.cs
- DbMetaDataColumnNames.cs
- PriorityItem.cs
- WbemException.cs
- SchemaTypeEmitter.cs
- LogPolicy.cs
- ResourcePool.cs
- SqlBooleanizer.cs
- EventMap.cs
- DataQuery.cs
- AnimatedTypeHelpers.cs
- HttpValueCollection.cs
- GridViewDeleteEventArgs.cs
- FontUnitConverter.cs
- HtmlInputReset.cs
- XamlPoint3DCollectionSerializer.cs
- mediaeventshelper.cs
- PreloadHost.cs
- StaticContext.cs
- NameObjectCollectionBase.cs
- TextTreeRootTextBlock.cs
- SourceChangedEventArgs.cs
- ElementMarkupObject.cs
- CatalogZoneAutoFormat.cs
- RC2CryptoServiceProvider.cs
- JpegBitmapEncoder.cs
- GrammarBuilderBase.cs
- CodeCastExpression.cs
- Vector3DConverter.cs
- SoapTransportImporter.cs
- SqlLiftWhereClauses.cs
- SelectionRangeConverter.cs
- NativeWindow.cs
- ControlPaint.cs
- ConstraintStruct.cs
- InkCanvasFeedbackAdorner.cs
- Base64Encoder.cs
- GridErrorDlg.cs
- SpeechUI.cs
- SqlDeflator.cs
- NTAccount.cs
- Line.cs
- UnsafeNativeMethods.cs
- IntellisenseTextBox.designer.cs
- MinimizableAttributeTypeConverter.cs
- StringExpressionSet.cs
- XComponentModel.cs
- AtomEntry.cs
- CompositeActivityTypeDescriptor.cs
- PersistencePipeline.cs