/// <summary> /// Cette méthode permet de coller un objet précédement copier ou couper. /// A cet effet on vérifie si le Paste vient après un Cut(si CurrentCutObject!=null) ou un Copy, /// puis on met dans le presse-papiers une copie de l'élément coupé ou copié. /// On affecte un nouveau parent à l'élément coupé/copié. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnPasteNode(object sender, RoutedEventArgs e) { BGroup parent = GetSelectedGroup(); if (parent == null) { parent = this.Root; } if (CurrentCutObject != null) { if (CurrentCutObject == parent) { CurrentCutObject = null; } else { CurrentCutObject.parent.ForgetChild(CurrentCutObject); parent.AddChild(CurrentCutObject); SaveGroup(CurrentCutObject); List <Domain.BGroup> groupes = Kernel.Util.ClipbordUtil.GetGroupes(); CurrentCutObject = null; if (Changed != null) { Changed(); } } } else { List <BGroup> listeGroupe = Kernel.Util.ClipbordUtil.GetGroupes(); List <BGroup> cListGroupe = new List <BGroup>(); foreach (BGroup newItem in listeGroupe) { if (newItem != null) { BGroup newitem = newItem.GetCopy() as BGroup; parent.AddChild(newitem); SaveGroup(newitem); cListGroupe.Add(newitem); Kernel.Util.ClipbordUtil.SetGroups(cListGroupe.ToList <Object>()); if (Changed != null) { Changed(); } } } } }
/// <summary> /// Ajoute un nouveau noeud fils au noeud passé en paramètre. /// </summary> /// <param name="model">Le noeud auquel il fau ajouter un fils</param> /// <returns>Le nouveau noed créé</returns> public virtual BGroup AddNode(BGroup parent) { BGroup child = GetNewTreeViewModel(); if (parent != null) { parent.AddChild(child); parent.UpdateParents(); } else { this.Root.AddChild(child); } // GroupService.Save(this.Root); SaveGroup(child); SetSelectedGroup(child); if (Changed != null) { Changed(); } return(child); }