Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / documents / Application / DocumentApplicationJournalEntry.cs / 1305600 / DocumentApplicationJournalEntry.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Attached to custom journal entries created for changes in the DocumentApplication's // UI state. // // History: // 06/24/2005 - JeremyNS created // //--------------------------------------------------------------------------- using System; using System.Runtime.Serialization; using System.Security; using System.Security.Permissions; using System.Diagnostics; using System.Windows; using System.Windows.Documents; using System.Windows.Navigation; using System.Windows.Controls; namespace MS.Internal.Documents.Application { ////// DocumentApplicationJournalEntry is not a real journal entry, just the CustomContentState /// attached to one. It wraps a DocumentApplicationState object, which is the actual view state. /// The split is needed because PresentationUI cannot access internal Framework classes and methods. /// [Serializable] internal sealed class DocumentApplicationJournalEntry : System.Windows.Navigation.CustomContentState { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- ////// Constructs a DocumentApplicationJournalEntry /// /// State of the DocumentApplication to journal /// Name of the journal entry to display in the UI. /// If this is null it will default to the URI source. public DocumentApplicationJournalEntry(object state, string name) { Invariant.Assert(state is DocumentApplicationState, "state should be of type DocumentApplicationState"); // Store parameters locally. _state = state; _displayName = name; } public DocumentApplicationJournalEntry(object state): this(state, null) { } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- ////// Used to reset the UI to state of this entry /// /// NavigationService currently running /// Navigation direction ////// Critical: set_StoredDocumentApplicationState is defined in a non-APTCA assembly. /// TreatAsSafe: call to set_StoredDocumentApplicationState does not entail any risk. /// [SecurityCritical, SecurityTreatAsSafe] public override void Replay(NavigationService navigationService, NavigationMode mode) { ContentControl navigator = (ContentControl)navigationService.INavigatorHost; // Find a reference to the DocumentViewer hosted in the NavigationWindow // On initial history navigation in the browser, the window's layout may not have been // done yet. ApplyTemplate() causes the viewer to be created. navigator.ApplyTemplate(); DocumentApplicationDocumentViewer docViewer = navigator.Template.FindName( "PUIDocumentApplicationDocumentViewer", navigator) as DocumentApplicationDocumentViewer; Debug.Assert(docViewer != null, "PUIDocumentApplicationDocumentViewer not found."); if (docViewer != null) { // Set the new state on the DocumentViewer if (_state is DocumentApplicationState) { docViewer.StoredDocumentApplicationState = (DocumentApplicationState)_state; } // Check that a Document exists. if (navigationService.Content != null) { IDocumentPaginatorSource document = navigationService.Content as IDocumentPaginatorSource; // If the document has already been paginated (could happen in the // case of a fragment navigation), then set the DocumentViewer to the // new state that was set. if ((document != null) && (document.DocumentPaginator.IsPageCountValid)) { docViewer.SetUIToStoredState(); } } } } public override string JournalEntryName { get { return _displayName; } } //------------------------------------------------------ // // Private Fields. // //------------------------------------------------------ // The DocumentApplicationState has been weakly-typed to avoid PresentationFramework // having a type dependency on PresentationUI. The perf impact of the weak // typed variables in this case was determined to be much less than forcing the load // of a new assembly when Assembly.GetTypes was called on PresentationFramework. private object _state; // DocumentApplicationState private string _displayName; } } // 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: Attached to custom journal entries created for changes in the DocumentApplication's // UI state. // // History: // 06/24/2005 - JeremyNS created // //--------------------------------------------------------------------------- using System; using System.Runtime.Serialization; using System.Security; using System.Security.Permissions; using System.Diagnostics; using System.Windows; using System.Windows.Documents; using System.Windows.Navigation; using System.Windows.Controls; namespace MS.Internal.Documents.Application { ////// DocumentApplicationJournalEntry is not a real journal entry, just the CustomContentState /// attached to one. It wraps a DocumentApplicationState object, which is the actual view state. /// The split is needed because PresentationUI cannot access internal Framework classes and methods. /// [Serializable] internal sealed class DocumentApplicationJournalEntry : System.Windows.Navigation.CustomContentState { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- ////// Constructs a DocumentApplicationJournalEntry /// /// State of the DocumentApplication to journal /// Name of the journal entry to display in the UI. /// If this is null it will default to the URI source. public DocumentApplicationJournalEntry(object state, string name) { Invariant.Assert(state is DocumentApplicationState, "state should be of type DocumentApplicationState"); // Store parameters locally. _state = state; _displayName = name; } public DocumentApplicationJournalEntry(object state): this(state, null) { } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- ////// Used to reset the UI to state of this entry /// /// NavigationService currently running /// Navigation direction ////// Critical: set_StoredDocumentApplicationState is defined in a non-APTCA assembly. /// TreatAsSafe: call to set_StoredDocumentApplicationState does not entail any risk. /// [SecurityCritical, SecurityTreatAsSafe] public override void Replay(NavigationService navigationService, NavigationMode mode) { ContentControl navigator = (ContentControl)navigationService.INavigatorHost; // Find a reference to the DocumentViewer hosted in the NavigationWindow // On initial history navigation in the browser, the window's layout may not have been // done yet. ApplyTemplate() causes the viewer to be created. navigator.ApplyTemplate(); DocumentApplicationDocumentViewer docViewer = navigator.Template.FindName( "PUIDocumentApplicationDocumentViewer", navigator) as DocumentApplicationDocumentViewer; Debug.Assert(docViewer != null, "PUIDocumentApplicationDocumentViewer not found."); if (docViewer != null) { // Set the new state on the DocumentViewer if (_state is DocumentApplicationState) { docViewer.StoredDocumentApplicationState = (DocumentApplicationState)_state; } // Check that a Document exists. if (navigationService.Content != null) { IDocumentPaginatorSource document = navigationService.Content as IDocumentPaginatorSource; // If the document has already been paginated (could happen in the // case of a fragment navigation), then set the DocumentViewer to the // new state that was set. if ((document != null) && (document.DocumentPaginator.IsPageCountValid)) { docViewer.SetUIToStoredState(); } } } } public override string JournalEntryName { get { return _displayName; } } //------------------------------------------------------ // // Private Fields. // //------------------------------------------------------ // The DocumentApplicationState has been weakly-typed to avoid PresentationFramework // having a type dependency on PresentationUI. The perf impact of the weak // typed variables in this case was determined to be much less than forcing the load // of a new assembly when Assembly.GetTypes was called on PresentationFramework. private object _state; // DocumentApplicationState private string _displayName; } } // 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
- TableLayoutStyle.cs
- PersonalizableAttribute.cs
- ObjectDataSourceSelectingEventArgs.cs
- DataGridViewButtonColumn.cs
- FixedSOMImage.cs
- TransformedBitmap.cs
- CurrentChangedEventManager.cs
- DiagnosticsConfiguration.cs
- TraceUtility.cs
- RuntimeEnvironment.cs
- HtmlTernaryTree.cs
- GregorianCalendar.cs
- SqlCrossApplyToCrossJoin.cs
- HostProtectionException.cs
- Hash.cs
- NameTable.cs
- Operators.cs
- DbDataAdapter.cs
- WorkflowRuntime.cs
- TraceProvider.cs
- WindowsButton.cs
- DbDataReader.cs
- HttpPostedFileWrapper.cs
- ExtendedPropertyCollection.cs
- HttpServerChannel.cs
- DataGridViewRowPrePaintEventArgs.cs
- MaskedTextBox.cs
- Win32.cs
- MetadataProperty.cs
- NetSectionGroup.cs
- TransactionState.cs
- CodeBlockBuilder.cs
- OdbcStatementHandle.cs
- TextBox.cs
- UserInitiatedNavigationPermission.cs
- MimeTextImporter.cs
- ComponentConverter.cs
- DrawingAttributesDefaultValueFactory.cs
- ConnectionsZoneDesigner.cs
- PolygonHotSpot.cs
- PcmConverter.cs
- CacheEntry.cs
- Exceptions.cs
- PropertyPushdownHelper.cs
- Command.cs
- QueryableDataSourceEditData.cs
- MetadataItemCollectionFactory.cs
- BitStack.cs
- RequestQueryProcessor.cs
- ManagedFilter.cs
- FileDataSourceCache.cs
- XmlSchemaComplexType.cs
- EntityContainerAssociationSet.cs
- ServiceHostingEnvironment.cs
- XmlDocumentFieldSchema.cs
- UnhandledExceptionEventArgs.cs
- HtmlControl.cs
- Constants.cs
- StylusPointProperties.cs
- PrintingPermission.cs
- PropertyBuilder.cs
- WebBrowserSiteBase.cs
- DynamicResourceExtensionConverter.cs
- ValueTypeFixupInfo.cs
- AutomationAttributeInfo.cs
- XmlSchemas.cs
- PropertyGridDesigner.cs
- RealizationContext.cs
- RuntimeEnvironment.cs
- securestring.cs
- SecurityHeaderTokenResolver.cs
- ControlPersister.cs
- GcHandle.cs
- PrintPreviewDialog.cs
- SoundPlayer.cs
- FastPropertyAccessor.cs
- DownloadProgressEventArgs.cs
- QfeChecker.cs
- FileUtil.cs
- MultipartContentParser.cs
- CompilerTypeWithParams.cs
- XhtmlBasicLinkAdapter.cs
- CellQuery.cs
- ObjectDataSourceEventArgs.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- SimpleWorkerRequest.cs
- Variant.cs
- InvalidTimeZoneException.cs
- CookieProtection.cs
- AppLevelCompilationSectionCache.cs
- ScrollProviderWrapper.cs
- Cursor.cs
- InputChannelAcceptor.cs
- EventPropertyMap.cs
- ContractMapping.cs
- LayoutInformation.cs
- TextContainerHelper.cs
- LowerCaseStringConverter.cs
- EntityDataSourceSelectedEventArgs.cs
- IERequestCache.cs