예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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();
            }
        }
예제 #3
0
        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();
            }
        }