Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Documents / DocumentSequenceHighlightLayer.cs / 1 / DocumentSequenceHighlightLayer.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: DocumentSequence's HighlightLayer for TextSelection. // // History: // 07/027/2004 : ZhenbinX - Created // //--------------------------------------------------------------------------- namespace System.Windows.Documents { using MS.Internal.Documents; using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; // A special HighlightLayer that exists only to notify a FixedDocument // of changes to its highlights when the highlights are stored on a // DocumentSequenceTextContainer. // This layer is set on a FixedDocumentTextContainer that's part of a // DocumentSequence. When the DocumentSequence's highlight layer changes // it determines which sub-documents need to be notified and uses the // instance of this class for each of those documents to notify it. // The FixedDoc then uses the DocumentSequence's Highlights directly to // get the highlight information. // Note: Some of the methods below are used in constructing the event args // but others are not. This class is not intended to be used directly as an // actual highlight layer. internal class DocumentSequenceHighlightLayer : HighlightLayer { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal DocumentSequenceHighlightLayer(DocumentSequenceTextContainer docSeqContainer) { _docSeqContainer = docSeqContainer; } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Method is not implemented. Should not need to be called for constructing the event args. internal override object GetHighlightValue(StaticTextPointer staticTextPointer, LogicalDirection direction) { Debug.Assert(false, "This method is not implemented and not expected to be called."); return null; } // Returns whether or not this text pointer has a highlight on it. Determines this by checking // the highlights of the DocumentSequence. internal override bool IsContentHighlighted(StaticTextPointer staticTextPointer, LogicalDirection direction) { return this._docSeqContainer.Highlights.IsContentHighlighted(staticTextPointer, direction); } // Returns the next change position starting from the passed in StaticTextPointer. Determines this by checking // the highlights of the DocumentSequence. internal override StaticTextPointer GetNextChangePosition(StaticTextPointer staticTextPointer, LogicalDirection direction) { return this._docSeqContainer.Highlights.GetNextHighlightChangePosition(staticTextPointer, direction); } // Called by the DocumentSequenceTextContainer to communicate changes to its highlight layer // to the FixedDocumentTextContainer which contains this layer. internal void RaiseHighlightChangedEvent(IList ranges) { DocumentsTrace.FixedDocumentSequence.Highlights.Trace(string.Format("DSHL.RaiseHighlightChangedEvent ranges={0}", ranges.Count)); Debug.Assert(ranges.Count > 0); if (this.Changed != null) { DocumentSequenceHighlightChangedEventArgs args; args = new DocumentSequenceHighlightChangedEventArgs(ranges); this.Changed(this, args); } } #endregion Internal Methods //------------------------------------------------------ // // Internal Properties // //------------------------------------------------------ #region Internal Properties ////// Type identifying this layer for Highlights.GetHighlightValue calls. /// internal override Type OwnerType { get { return typeof(TextSelection); } } #endregion Internal Properties //----------------------------------------------------- // // Internal Events // //------------------------------------------------------ #region Internal Events // Event raised when a highlight range is inserted, removed, moved, or // has a local property value change. internal override event HighlightChangedEventHandler Changed; #endregion Internal Events //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private readonly DocumentSequenceTextContainer _docSeqContainer; #endregion Private Fields //----------------------------------------------------- // // Private Classes // //------------------------------------------------------ #region Private Classes // Argument for the Changed event, encapsulates a highlight change. private class DocumentSequenceHighlightChangedEventArgs : HighlightChangedEventArgs { // Constructor. internal DocumentSequenceHighlightChangedEventArgs(IList ranges) { _ranges = ranges; } // Collection of changed content ranges. internal override IList Ranges { get { return _ranges; } } // Type identifying the owner of the changed layer. internal override Type OwnerType { get { return typeof(TextSelection); } } // Collection of changed content ranges. private readonly IList _ranges; } #endregion Private Classes } } // 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. // // // Description: DocumentSequence's HighlightLayer for TextSelection. // // History: // 07/027/2004 : ZhenbinX - Created // //--------------------------------------------------------------------------- namespace System.Windows.Documents { using MS.Internal.Documents; using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; // A special HighlightLayer that exists only to notify a FixedDocument // of changes to its highlights when the highlights are stored on a // DocumentSequenceTextContainer. // This layer is set on a FixedDocumentTextContainer that's part of a // DocumentSequence. When the DocumentSequence's highlight layer changes // it determines which sub-documents need to be notified and uses the // instance of this class for each of those documents to notify it. // The FixedDoc then uses the DocumentSequence's Highlights directly to // get the highlight information. // Note: Some of the methods below are used in constructing the event args // but others are not. This class is not intended to be used directly as an // actual highlight layer. internal class DocumentSequenceHighlightLayer : HighlightLayer { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal DocumentSequenceHighlightLayer(DocumentSequenceTextContainer docSeqContainer) { _docSeqContainer = docSeqContainer; } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Method is not implemented. Should not need to be called for constructing the event args. internal override object GetHighlightValue(StaticTextPointer staticTextPointer, LogicalDirection direction) { Debug.Assert(false, "This method is not implemented and not expected to be called."); return null; } // Returns whether or not this text pointer has a highlight on it. Determines this by checking // the highlights of the DocumentSequence. internal override bool IsContentHighlighted(StaticTextPointer staticTextPointer, LogicalDirection direction) { return this._docSeqContainer.Highlights.IsContentHighlighted(staticTextPointer, direction); } // Returns the next change position starting from the passed in StaticTextPointer. Determines this by checking // the highlights of the DocumentSequence. internal override StaticTextPointer GetNextChangePosition(StaticTextPointer staticTextPointer, LogicalDirection direction) { return this._docSeqContainer.Highlights.GetNextHighlightChangePosition(staticTextPointer, direction); } // Called by the DocumentSequenceTextContainer to communicate changes to its highlight layer // to the FixedDocumentTextContainer which contains this layer. internal void RaiseHighlightChangedEvent(IList ranges) { DocumentsTrace.FixedDocumentSequence.Highlights.Trace(string.Format("DSHL.RaiseHighlightChangedEvent ranges={0}", ranges.Count)); Debug.Assert(ranges.Count > 0); if (this.Changed != null) { DocumentSequenceHighlightChangedEventArgs args; args = new DocumentSequenceHighlightChangedEventArgs(ranges); this.Changed(this, args); } } #endregion Internal Methods //------------------------------------------------------ // // Internal Properties // //------------------------------------------------------ #region Internal Properties ////// Type identifying this layer for Highlights.GetHighlightValue calls. /// internal override Type OwnerType { get { return typeof(TextSelection); } } #endregion Internal Properties //----------------------------------------------------- // // Internal Events // //------------------------------------------------------ #region Internal Events // Event raised when a highlight range is inserted, removed, moved, or // has a local property value change. internal override event HighlightChangedEventHandler Changed; #endregion Internal Events //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private readonly DocumentSequenceTextContainer _docSeqContainer; #endregion Private Fields //----------------------------------------------------- // // Private Classes // //------------------------------------------------------ #region Private Classes // Argument for the Changed event, encapsulates a highlight change. private class DocumentSequenceHighlightChangedEventArgs : HighlightChangedEventArgs { // Constructor. internal DocumentSequenceHighlightChangedEventArgs(IList ranges) { _ranges = ranges; } // Collection of changed content ranges. internal override IList Ranges { get { return _ranges; } } // Type identifying the owner of the changed layer. internal override Type OwnerType { get { return typeof(TextSelection); } } // Collection of changed content ranges. private readonly IList _ranges; } #endregion Private Classes } } // 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
- CapabilitiesAssignment.cs
- MILUtilities.cs
- CodeMethodReturnStatement.cs
- CompoundFileReference.cs
- DataGridComboBoxColumn.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- TextTabProperties.cs
- NumericPagerField.cs
- InvokeHandlers.cs
- RequestDescription.cs
- ContextQuery.cs
- WindowsGraphicsWrapper.cs
- DesignRelationCollection.cs
- URL.cs
- QueueProcessor.cs
- UnauthorizedAccessException.cs
- ShortcutKeysEditor.cs
- SetterBaseCollection.cs
- NonClientArea.cs
- StaticResourceExtension.cs
- ProcessHostServerConfig.cs
- SqlProvider.cs
- EdmRelationshipRoleAttribute.cs
- RawKeyboardInputReport.cs
- DodSequenceMerge.cs
- MailMessage.cs
- ThreadExceptionEvent.cs
- KeyFrames.cs
- Serializer.cs
- CalendarButtonAutomationPeer.cs
- DocumentsTrace.cs
- Exception.cs
- StaticContext.cs
- dsa.cs
- InkCanvasFeedbackAdorner.cs
- Pointer.cs
- ImageIndexConverter.cs
- DataServiceException.cs
- DataGridCell.cs
- SharedStatics.cs
- ListControl.cs
- BufferedStream.cs
- ForEachAction.cs
- StreamAsIStream.cs
- ActivityTypeDesigner.xaml.cs
- WebPartConnectionCollection.cs
- dataSvcMapFileLoader.cs
- ConfigurationPermission.cs
- ConditionCollection.cs
- TransactionFilter.cs
- OutputCacheSettingsSection.cs
- QilFactory.cs
- SerialReceived.cs
- ObjectCacheHost.cs
- BrowserInteropHelper.cs
- SecurityKeyUsage.cs
- DbSourceParameterCollection.cs
- TypeUtil.cs
- ActivityInstance.cs
- UInt64Converter.cs
- PackageRelationshipCollection.cs
- ApplicationFileCodeDomTreeGenerator.cs
- StylusPointDescription.cs
- peernodeimplementation.cs
- DataGridCommandEventArgs.cs
- SmtpReplyReaderFactory.cs
- TextFormatterImp.cs
- CompositeFontInfo.cs
- DataServiceQueryOfT.cs
- DataGridViewEditingControlShowingEventArgs.cs
- ResourceManager.cs
- DateTimeFormat.cs
- XmlDataSourceNodeDescriptor.cs
- WmlPanelAdapter.cs
- OrCondition.cs
- Visitor.cs
- PauseStoryboard.cs
- HtmlElement.cs
- SchemaImporterExtensionElement.cs
- DefaultParameterValueAttribute.cs
- MemberProjectionIndex.cs
- SeekableReadStream.cs
- AutomationEvent.cs
- QuestionEventArgs.cs
- Rectangle.cs
- SiteMapDataSource.cs
- LeafCellTreeNode.cs
- BitmapEffectInputData.cs
- SQLMoneyStorage.cs
- OracleLob.cs
- XmlSchemaElement.cs
- CardSpacePolicyElement.cs
- Dispatcher.cs
- Splitter.cs
- Currency.cs
- DataKey.cs
- ConfigurationManager.cs
- DataGridViewImageColumn.cs
- HeaderPanel.cs
- ControlAdapter.cs