Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / documents / Application / DocumentApplicationJournalEntry.cs / 1 / 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
- ApplicationCommands.cs
- ImmutablePropertyDescriptorGridEntry.cs
- XmlUrlResolver.cs
- XmlSchemaSimpleContent.cs
- SystemResourceHost.cs
- SecurityContextKeyIdentifierClause.cs
- nulltextnavigator.cs
- IgnoreDataMemberAttribute.cs
- FixedHighlight.cs
- ContainerVisual.cs
- CodeGenerator.cs
- ContextMenuAutomationPeer.cs
- ResourceDescriptionAttribute.cs
- TreeNodeStyleCollection.cs
- WpfWebRequestHelper.cs
- EventTrigger.cs
- NamespaceMapping.cs
- EmptyReadOnlyDictionaryInternal.cs
- SqlInternalConnectionSmi.cs
- UserPreferenceChangingEventArgs.cs
- InvariantComparer.cs
- UncommonField.cs
- Enum.cs
- ListViewItemSelectionChangedEvent.cs
- UpDownBaseDesigner.cs
- PropertyConverter.cs
- UiaCoreTypesApi.cs
- DefaultValueAttribute.cs
- TextPointer.cs
- HtmlTernaryTree.cs
- Configuration.cs
- WindowsFormsHostPropertyMap.cs
- AnonymousIdentificationModule.cs
- ValidationSummary.cs
- BamlTreeUpdater.cs
- SocketException.cs
- FileDataSourceCache.cs
- SoapAttributes.cs
- WindowsEditBoxRange.cs
- DesignerVerbCollection.cs
- PaperSize.cs
- ComponentCommands.cs
- StylusDevice.cs
- WebPartExportVerb.cs
- SystemBrushes.cs
- EdmScalarPropertyAttribute.cs
- DataPagerFieldCollection.cs
- HandlerFactoryWrapper.cs
- TdsParser.cs
- ConstantSlot.cs
- SapiGrammar.cs
- WorkflowApplication.cs
- MouseActionConverter.cs
- NullableFloatMinMaxAggregationOperator.cs
- SerializationEventsCache.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- NotifyCollectionChangedEventArgs.cs
- DispatchWrapper.cs
- ListViewUpdatedEventArgs.cs
- DocumentPageViewAutomationPeer.cs
- MouseWheelEventArgs.cs
- ExceptionRoutedEventArgs.cs
- ConfigXmlComment.cs
- SqlWriter.cs
- TypographyProperties.cs
- Model3DCollection.cs
- ToolboxItemLoader.cs
- MessageBox.cs
- ExceptQueryOperator.cs
- DefaultMemberAttribute.cs
- XamlWrappingReader.cs
- RelationshipConverter.cs
- ComponentManagerBroker.cs
- WindowsMenu.cs
- DataContractJsonSerializerOperationBehavior.cs
- KnownTypesProvider.cs
- DynamicPropertyReader.cs
- PropertyInfo.cs
- SchemaManager.cs
- Transform3D.cs
- DatePickerTextBox.cs
- EventMemberCodeDomSerializer.cs
- DnsEndPoint.cs
- SettingsSection.cs
- ProjectionPlanCompiler.cs
- InvokeMethodActivity.cs
- ApplicationServicesHostFactory.cs
- ColorConverter.cs
- TimeSpanValidatorAttribute.cs
- GeneralTransform3DTo2D.cs
- ListViewInsertedEventArgs.cs
- Graphics.cs
- Matrix.cs
- RegularExpressionValidator.cs
- WmlPageAdapter.cs
- MouseGestureValueSerializer.cs
- InputGestureCollection.cs
- PartBasedPackageProperties.cs
- ImageDrawing.cs
- FreezableDefaultValueFactory.cs