Esempio n. 1
0
        public static JObject convertToJToken(JsonTreeViewItem root_tvi)
        {
            if (root_tvi == null)
            {
                return(null);
            }

            /*
             * MyTreeViewItem.Items     --N-> MyTreeViewItem * N + Add_Button
             * MyTreeViewItem.Header     --1-> JsonPanel_Header
             * JsonPanel_Header            --3-> TextBox * 2 (key, val or val.type) + Delete_Button
             * MyTreeViewItem.Items => MyTreeViewItem 타입의 자식개념, MyTreeViewItem.Header => JsonPanel 타입의 해당 property
             */
            /*
             * JToken 상위 클래스
             * JObject         --N-> JProperty
             * JProperty        --1->    {JObject}
             *              {JArray } 중 하나
             *              {JValue }
             * JArray             --N-> JObject
             *      children
             */

            // tree root 는 object 로 시작
            JObject jtok_root = new JObject();

            convertToJToken_recursive(root_tvi, jtok_root);

            return(jtok_root);
        }
Esempio n. 2
0
        void refreshIndex()
        {
            if (this.type != JsonType.JArray)
            {
                return;
            }

            //if(start_idx < 0 || start_new_idx < 0)
            //	return;

            // JArray 삽입시 인덱스 수정
            int cnt = this.Items.Count;

            for (int i = 0, newidx = 0; i < cnt; i++)
            {
                JsonTreeViewItem tvi = this.Items[i] as JsonTreeViewItem;
                if (tvi == null)
                {
                    continue;
                }

                KeyTextBox tb = tvi.Header.Children[0] as KeyTextBox;
                if (tb == null)
                {
                    continue;
                }

                tb.Text = newidx.ToString();
                newidx++;
            }
        }
Esempio n. 3
0
        private void OnClickButtonSaveJsonFile(object sender, RoutedEventArgs e)
        {
            if (JsonInfo.current == null)
            {
                return;
            }

            if (JsonInfo.current.Path == null)
            {
                OnClickButtonOtherSaveJsonFile(sender, e);
                return;
            }

            FileInfo f = new FileInfo(JsonInfo.current.Path);

            if (!f.Exists)
            {
                OnClickButtonOtherSaveJsonFile(sender, e);
                return;
            }

            // root JsonTreeViewItem = TreeView.Items[0]
            JsonTreeViewItem root = json_tree_view.Items[0] as JsonTreeViewItem;

            if (root == null)
            {
                return;
            }

            JToken Jtok_root = JsonTreeViewItem.convertToJToken(root);

            FileContoller.write(JsonInfo.current.Path, Jtok_root.ToString());
        }
Esempio n. 4
0
        static JsonTreeViewItem addToJsonTree(JsonTreeViewItem parent_tvi, JToken jtok)
        {
            if (jtok is JObject)
            {
                JObject jobj = jtok as JObject;
                if (jobj.Parent == null)
                {
                    return(parent_tvi);
                }
                if (jobj.Parent != null && jobj.Parent is JArray)
                {
                    JsonTreeViewItem child_tvi = new JsonTreeViewItem();
                    parent_tvi.AddItem(child_tvi);
                    KeyTextBox tb_key = new KeyTextBox((jobj.Parent as JArray).IndexOf(jobj).ToString(), false);
                    child_tvi.Header.AddItem(tb_key);
                    child_tvi.type = JsonType.JObject;
                    parent_tvi     = child_tvi;
                }

                KeyTextBox tb_type = new KeyTextBox("object", false);
                parent_tvi.Header.AddItem(tb_type);
                parent_tvi.type = JsonType.JObject;
                return(parent_tvi);
            }
            else if (jtok is JProperty)
            {
                JProperty        jprop     = jtok as JProperty;
                JsonTreeViewItem child_tvi = new JsonTreeViewItem();
                parent_tvi.AddItem(child_tvi);

                KeyTextBox tb_key = new KeyTextBox(jprop.Name);
                child_tvi.Header.AddItem(tb_key);

                return(child_tvi);
            }
            else if (jtok is JValue)
            {
                JValue jval = jtok as JValue;

                string       data     = jval.ToString();
                ValueTextBox tb_value = new ValueTextBox(data);
                parent_tvi.Header.AddItem(tb_value);

                parent_tvi.Header.addButtn.Visibility = Visibility.Hidden;
                //parent_tvi.Items.Clear();
                return(parent_tvi);
            }
            else if (jtok is JArray)
            {
                KeyTextBox tb_type = new KeyTextBox("array", false);
                parent_tvi.Header.AddItem(tb_type);
                parent_tvi.type = JsonType.JArray;
                return(parent_tvi);
            }
            else
            {
                Console.WriteLine("[error] undefined type = " + jtok.GetType());
                return(parent_tvi);
            }
        }
