private void UnregisterRelatedDocuments(SceneView sceneView) { ViewUpdateManager.RelatedDocumentTable relatedDocumentTable = (ViewUpdateManager.RelatedDocumentTable)null; if (!this.relatedDocumentsForView.TryGetValue(sceneView, out relatedDocumentTable)) { return; } foreach (SceneDocument sceneDocument in new List <SceneDocument>((IEnumerable <SceneDocument>)relatedDocumentTable.Documents)) { this.UnregisterRelatedDocumentInternal(sceneView, sceneDocument); relatedDocumentTable.Remove(sceneDocument); } this.relatedDocumentsForView.Remove(sceneView); }
private void OnEditTransactionUpdated(object sender, EventArgs e) { SceneDocument document = sender as SceneDocument; SceneView activeView = this.DesignerContext.ActiveView; ViewUpdateManager.RelatedDocumentTable relatedDocumentTable = (ViewUpdateManager.RelatedDocumentTable)null; if (activeView == null || activeView.IsClosing || (!this.relatedDocumentsForView.TryGetValue(activeView, out relatedDocumentTable) || !relatedDocumentTable.Contains(document))) { return; } RelatedDocumentInfo documentInfo = relatedDocumentTable[document]; activeView.UpdateFromRelatedDocument(document, documentInfo, true, false); activeView.UpdateReferences(); }
private void OnProjectContextDocumentClosedEarly(object sender, ProjectDocumentEventArgs e) { IProjectDocument document = e.Document; SceneDocument sceneDocument = e.Document.Document as SceneDocument; if (sceneDocument == null) { return; } List <SceneView> list1 = (List <SceneView>)null; if (this.primaryViewsForDocument.TryGetValue(sceneDocument, out list1)) { foreach (SceneView sceneView in new List <SceneView>((IEnumerable <SceneView>)list1)) { sceneView.SuspendUpdatesForViewShutdown(); this.Unregister(sceneView); } } List <SceneView> list2 = (List <SceneView>)null; if (!this.relatedViewsForDocument.TryGetValue(sceneDocument, out list2)) { return; } List <SceneView> list3 = new List <SceneView>((IEnumerable <SceneView>)list2); foreach (SceneView sceneView in list3) { ViewUpdateManager.RelatedDocumentTable relatedDocumentTable = this.relatedDocumentsForView[sceneView]; this.UnregisterRelatedDocumentInternal(sceneView, sceneDocument); relatedDocumentTable.Remove(sceneDocument); } List <SceneView> list4; if (!this.pendingViewsForClosedDocuments.TryGetValue(e.Document, out list4)) { this.pendingViewsForClosedDocuments.Add(e.Document, list3); } else { list4.AddRange(Enumerable.Except <SceneView>((IEnumerable <SceneView>)list3, (IEnumerable <SceneView>)list4)); } }
public void EnsureViewUpdatesForRelatedDocument(SceneView sceneView, SceneDocument sceneDocument) { ViewUpdateManager.RelatedDocumentTable relatedDocumentTable; if (!this.relatedDocumentsForView.TryGetValue(sceneView, out relatedDocumentTable)) { relatedDocumentTable = new ViewUpdateManager.RelatedDocumentTable(); this.relatedDocumentsForView[sceneView] = relatedDocumentTable; } if (sceneDocument == sceneView.Document || relatedDocumentTable.Contains(sceneDocument)) { return; } IProjectDocument document = sceneDocument.ProjectContext.GetDocument(sceneDocument.DocumentRoot); if (ViewUpdateManager.GetDocumentRelation(sceneView, document) != ViewUpdateManager.DocumentRelation.Related || ViewUpdateManager.IsDisposingOrDisposed(sceneDocument.ProjectContext)) { return; } relatedDocumentTable.Add(sceneDocument); this.RegisterRelatedDocumentInternal(sceneView, sceneDocument); }
public void ExchangeRelatedDocumentHandlers(SceneView firstView, SceneView secondView) { ViewUpdateManager.RelatedDocumentTable relatedDocumentTable1 = (ViewUpdateManager.RelatedDocumentTable)null; this.relatedDocumentsForView.TryGetValue(firstView, out relatedDocumentTable1); this.relatedDocumentsForView.Remove(firstView); ViewUpdateManager.RelatedDocumentTable relatedDocumentTable2 = (ViewUpdateManager.RelatedDocumentTable)null; this.relatedDocumentsForView.TryGetValue(secondView, out relatedDocumentTable2); this.relatedDocumentsForView.Remove(secondView); if (relatedDocumentTable1 != null) { foreach (SceneDocument relatedDocument in (IEnumerable <SceneDocument>)relatedDocumentTable1.Documents) { this.UnregisterRelatedDocumentInternal(firstView, relatedDocument); } this.relatedDocumentsForView[secondView] = relatedDocumentTable1; } if (relatedDocumentTable2 != null) { foreach (SceneDocument relatedDocument in (IEnumerable <SceneDocument>)relatedDocumentTable2.Documents) { this.UnregisterRelatedDocumentInternal(secondView, relatedDocument); } this.relatedDocumentsForView[firstView] = relatedDocumentTable2; foreach (SceneDocument sceneDocument in (IEnumerable <SceneDocument>)relatedDocumentTable2.Documents) { this.RegisterRelatedDocumentInternal(firstView, sceneDocument); } } if (relatedDocumentTable1 == null) { return; } foreach (SceneDocument sceneDocument in (IEnumerable <SceneDocument>)relatedDocumentTable1.Documents) { this.RegisterRelatedDocumentInternal(secondView, sceneDocument); } }