Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 6a7631b

Browse files
Using a TreeNodeDictionary because it's more convenient
1 parent 5d80511 commit 6a7631b

File tree

1 file changed

+7
-23
lines changed

1 file changed

+7
-23
lines changed

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
namespace GitHub.Unity
1010
{
11+
[Serializable]
12+
public class TreeNodeDictionary : SerializableDictionary<string, TreeNode> { }
13+
1114
[Serializable]
1215
public class Tree
1316
{
@@ -36,10 +39,9 @@ public class Tree
3639
[SerializeField] private List<TreeNode> nodes = new List<TreeNode>();
3740
[SerializeField] private TreeNode selectedNode = null;
3841
[SerializeField] private TreeNode activeNode = null;
39-
[SerializeField] private List<string> foldersKeys = new List<string>();
42+
[SerializeField] private TreeNodeDictionary folders = new TreeNodeDictionary();
4043

4144
[NonSerialized] private Stack<bool> indents = new Stack<bool>();
42-
[NonSerialized] private Hashtable folders;
4345

4446
public bool IsInitialized { get { return nodes != null && nodes.Count > 0 && !String.IsNullOrEmpty(nodes[0].Name); } }
4547
public bool RequiresRepaint { get; private set; }
@@ -60,26 +62,9 @@ private set
6062

6163
public TreeNode ActiveNode { get { return activeNode; } }
6264

63-
private Hashtable Folders
64-
{
65-
get
66-
{
67-
if (folders == null)
68-
{
69-
folders = new Hashtable();
70-
for (int i = 0; i < foldersKeys.Count; i++)
71-
{
72-
folders.Add(foldersKeys[i], null);
73-
}
74-
}
75-
return folders;
76-
}
77-
}
78-
7965
public void Load(IEnumerable<ITreeData> data, string title)
8066
{
81-
foldersKeys.Clear();
82-
Folders.Clear();
67+
folders.Clear();
8368
nodes.Clear();
8469

8570
var titleNode = new TreeNode()
@@ -100,7 +85,7 @@ public void Load(IEnumerable<ITreeData> data, string title)
10085
var label = parts[i];
10186
var name = String.Join("/", parts, 0, i + 1);
10287
var isFolder = i < parts.Length - 1;
103-
var alreadyExists = Folders.ContainsKey(name);
88+
var alreadyExists = folders.ContainsKey(name);
10489
if (!alreadyExists)
10590
{
10691
var node = new TreeNode()
@@ -124,12 +109,11 @@ public void Load(IEnumerable<ITreeData> data, string title)
124109
nodes.Add(node);
125110
if (isFolder)
126111
{
127-
Folders.Add(name, null);
112+
folders.Add(name, node);
128113
}
129114
}
130115
}
131116
}
132-
foldersKeys = Folders.Keys.Cast<string>().ToList();
133117
}
134118

135119
public Rect Render(Rect rect, Vector2 scroll, Action<TreeNode> singleClick = null, Action<TreeNode> doubleClick = null)

0 commit comments

Comments
 (0)