private void RemoveViewModelFromCollections(IIdentifier identifier) { if (!modelDictionary.ContainsKey(identifier.Id)) { return; } IIdentityTreeItemViewModel <T> vm = viewModelDictionary[identifier.Id]; vm.Expanded -= OnViewModelExpanded; vm.Selected -= OnViewModelSelected; vm.Target.ParentChanged -= OnTreeItemParentChanged; if (SelectedTreeItem == vm) { SelectedTreeItem = null; } modelDictionary.Remove(vm.Identifier.Id); viewModelDictionary.Remove(vm.Identifier.Id); allNodes.Remove(vm); if (vm.Parent != null) { IIdentityTreeItemViewModel <T> parentVM = viewModelDictionary[vm.Parent.Identifier.Id]; parentVM.RemoveChild(identifier); } foreach (var item in vm.Target.Children) { RemoveViewModelFromCollections(item.Identifier); } }
private void CreateViewModelAndAddToCollections(T treeItem) { if (modelDictionary.ContainsKey(treeItem.Identifier.Id)) { return; } IIdentityTreeItemViewModel <T> vm = CreateViewModel(treeItem); vm.Expanded += OnViewModelExpanded; vm.Selected += OnViewModelSelected; treeItem.ParentChanged += OnTreeItemParentChanged; modelDictionary.Add(treeItem.Identifier.Id, treeItem); viewModelDictionary.Add(treeItem.Identifier.Id, vm); allNodes.Add(vm); if (treeItem.Parent != null) { IIdentityTreeItemViewModel <T> parentVM = viewModelDictionary[treeItem.Parent.Identifier.Id]; vm.Parent = parentVM; parentVM.AddChild(vm); } foreach (var item in treeItem.Children) { CreateViewModelAndAddToCollections(item); } }
public void AddChild(IIdentityTreeItemViewModel <T> child) { if (!chidViewModels.ContainsKey(child.Identifier.Id)) { child.Parent = this; chidViewModels.Add(child.Identifier.Id, child); children.Add(child); } }
public void RemoveChild(IIdentifier childIdentifier) { if (chidViewModels.ContainsKey(childIdentifier.Id)) { IIdentityTreeItemViewModel <T> child = chidViewModels[childIdentifier.Id]; child.Parent = null; chidViewModels.Remove(childIdentifier.Id); children.Remove(child); } }
public int Compare(object x, object y) { IIdentityTreeItemViewModel <T> a = x as IIdentityTreeItemViewModel <T>; IIdentityTreeItemViewModel <T> b = y as IIdentityTreeItemViewModel <T>; if (a != null && b != null) { AlphanumStringComparatorFast comp = new AlphanumStringComparatorFast(); return(comp.Compare(a.Name, b.Name)); } return(-1); }
private void OnTreeItemParentChanged(object sender, IdentityTreeItemParentChangedEventArgs <T> e) { IIdentityTreeItem <T> treeItem = sender as IIdentityTreeItem <T>; IIdentityTreeItemViewModel <T> vm = viewModelDictionary[treeItem.Identifier.Id]; if (e.OldParent != null) { IIdentityTreeItemViewModel <T> oldParentVM = viewModelDictionary[e.OldParent.Identifier.Id]; oldParentVM.RemoveChild(vm.Identifier); } if (e.NewParent != null) { IIdentityTreeItemViewModel <T> newParentVM = viewModelDictionary[e.NewParent.Identifier.Id]; newParentVM.AddChild(vm); } }
private void OnViewModelSelected(object sender, EventArgs e) { SelectedTreeItem = sender as IIdentityTreeItemViewModel <T>; }
private void OnViewModelExpanded(object sender, EventArgs e) { IIdentityTreeItemViewModel <T> vm = sender as IIdentityTreeItemViewModel <T>; treeManager.RefreshChildren(modelDictionary[vm.Identifier.Id]); }