private void OnPropertyReferenceSceneChange(PropertyReferenceSceneChange e) { if (e.PropertyChanged == null || e.PropertyChanged.Count != 1 || e.Target == null) { return; } SceneElement targetElement = e.Target as SceneElement; if (targetElement == null) { return; } IPropertyId nameProperty = targetElement.NameProperty; if (nameProperty == null || !e.PropertyKey.Equals((object)nameProperty)) { return; } Breadcrumb breadcrumb = this.FindBreadcrumb(targetElement); if (breadcrumb == null) { return; } breadcrumb.RefreshName(); }
private void RefreshBreadcrumbTrail() { ObservableCollection <Breadcrumb> newTrail = new ObservableCollection <Breadcrumb>(); Dictionary <SceneViewModel, object> newViewModels = new Dictionary <SceneViewModel, object>(); if (this.ActiveSceneViewModel != null) { this.ActiveSceneViewModel.EditContextManager.MultiViewModelEditContextWalker.Walk(false, (MultiHistoryCallback)((context, selectedElementPath, ownerPropertyKey, isGhosted) => { newViewModels[context.ViewModel] = (object)null; newTrail.Add(new Breadcrumb(this.ActiveSceneViewModel, context, selectedElementPath, isGhosted)); return(false); })); for (int index = 0; index < newTrail.Count; ++index) { Breadcrumb breadcrumb1 = newTrail[index]; if ((index != 0 ? newTrail[index - 1] : (Breadcrumb)null) != null) { breadcrumb1.HasPreviousBreadcrumb = true; } Breadcrumb breadcrumb2 = index != newTrail.Count - 1 ? newTrail[index + 1] : (Breadcrumb)null; if (breadcrumb2 != null) { breadcrumb1.HasNextBreadcrumb = true; if (breadcrumb2.LocalViewModel != breadcrumb1.LocalViewModel) { breadcrumb1.NextBreadcrumbIsCrossDocument = true; } } } } this.Trail = newTrail; this.ViewModels = newViewModels; }
public override bool Equals(object obj) { if (obj == this) { return(true); } Breadcrumb breadcrumb = obj as Breadcrumb; if (breadcrumb != null && this.activeViewModel == breadcrumb.activeViewModel && (object.Equals((object)this.editContext, (object)breadcrumb.editContext) && object.Equals((object)this.selectedElementPath, (object)breadcrumb.selectedElementPath)) && (this.isGhosted == breadcrumb.isGhosted && this.nextBreadcrumbIsCrossDocument == breadcrumb.nextBreadcrumbIsCrossDocument && this.hasNextBreadcrumb == breadcrumb.hasNextBreadcrumb)) { return(this.hasPreviousBreadcrumb == breadcrumb.hasPreviousBreadcrumb); } return(false); }