Esempio n. 5
0
        protected override void OnChecked(RoutedEventArgs e)
        {
            // this 는 JsonTreeViewItem.Children 에 위치
            JsonTreeViewItem tvi = this.Parent as JsonTreeViewItem;

            if (tvi == null)
            {
                return;
            }

            tvi.visibleMore();
        }
Esempio n. 6
0
        public void hideMore()
        {
            for (int i = IDX_MOREBUTTON; i < this.Items.Count; i++)
            {
                JsonTreeViewItem ui = this.Items[i] as JsonTreeViewItem;
                if (ui == null)
                {
                    continue;
                }

                ui.Visibility = Visibility.Collapsed;
            }
        }
Esempio n. 7
0
        public void visibleMore()
        {
            for (int i = 0; i < this.Items.Count; i++)
            {
                JsonTreeViewItem ui = this.Items[i] as JsonTreeViewItem;
                if (ui == null)
                {
                    continue;
                }

                ui.Visibility = Visibility.Visible;
            }
        }
Esempio n. 8
0
        protected override void OnDrop(DragEventArgs e)
        {
            Console.WriteLine("KeyTextBox.OnDrop()");
            JsonTreeViewItem tvi_parent = this.Parent as JsonTreeViewItem;

            if (tvi_parent == null)
            {
                return;
            }

            tvi_parent.PublicDrop(e);
            base.OnDrop(e);
        }
Esempio n. 9
0
        // JsonTextBox 는 JsonTreeViewItem.Header.Children 에 존재
        protected override void OnDragOver(DragEventArgs e)
        {
            JsonTreeViewItem tvi_parent = this.Parent as JsonTreeViewItem;

            if (tvi_parent == null)
            {
                return;
            }

            tvi_parent.PublicDragOver(e);
            Log.Print("KeyTextBox.OnDragOver()");
            base.OnDragOver(e);
        }
Esempio n. 10
0
        protected override void OnUnchecked(RoutedEventArgs e)
        {
            // this 는 JsonTreeViewItem.Children 에 위치
            JsonTreeViewItem tvi = this.Parent as JsonTreeViewItem;

            if (tvi == null)
            {
                return;
            }
            base.OnUnchecked(e);

            tvi.hideMore();
        }
Esempio n. 11
0
        //public static void convertToTreeViewItem(TreeView treeView, JToken jtok_root, string filename)
        //{
        //	if(jtok_root == null)
        //	{
        //		MessageBox.Show(JsonController.Error_message, "JSon Context Error");
        //		return;
        //	}

        //	JsonTreeViewItem jtree_root;

        //	List<string> key_stack = new List<string>();

        //	jtree_root = new JsonTreeViewItem(jtok_root);
        //	treeView.Items.Add(jtree_root);



        //	KeyTextBox tb_key = new KeyTextBox(filename, false);
        //	jtree_root.Header.AddItem(tb_key);

        //	JSonInfo.current.Jtok_root = jtok_root;
        //	JSonInfo.current.Jtree_root = jtree_root;
        //	convertToTreeView_recursive(jtree_root, jtok_root);
        //}
        public static void convertToTreeView_recursive(JsonTreeViewItem parent_tvi, JToken jtok)
        {
            if (jtok == null)
            {
                return;
            }

            JsonTreeViewItem child_tvi = addToJsonTree(parent_tvi, jtok);

            foreach (var v in jtok.Children())
            {
                convertToTreeView_recursive(child_tvi, v);
            }
        }
