/// <summary> /// Remove this OrgElementViewModel from the /// OrgTreeViewModel /// </summary> /// <param name="i"></param> void IDragable.Remove(object data) { //if moving within organization we don't want to //delete the data from the tree OrgElementViewModel org = data as OrgElementViewModel; if (org != null) { //if not a move within organization(moving outside of orgchart) if (!org.isMoveWithinOrganization) { OrgChartManager.Instance().RemoveNode(this.ID); } } //refresh the view of parent's children if (parent != null) { parent.Children = parent.GetChildren(); } }
/// <summary> /// Drop data into this OrgElementViewModel /// </summary> void IDropable.Drop(object data, int index) { //if moving within organization, reassign the children to the //level above first OrgElementViewModel org = data as OrgElementViewModel; ElementViewModel elem = data as ElementViewModel; if (org != null) { org.isMoveWithinOrganization = true; if (org.ID == this.ID) //if dragged and dropped yourself, don't need to do anything { return; } OrgChartManager.Instance().Reassign(new Node { Id = org.ID }, org.parent.ID); OrgChartManager.Instance().AddNode(new Node { Id = org.ID, ParentId = this.ID, FirstName = org.FirstName, LastName = org.LastName }, this.ID); } else if (elem != null) { OrgChartManager.Instance().AddNode(new Node { Id = elem.ID, ParentId = this.ID, FirstName = elem.FirstName, LastName = elem.LastName }, this.ID); } this.Children = this.GetChildren(); //refresh view }
internal OrgElementViewModel(Node i, OrgElementViewModel parent = null) : base(i) { //assign reference to the parent OrgElementViewModel this.parent = parent; }