示例#1
0
        private void RemoveNode(object sender, EventArgs e)
        {
            Control  c  = (Control)sender;
            JSONNode n  = (JSONNode)c.Tag;
            TreeNode t  = JSONFormUtil.FindTreeNode(tview_object.TopNode, (JSONNode)c.Tag);
            TreeNode tP = t.Parent;

            if (tP == null)
            {
                MessageBox.Show("최상위 노드는 지울 수 없습니다");
                return;
            }
            tP.Nodes.Remove(t);
            Control cP = c.Parent;

            cP.Controls.Remove(c);

            JSONNode pNode = n.parent;

            for (int i = 0; i < pNode.Count; ++i)
            {
                if (ReferenceEquals(pNode[i], n))
                {
                    pNode.remove(i);
                    PanelReSort(cP);
                    break;
                }
            }
        }
示例#2
0
        private void AddNewNodeButton(object sender, EventArgs e)
        {
            Control c = (Control)sender;
            Panel   p = JSONFormUtil.NextPanelFind(c, (JSONNode)c.Tag);

            AddNewNode(p, (JSONNode)c.Tag);
        }
示例#3
0
        public JSONNode ReceiveNode(JSONNode n)
        {
            tview_object.Nodes.Clear();
            MainPanel.Controls.Clear();

            JSONFormUtil.MakeTreeView(n, tview_object);
            //tview_object.Nodes.Add(node1);
            RootNode = n;
            //MappingKey(tview_object.TopNode, n);
            BasePanelMake(n);
            return(null);
        }
示例#4
0
        public void AddNewNode(Panel p, JSONNode n)
        {
            JSONString s           = new JSONString("type a string");
            string     key         = n.Add(s);
            TreeNode   t           = JSONFormUtil.FindTreeNode(tview_object.TopNode, n);
            TreeNode   newTreenode = JSONFormUtil.TreeNodeMake(s);

            t.Nodes.Add(newTreenode);
            CreateGroupChild(s, key, p, p.Height - p.Margin.Bottom, (n is JSONObject)?true:false);
            PanelReSort(p);
            return;
        }
示例#5
0
        public void AddTemplateNodeToBase(JSONNode n)
        {
            Panel target;

            if (nowSelectedNode == null)
            {
                target = (Panel)MainPanel.Controls[2];
            }
            else
            {
                target = (Panel)nowSelectedNode.Controls[nowSelectedNode.Controls.Count - 1];
            }
            JSONNode node        = (JSONNode)target.Tag;
            TreeNode t           = JSONFormUtil.FindTreeNode(tview_object.TopNode, node);
            string   key         = node.Add(n);
            TreeNode newTreenode = JSONFormUtil.TreeNodeMake(n);

            t.Nodes.Add(newTreenode);

            CreateGroupChild(n, key, target, target.Height, node.type == JSONType.Object ? true : false);

            PanelReSort(target);
        }
示例#6
0
        private void ChangeType(object sender, EventArgs e)
        {
            ComboBox c = (ComboBox)sender;
            JSONNode n = (JSONNode)c.Tag;
            TreeNode t = JSONFormUtil.FindTreeNode(tview_object.TopNode, n);
            JSONNode newnode;

            switch (c.SelectedIndex)
            {
            case 0:
                newnode = new JSONArray();
                break;

            case 1:
                newnode = new JSONBool(true);
                break;

            case 2:
                newnode = new JSONNull();
                break;

            case 3:
                newnode = new JSONNumber(0);
                break;

            case 4:
                newnode = new JSONObject();
                break;

            case 5:
                newnode = new JSONString("type a string");
                break;

            default:
                newnode = new JSONNull();
                break;
            }
            t.Nodes.Clear();
            t.Text = newnode.type.GetTypeString();
            t.Tag  = newnode;
            JSONNode pNode = n.parent;

            for (int i = 0; i < pNode.Count; ++i)
            {
                if (ReferenceEquals(pNode[i], n))
                {
                    pNode[i] = newnode;
                    break;
                }
            }
            Panel p = (Panel)c.Parent;

            p.Tag = newnode;

            Control keybox         = FindControl(p, "keybox");
            string  original_key   = keybox.Text;
            bool    original_fixed = keybox.Enabled;

            p.Controls.Clear();

            p.Controls.Add(CreateKeyBox(newnode, original_key, original_fixed));
            p.Controls.Add(CreateComboBox(newnode));
            p.Controls.Add(CreateDeleteButton(newnode));
            if (newnode.type == JSONType.Object || newnode.type == JSONType.Array)
            {
                p.Controls.Add(CreateValueLabel());
                p.Controls.Add(CreateModifyButton(newnode));
                Panel g = CreateJSONNodeGroupBox(newnode, p);
                p.Controls.Add(CreateNewNodeButton(newnode));
                g.BackColor = FormConstValue.baseColor;
                g.Location  = new Point(FormConstValue.stepX, FormConstValue.stepY);
                p.Controls.Add(g);
            }
            else
            {
                p.Controls.Add(CreateValueTextBox(newnode));
            }
            PanelReSort(p);
        }
示例#7
0
        private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (copyTarget == null)
            {
                return;
            }
            Panel target;

            if (nowSelectedNode == null)
            {
                target = (Panel)MainPanel.Controls[2];
            }
            else
            {
                JSONNode tmpnode = (JSONNode)nowSelectedNode.Tag;
                if (tmpnode is JSONObject || tmpnode is JSONArray)
                {
                    target = (Panel)nowSelectedNode.Controls[nowSelectedNode.Controls.Count - 1];
                }
                else
                {
                    MessageBox.Show("선택된 대상은 오브젝트나 배열이 아닙니다");
                    return;
                }
            }
            JSONNode node = (JSONNode)target.Tag;

            if (copyTarget.type != JSONType.Array && copyTarget.type != JSONType.Object)
            {
                JSONNode copied      = copyTarget.CloneNode();
                TreeNode t           = JSONFormUtil.FindTreeNode(tview_object.TopNode, node);
                string   key         = node.Add(copied);
                TreeNode newTreenode = new TreeNode();
                newTreenode.Tag  = copyTarget;
                newTreenode.Text = copyTarget.type.GetTypeString();
                t.Nodes.Add(newTreenode);

                CreateGroupChild(copied, key, target, target.Height, node.type == JSONType.Object ? true : false);

                PanelReSort(target);
            }
            else
            {
                if (JSONParseThread.Parsing)
                {
                    MessageBox.Show("다른 파싱이 진행중입니다");
                    return;
                }
                string parseString = copyTarget.Stringify();
                JSON.Parse((n) =>
                {
                    JSONNode copied      = n;
                    TreeNode t           = JSONFormUtil.FindTreeNode(tview_object.TopNode, node);
                    string key           = node.Add(copied);
                    TreeNode newTreenode = JSONFormUtil.TreeNodeMake(copied);
                    t.Nodes.Add(newTreenode);

                    CreateGroupChild(copied, key, target, target.Height, node.type == JSONType.Object ? true : false);

                    PanelReSort(target);
                    return(n);
                }, JSONExceptionCatch, parseString);
            }
        }