Esempio n. 12
0
        public static JsonTreeViewItem convertToTreeViewItem(JToken jtok_root)
        {
            if (jtok_root == null)
            {
                MessageBox.Show(JsonController.Error_message, "JSon Context Error");
                return(null);
            }
            // object 로 시작.
            JsonTreeViewItem jtree_root = new JsonTreeViewItem();

            //JsonInfo.current.Jtok_root = jtok_root;
            //JsonInfo.current.Jtree_root = jtree_root;
            convertToTreeView_recursive(jtree_root, jtok_root);
            return(jtree_root);
        }
Esempio n. 13
0
        private bool CheckJson()
        {
            // 로드된 오브젝트가 없으면 실행 x
            if (json_tree_view.Items.Count < 1)
            {
                return(false);
            }
            JsonTreeViewItem root = json_tree_view.Items[0] as JsonTreeViewItem;

            if (root == null)
            {
                return(false);
            }

            return(true);
        }
Esempio n. 14
0
        public void PublicMouseMove(MouseEventArgs e)
        {
            //Console.WriteLine(linked_jtoken);
            base.OnMouseMove(e);
            if (e.LeftButton == MouseButtonState.Pressed &&
                JsonTreeViewItem.selected_tvi != null)
            {
                Console.WriteLine(this.Name + ", called DoDragDrop(" + JsonTreeViewItem.selected_tvi.Name + ")");
                DataObject data = new DataObject();
                data.SetData("Object", JsonTreeViewItem.selected_tvi);
                JsonTreeViewItem.selected_tvi = null;
                Console.WriteLine(this.GetType());
                DragDrop.DoDragDrop(this, data, DragDropEffects.Copy);
            }

            e.Handled = true;
        }
Esempio n. 15
0
        public void refreshJsonTree(JToken jtok_root)
        {
            JsonTreeViewItem root_jtree = JsonTreeViewItem.convertToTreeViewItem(jtok_root);

            if (root_jtree == null)
            {
                return;
            }

            // 삭제
            json_tree_view.Items.Clear();

            KeyTextBox tb = new KeyTextBox(JsonInfo.current.Filename, false);

            root_jtree.Header.Children.Insert(0, tb);
            json_tree_view.Items.Add(root_jtree);
        }
Esempio n. 16
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());
        }
Esempio n. 17
0
        private void SaveFile(string path)
        {
            if (!CheckJson())
            {
                return;
            }

            JToken Jtok_root = JsonTreeViewItem.convertToJToken(json_tree_view.Items[0] as JsonTreeViewItem);

            if (FileContoller.write(path, Jtok_root.ToString()))
            {
                MessageBox.Show(path + " 파일이 저장되었습니다.", "save");
            }
            else
            {
                string caption = "save error";
                string message = path + " 파일을 저장하는데 문제가 생겼습니다.";
                MessageBox.Show(message, caption);
                Console.WriteLine("[" + caption + "] " + message);
            }
        }
Esempio n. 18
0
        private void OnClickButtonViewJsonFile(object sender, RoutedEventArgs e)
        {
            if (JsonInfo.current == null || JsonInfo.current.Path == null)
            {
                return;
            }

            JsonTreeViewItem root = json_tree_view.Items[0] as JsonTreeViewItem;

            if (root == null)
            {
                return;
            }

            Window_ViewFile w = new Window_ViewFile(JsonTreeViewItem.convertToJToken(root).ToString(), JsonInfo.current.Path);

            //Window_ViewFile w = new Window_ViewFile(FileContoller.read(JsonInfo.current.Path), JsonInfo.current.Path);

            if (w.ShowDialog() == true)
            {
                refreshJsonTree(JsonController.parseJson(w.tb_file.Text));
            }
        }
