/// <summary> /// Save changes to selected item /// </summary> public bool SaveSelected() { if (SelectedItem != null) { bool idCahnged = SelectedItem.Id != Owner.Form.DialogIdBox.Text; SelectedItem.Id = Owner.Form.DialogIdBox.Text; SelectedItem.DisplayedName = Owner.Form.DialogNameBox.Text; SelectedItem.Operation = new TBotCore.Core.Operations.OperationFiller(Owner.Form.DialogOperationBox.Text); SelectedItem.Data = Owner.Form.DialogDataBox.Text; SelectedItem.DisplayPriority = (int)Owner.Form.DialogDisplayOrderBox.Value; SelectedItem.SupportButtons = Owner.Form.DialogFlagBox.CheckedItems.Cast <TBotCore.Core.Dialogs.Button>().ToList(); var isCasted = Owner.Core.Dialogs.GetEditable(). CastDialog(SelectedItem.Id, Owner.DialogTypes[Owner.Form.DialogTypeBox.Text]); //<<<----- type conversion if (isCasted.Item1) //change node reference { SelectedItem = isCasted.Item2.GetEditable(); } if (isCasted.Item1 || idCahnged) { Owner.Form.DialogsBox.SelectedNode.Tag = SelectedItem.EditableObject; Owner.Form.DialogsBox.SelectedNode.Text = SelectedItem.Id; Owner.Form.DialogsBox.SelectedNode.Name = SelectedItem.Id; } // work with pagination if (SelectedItem.EditableObject is PaginatedDialog) { var selectedDia = SelectedItem as PaginatedDialog.EditablePaginatedDialog; if (selectedDia == null) { return(false); } var maxIndx = selectedDia.Content.Count; int page = (int)Owner.Form.DialogContentPageBox.Value; if (page < maxIndx) { selectedDia.Content[page] = Owner.Form.DialogContentBox.Text; CurrentPage = page; } else { return(false); } } else { SelectedItem.Content = Owner.Form.DialogContentBox.Text; } return(true); } return(false); }
/// <summary> /// Fill dialogs nodes /// </summary> private void FillDialogsTree() { // save name of old node to select it string oldNode = Owner.Form.DialogsBox.SelectedNode?.Name; Owner.Form.DialogsBox.Nodes.Clear(); // create root node var rootDia = Owner.Core.Dialogs.RootDialog; TreeNode rootNode = new TreeNode(); rootNode.Tag = rootDia; rootNode.Text = rootDia.Id; rootNode.Name = rootDia.Id; AddChilds(rootNode); // create registration node var regDia = Owner.Core.Dialogs.RegistrationDialog; TreeNode regNode = new TreeNode(); regNode.Tag = regDia; regNode.Text = regDia.Id; regNode.Name = regDia.Id; AddChilds(regNode); Owner.Form.DialogsBox.Nodes.Add(rootNode); Owner.Form.DialogsBox.Nodes.Add(regNode); SelectedItem = null; ShowUi(false); Owner.Form.DialogsBox.ExpandAll(); // try select old node var node = Owner.Form.DialogsBox.Nodes.Find(oldNode, true); if (node.Count() > 0) { Owner.Form.DialogsBox.SelectedNode = node.First(); OnEntityChange(); } }
public override void OnEntityChange() { // fill support buttons list Owner.Form.DialogFlagBox.Items.Clear(); foreach (var v in Owner.Core.Dialogs.GetButtons()) { Owner.Form.DialogFlagBox.Items.Add(v, false); } // select new one try { if (Owner.Form.DialogsBox.SelectedNode == null) { return; } if (Owner.Form.DialogsBox.SelectedNode.Tag is PaginatedDialog) { SelectedItem = (Owner.Form.DialogsBox.SelectedNode.Tag as PaginatedDialog).GetEditable(); } else { SelectedItem = (Owner.Form.DialogsBox.SelectedNode.Tag as Dialog).GetEditable(); } CurrentPage = 0; } catch { SelectedItem = null; } ShowUi(SelectedItem != null); if (SelectedItem != null) { DisplaySelected(); SetEditableState(); } }