Пример #1
0
 // ItemsControl = TreeView 와 MyTreeViewItem 의 상위 클래스 ItemsControl.Items 요소만 쓴다.
 public JsonTreeViewItem()
 {
     this.Header     = new JsonTreeViewItemHeader();
     this.Name       = "tvi_" + count_tvi++;
     this.AllowDrop  = true;
     this.IsExpanded = true;
 }
Пример #2
0
 // ItemsControl = TreeView 와 MyTreeViewItem 의 상위 클래스 ItemsControl.Items 요소만 쓴다.
 public JsonTreeViewItem()
 {
     this.Style      = (Style)(App.Current.Resources["MetroTreeViewItem"]);
     this.Header     = new JsonTreeViewItemHeader();
     this.Name       = "tvi_" + count_tvi++;
     this.AllowDrop  = true;
     this.IsExpanded = true;
 }
Пример #3
0
        // Json 버튼은 JsonTreeViewItem.Header.children 에 존재
        protected override void OnClick()
        {
            base.OnClick();
            JsonTreeViewItemHeader jtvih = this.Parent as JsonTreeViewItemHeader;

            if (jtvih == null)
            {
                return;
            }
            JsonTreeViewItem jtvi = jtvih.Parent as JsonTreeViewItem;

            if (jtvi == null)
            {
                return;
            }

            jtvi.Remove();
            //FileContoller.write(JsonInfo.current.filename, JsonInfo.current.jtok_root.ToString());
        }
Пример #4
0
        public JsonAddButton()
        {
            this.Content    = '+';
            this.Background = Brushes.LightGreen;

            // Json 버튼은 JsonTreeViewItem.Header.children 에 존재
            this.Click += delegate(object sender, RoutedEventArgs e)
            {
                JsonTreeViewItemHeader jtvih = this.Parent as JsonTreeViewItemHeader;
                if (jtvih == null)
                {
                    return;
                }
                JsonTreeViewItem jtvi = jtvih.Parent as JsonTreeViewItem;
                if (jtvi == null)
                {
                    return;
                }

                JsonButton button = sender as JsonButton;
                //tvi.Add(sender as JsonButton, convertToTreeView_recursive);
                //FileContoller.write(JSonInfo.current.filename, JSonInfo.current.jtok_root.ToString());
            };
        }
Пример #5
0
        // Json 버튼은 JsonTreeViewItem.Header.children 에 존재
        protected override void OnClick()
        {
            base.OnClick();
            JsonTreeViewItemHeader jtvih = this.Parent as JsonTreeViewItemHeader;

            if (jtvih == null)
            {
                return;
            }
            JsonTreeViewItem jtvi = jtvih.Parent as JsonTreeViewItem;

            if (jtvi == null)
            {
                return;
            }

            if (jtvi.type == JsonTreeViewItem.JsonType.JArray)
            {
                JsonTreeViewItem child_tvi = new JsonTreeViewItem();
                KeyTextBox       tb_key    = new KeyTextBox(jtvi.getCountChildProperty().ToString(), false);
                child_tvi.Header.AddItem(tb_key);
                KeyTextBox tb_type = new KeyTextBox("object", false);
                child_tvi.Header.AddItem(tb_type);
                child_tvi.type = JsonTreeViewItem.JsonType.JObject;

                jtvi.AddItem(child_tvi);
            }
            else
            {
                // window_addJson showdialog()
                Window_AddJsonItem popup = new Window_AddJsonItem();
                Point pt = this.PointToScreen(new Point(0, 0));
                popup.Left = pt.X;
                popup.Top  = pt.Y;

                // cancel return
                if (popup.ShowDialog() != true)
                {
                    return;
                }

                JsonTreeViewItem.convertToTreeView_recursive(jtvi, new JProperty(popup.key, popup.value));
            }

            //JToken tmp = jtvi.Parent;
            //// tmp == root 일때
            //if(tmp is JObject)
            //	;
            //else
            //{
            //	JProperty jprop = tmp as JProperty;
            //	tmp = jprop.Value;
            //}
            //JToken add_jtok = null;
            //if(tmp is JArray)
            //{
            //	JArray jarr = tmp as JArray;
            //	// add Jtok_root
            //	add_jtok = new JObject();
            //	jarr.Add(add_jtok);
            //}
            //else if(tmp is JObject)
            //{
            //	JObject jobj = tmp as JObject;
            //	// window_addJson showdialog()
            //	popup_AddJsonItem popup = new popup_AddJsonItem();
            //	Point pt = sender.PointToScreen(new Point(0, 0));
            //	popup.Left = pt.X;
            //	popup.Top = pt.Y;

            //	// cancel return
            //	if(popup.ShowDialog() != true)
            //		return;

            //	foreach(JProperty v in jobj.Properties())
            //	{
            //		// 키 중복
            //		if(v.Name == popup.key)
            //			return;
            //	}

            //	// ok return & add Jtok_root
            //	add_jtok = new JProperty(popup.key, popup.value);
            //	jobj.Add(add_jtok);

            //}

            //// add to jtree_root
            //if(add_jtok != null)
            //	makeTree(this, add_jtok);
            ////tvi.Add(sender as JsonButton, convertToTreeView_recursive);
            ////FileContoller.write(JSonInfo.current.filename, JSonInfo.current.jtok_root.ToString());
        }
Пример #6
0
        static void convertToJToken_recursive(JsonTreeViewItem tvi_cur, JObject jobj_cur)
        {
            if (tvi_cur == null || jobj_cur == null)
            {
                return;
            }

            JToken cur_jtok = jobj_cur;

            // 여기서부터는 property 로 시작
            foreach (var v in tvi_cur.Items)
            {
                JsonTreeViewItem tvi_child = v as JsonTreeViewItem;
                if (tvi_child == null)
                {
                    continue;
                }

                JsonTreeViewItemHeader pan = tvi_child.Header as JsonTreeViewItemHeader;
                if (pan == null)
                {
                    continue;
                }

                // pan(MyTreeViewItem.Header) = key, val or val.type, button
                JsonTextBox tb_key = pan.Children[0] as JsonTextBox;
                JsonTextBox tb_val = pan.Children[1] as JsonTextBox;

                if (tb_val is KeyTextBox)
                {
                    KeyTextBox tb_type = tb_val as KeyTextBox;
                    switch (tvi_child.type)
                    {
                    case JsonTreeViewItem.JsonType.JObject:
                    {
                        JObject   jobj  = new JObject();
                        JProperty jprop = new JProperty(tb_key.Text, jobj);
                        (cur_jtok as JObject).Add(jprop);
                        convertToJToken_recursive(tvi_child, jobj);
                    }
                    break;

                    case JsonTreeViewItem.JsonType.JArray:
                    {
                        JArray    jarr  = new JArray();
                        JProperty jprop = new JProperty(tb_key.Text, jarr);
                        (cur_jtok as JObject).Add(jprop);
                        for (int i = 0; i < tvi_child.Items.Count; i++)
                        {
                            JObject jobj = new JObject();
                            jarr.Add(jobj);
                            convertToJToken_recursive(tvi_child.Items[i] as JsonTreeViewItem, jobj);
                        }
                    }
                    break;
                    }
                }
                else
                {
                    JProperty jprop = new JProperty(tb_key.Text, tb_val.Text);
                    (cur_jtok as JObject).Add(jprop);
                }
            }
        }