Esempio n. 19
0
        int checkDuplication(JsonTreeViewItem add_tvi)
        {
            if (add_tvi == null)
            {
                return(1);
            }

            JsonTextBox add_tb = add_tvi.Header.Children[0] as JsonTextBox;

            if (add_tb == null)
            {
                return(1);
            }

            // 중복 비교
            for (int i = 0; i < this.Items.Count; i++)
            {
                JsonTreeViewItem tvi = this.Items[i] as JsonTreeViewItem;
                if (tvi == null)
                {
                    continue;
                }

                JsonTextBox tb = tvi.Header.Children[0] as JsonTextBox;
                if (tb == null)
                {
                    continue;
                }
                // 키중복이면 삽입 x
                if (tb.Text == add_tb.Text)
                {
                    return(-1);
                }
            }
            return(0);
        }
Esempio n. 20
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());
            };
        }
Esempio n. 21
0
        private void OnClickButtonOtherSaveJsonFile(object sender, RoutedEventArgs e)
        {
            if (JsonInfo.current == null)
            {
                return;
            }

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.InitialDirectory = root_path;

            if (JsonInfo.current.Path != null)
            {
                string        dir_path = JsonInfo.current.Path.Substring(0, JsonInfo.current.Path.LastIndexOf('\\') + 1);
                DirectoryInfo d        = new DirectoryInfo(dir_path);
                if (d.Exists)
                {
                    sfd.InitialDirectory = dir_path;
                }
            }

            sfd.Filter = "JSon Files (.json)|*.json";
            if (sfd.ShowDialog(this) == true)
            {
                // root JsonTreeViewItem = TreeView.Items[0]
                JsonTreeViewItem root = json_tree_view.Items[0] as JsonTreeViewItem;
                if (root == null)
                {
                    return;
                }

                JToken Jtok_root = JsonTreeViewItem.convertToJToken(root);
                FileContoller.write(sfd.FileName, Jtok_root.ToString());
                JsonInfo.current.Path = sfd.FileName;
            }
        }
Esempio n. 22
0
        static JsonTreeViewItem addToJsonTree(JsonTreeViewItem parent_tvi, JToken jtok)
        {
            if (jtok is JObject)
            {
                JObject jobj = jtok as JObject;
                if (jobj.Parent == null)
                {
                    return(parent_tvi);
                }
                if (jobj.Parent != null && jobj.Parent is JArray)
                {
                    JsonTreeViewItem child_tvi = new JsonTreeViewItem();
                    parent_tvi.AddItem(child_tvi);
                    KeyTextBox tb_key = new KeyTextBox((jobj.Parent as JArray).IndexOf(jobj).ToString(), false);
                    child_tvi.Header.AddItem(tb_key);
                    child_tvi.value_token_type = JTokenType.Object;
                    parent_tvi = child_tvi;
                }

                //KeyTextBox tb_type = new KeyTextBox("object", false);
                //parent_tvi.Header.AddItem(tb_type);
                //parent_tvi.value_token_type = JTokenType.Object;
                //return parent_tvi;
                ValuePanel panel_value = new ValuePanel(JTokenType.Object, "object");
                parent_tvi.Header.AddItem(panel_value);
                parent_tvi.value_token_type = JTokenType.Object;
                return(parent_tvi);
            }
            else if (jtok is JProperty)
            {
                JProperty        jprop     = jtok as JProperty;
                JsonTreeViewItem child_tvi = new JsonTreeViewItem();
                parent_tvi.AddItem(child_tvi);

                KeyTextBox tb_key = new KeyTextBox(jprop.Name);
                child_tvi.Header.AddItem(tb_key);

                return(child_tvi);
            }
            else if (jtok is JValue)
            {
                JValue     jval        = jtok as JValue;
                ValuePanel panel_value = new ValuePanel(jval.Type, jval.Value);
                parent_tvi.Header.AddItem(panel_value);
                parent_tvi.value_token_type = jval.Type;

                parent_tvi.Header.addButtn.Visibility = Visibility.Hidden;
                //parent_tvi.Items.Clear();
                return(parent_tvi);
            }
            else if (jtok is JArray)
            {
                //KeyTextBox tb_type = new KeyTextBox("array", false);
                //parent_tvi.Header.AddItem(tb_type);
                //parent_tvi.value_token_type = JTokenType.Array;
                //return parent_tvi;
                ValuePanel panel_value = new ValuePanel(JTokenType.Array, "array");
                parent_tvi.Header.AddItem(panel_value);
                parent_tvi.value_token_type = JTokenType.Array;
                return(parent_tvi);
            }
            else
            {
                Log.Print("[error] undefined type = " + jtok.GetType());
                return(parent_tvi);
            }
        }
