public TriStateTreeNode AddChild(AddModes mode, params object[] args) { TriStateTreeNode node = null; switch (mode) { case AddModes.Key_Text_RelName_RelObj: node = new TriStateTreeNode(args[1].ToString(), args[2] as String, args[3]); node.Name = args[0].ToString(); AddNode(node); break; case AddModes.Key_Text_ImageIndex_SelImgIndex_RelName_RelObj: node = new TriStateTreeNode(args[1].ToString(), args[4] as String, args[5]); //node = new TriStateTreeNode(text, relObjName, relObj); node.Name = args[0].ToString(); //key; node.ImageIndex = (int)args[2]; // imageIndex; node.SelectedImageIndex = (int)args[3]; // selectedImageIndex; AddNode(node); //return node; break; case AddModes.Key_Text_ImageIndex_RelName_RelObj: node = new TriStateTreeNode(args[1].ToString(), args[3] as String, args[4]); //node = new TriStateTreeNode(text, relObjName, relObj); node.Name = args[0].ToString(); // key; node.ImageIndex = (int)args[2]; // imageIndex; node.SelectedImageIndex = (int)args[2]; // imageIndex; AddNode(node); break; case AddModes.Key_Text_ImageKey_RelName_RelObj: node = new TriStateTreeNode(args[1].ToString(), args[3] as String, args[4]); //node = new TriStateTreeNode(text, relObjName, relObj); node.Name = args[0].ToString(); // key; node.ImageKey = args[2].ToString(); // imageKey; node.SelectedImageKey = args[2].ToString(); // imageKey; AddNode(node); break; case AddModes.Key_Text_ImageKey_SelImgKey_RelName_RelObj: node = new TriStateTreeNode(args[1].ToString(), args[4] as String, args[5]); node.Name = args[0].ToString(); //key node.ImageKey = args[2].ToString(); // imageKey; node.SelectedImageKey = args[3].ToString(); // selimageKey; AddNode(node); break; case AddModes.Text_RelName_RelObj: node = new TriStateTreeNode(args[0].ToString(), args[1] as String, args[2]);//text, relObjName, relObj); node.CheckState = CheckState.Unchecked; AddNode(node); break; } return(node); }
/// <summary> /// Constructor setting the <see cref="ContextElement"/>, <see cref="ElementsToAdd"/> /// and <see cref="AddMode"/> of the action. /// Optionally also sets the <see cref="Description"/> of the action /// </summary> /// <param name="contextElement">The context <see cref="XElement"/></param> /// <param name="elementsToAdd">The <see cref="XElement"/>s to add</param> /// <param name="addMode">The <see cref="AddMode"/></param> /// <param name="description">The optional description</param> public AddElementsAction(XElement contextElement, IEnumerable <XElement> elementsToAdd, AddModes addMode, string description = "Add entries") { ContextElement = contextElement; this.elementsToAdd = new List <XElement>(elementsToAdd); Description = description; AddMode = addMode; switch (addMode) { case AddModes.AddAsChildren: CanExecute = contextElement != null; break; case AddModes.InsertBefore: CanExecute = contextElement?.Parent != null; break; default: throw new ArgumentOutOfRangeException(nameof(addMode), addMode, null); } }