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
- XNameConverter.cs
- RuntimeResourceSet.cs
- ReferencedType.cs
- SmtpNtlmAuthenticationModule.cs
- RectangleConverter.cs
- FeatureManager.cs
- WebException.cs
- RtfControls.cs
- CommandID.cs
- SimpleNameService.cs
- ApplyHostConfigurationBehavior.cs
- PowerStatus.cs
- DataGridItem.cs
- MarshalByValueComponent.cs
- VirtualDirectoryMappingCollection.cs
- FileSecurity.cs
- ElapsedEventArgs.cs
- CurrencyManager.cs
- PropertyPathConverter.cs
- CodeDOMProvider.cs
- PathData.cs
- ScriptingJsonSerializationSection.cs
- SqlDataSource.cs
- CngUIPolicy.cs
- SafeNativeMethods.cs
- OTFRasterizer.cs
- SQLDoubleStorage.cs
- OdbcParameterCollection.cs
- NamespaceList.cs
- WebPartConnectVerb.cs
- RawStylusInputReport.cs
- UnsafeNativeMethods.cs
- ZipArchive.cs
- BamlMapTable.cs
- XmlSiteMapProvider.cs
- CompoundFileReference.cs
- AppDomainEvidenceFactory.cs
- RecordsAffectedEventArgs.cs
- MatchAttribute.cs
- HttpListenerResponse.cs
- BidPrivateBase.cs
- SqlProcedureAttribute.cs
- LogEntrySerializationException.cs
- RectangleHotSpot.cs
- SqlUnionizer.cs
- SiteMapDataSourceView.cs
- mactripleDES.cs
- DictionaryKeyPropertyAttribute.cs
- TextBox.cs
- RunInstallerAttribute.cs
- SignatureGenerator.cs
- WebPartTransformerAttribute.cs
- LongCountAggregationOperator.cs
- DCSafeHandle.cs
- MonthCalendar.cs
- VersionValidator.cs
- WinCategoryAttribute.cs
- MdImport.cs
- TextSelectionHelper.cs
- XmlDocumentSchema.cs
- DiagnosticsConfiguration.cs
- MailHeaderInfo.cs
- ExpressionBindingCollection.cs
- SByteConverter.cs
- EdmConstants.cs
- CodeLinePragma.cs
- OutputScopeManager.cs
- SqlInternalConnectionSmi.cs
- SqlConnectionPoolProviderInfo.cs
- ConditionCollection.cs
- AliasGenerator.cs
- PersonalizationDictionary.cs
- _Rfc2616CacheValidators.cs
- RegexNode.cs
- DataGridViewDataErrorEventArgs.cs
- ContainerUIElement3D.cs
- XmlSchemaInfo.cs
- SmtpNetworkElement.cs
- SerializationFieldInfo.cs
- RayMeshGeometry3DHitTestResult.cs
- WebEvents.cs
- ToolStripItemImageRenderEventArgs.cs
- LinqDataSourceContextData.cs
- TextSegment.cs
- TextParagraph.cs
- MetadataAssemblyHelper.cs
- OrderedDictionaryStateHelper.cs
- HwndSource.cs
- CodeAccessPermission.cs
- TextModifierScope.cs
- TypographyProperties.cs
- ConnectionConsumerAttribute.cs
- GenericAuthenticationEventArgs.cs
- MetadataCacheItem.cs
- VirtualPathExtension.cs
- TemplateNameScope.cs
- Profiler.cs
- SQLBoolean.cs
- MetadataArtifactLoaderComposite.cs
- MessagePropertyVariants.cs