Esempio n. 23
0
 public void PublicMouseLeftButtonDown(MouseButtonEventArgs e)
 {
     base.OnMouseLeftButtonDown(e);
     selected_tvi = this;
     e.Handled    = true;
 }
Esempio n. 24
0
        public void PublicDrop(DragEventArgs e)
        {
            base.OnDrop(e);

            // bubble (자식부터 부모요소로 이벤트 전달 방식) 이므로 처음 수행할때 (제일 자식에서 이벤트를 받았을 때), 이벤트 수행처리.
            e.Handled = true;

            // If the DataObject contains string data, extract it.
            if (e.Data.GetDataPresent("Object"))
            {
                Object data_obj = (Object)e.Data.GetData("Object");

                JsonTreeViewItem tvi_src = data_obj as JsonTreeViewItem;
                if (tvi_src == null)
                {
                    return;
                }

                // dst 의 조상중에 src 가 있나 체크 & dst == src 인지 체크
                JsonTreeViewItem tmp_parent = this;
                while (tmp_parent != null)
                {
                    if (tmp_parent == tvi_src)
                    {
                        return;
                    }

                    tmp_parent = tmp_parent.Parent as JsonTreeViewItem;
                }

                JsonTreeViewItem tvi_parent     = this.Parent as JsonTreeViewItem;
                JsonTreeViewItem tvi_src_parent = tvi_src.Parent as JsonTreeViewItem;
                if (tvi_parent == null || tvi_src_parent == null)
                {
                    return;
                }

                // JArray 타입과 다른타입과는 드래그앤드롭 불가. (src==JArray && dst==JArray) 이거나 (src != JArray && dst==JArray) 일떄 수행
                if ((tvi_parent.type == JsonType.JArray && tvi_src_parent.type != JsonType.JArray) ||
                    (tvi_parent.type != JsonType.JArray && tvi_src_parent.type == JsonType.JArray))
                {
                    return;
                }

                // 중복 체크
                if (tvi_parent.type != JsonType.JArray && tvi_src_parent.type != JsonType.JArray &&
                    tvi_parent != tvi_src_parent &&
                    tvi_parent.checkDuplication(tvi_src) < 0)
                {
                    return;
                }

                // remove
                bool ischecked_more_button = false;
                if (tvi_parent.button_more != null)
                {
                    ischecked_more_button = tvi_parent.button_more.IsChecked.Value;
                }

                int idx_insert = tvi_parent.Items.IndexOf(this);
                tvi_src.Remove();

                // insert
                tvi_parent.AddItem(tvi_src, idx_insert);
                if (tvi_parent.button_more != null)
                {
                    tvi_parent.button_more.IsChecked = ischecked_more_button;
                }
            }
        }
Esempio n. 25
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);
                }
            }
        }
Esempio n. 26
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());
        }