Advertisement
ilih

Untitled

Feb 18th, 2019
92
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. namespace UIWidgets.Examples
  2. {
  3.     using System.Collections;
  4.     using UIWidgets;
  5.     using UnityEngine.UI;
  6.     using Newtonsoft.Json.Linq;
  7.  
  8.     public class JSON
  9.     {
  10.         JObject json;
  11.  
  12.         public JSON(string source)
  13.         {
  14.             json = JObject.Parse(source);
  15.         }
  16.  
  17.         public JToken Get(string path)
  18.         {
  19.             return json.SelectToken(path);
  20.         }
  21.     }
  22.  
  23.     public class TreeViewJSONComponent : TreeViewComponentBase<TreeViewEditJSONItem>
  24.     {
  25.         public override void SetData(TreeNode<TreeViewEditJSONItem> node, int depth)
  26.         {
  27.             Node = node;
  28.             base.SetData(Node, depth);
  29.  
  30.             if (node == null)
  31.             {
  32.                 Text.text = string.Empty;
  33.                 return;
  34.             }
  35.  
  36.             Text.text = Node.Item.Name;
  37.  
  38.             if (!Node.Item.AddedChildren)
  39.             {
  40.                 StartCoroutine(AddChildren(Node));
  41.             }
  42.         }
  43.  
  44.         static IEnumerator AddChildren(TreeNode<TreeViewEditJSONItem> node)
  45.         {
  46.             yield return null;
  47.  
  48.             if (node.Nodes == null)
  49.             {
  50.                 node.Nodes = new ObservableList<TreeNode<TreeViewEditJSONItem>>();
  51.             }
  52.  
  53.             node.Nodes.BeginUpdate();
  54.             node.Nodes.Clear();
  55.  
  56.             var item = node.Item;
  57.             var v = item.JSONValue.Get(item.Path);
  58.  
  59.             if (v is JObject json)
  60.             {
  61.                 foreach (var property in json.Properties())
  62.                 {
  63.                     var is_complex = property.Value is JArray || property.Value is JObject;
  64.                     var name = is_complex
  65.                         ? property.Name
  66.                         : property.Name + ": " + property.Value;
  67.  
  68.                     var sub_node = new TreeNode<TreeViewEditJSONItem>(new TreeViewEditJSONItem(name, item.JSONValue, property.Path));
  69.                     node.Nodes.Add(sub_node);
  70.                 }
  71.                
  72.             }
  73.             else if (v is JArray children)
  74.             {
  75.                 for (int i = 0; i < children.Count; i++)
  76.                 {
  77.                     var sub_node = new TreeNode<TreeViewEditJSONItem>(new TreeViewEditJSONItem(i.ToString(), item.JSONValue, children[i].Path));
  78.                     node.Nodes.Add(sub_node);
  79.                 }
  80.             }
  81.  
  82.             node.Item.AddedChildren = true;
  83.  
  84.             node.Nodes.EndUpdate();
  85.  
  86.         }
  87.     }
  88. }
Advertisement
RAW Paste Data Copied
Advertisement