8
8
9
9
namespace GitHub . Unity
10
10
{
11
+ [ Serializable ]
12
+ public class TreeNodeDictionary : SerializableDictionary < string , TreeNode > { }
13
+
11
14
[ Serializable ]
12
15
public class Tree
13
16
{
@@ -36,10 +39,9 @@ public class Tree
36
39
[ SerializeField ] private List < TreeNode > nodes = new List < TreeNode > ( ) ;
37
40
[ SerializeField ] private TreeNode selectedNode = null ;
38
41
[ SerializeField ] private TreeNode activeNode = null ;
39
- [ SerializeField ] private List < string > foldersKeys = new List < string > ( ) ;
42
+ [ SerializeField ] private TreeNodeDictionary folders = new TreeNodeDictionary ( ) ;
40
43
41
44
[ NonSerialized ] private Stack < bool > indents = new Stack < bool > ( ) ;
42
- [ NonSerialized ] private Hashtable folders ;
43
45
44
46
public bool IsInitialized { get { return nodes != null && nodes . Count > 0 && ! String . IsNullOrEmpty ( nodes [ 0 ] . Name ) ; } }
45
47
public bool RequiresRepaint { get ; private set ; }
@@ -60,26 +62,9 @@ private set
60
62
61
63
public TreeNode ActiveNode { get { return activeNode ; } }
62
64
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
-
79
65
public void Load ( IEnumerable < ITreeData > data , string title )
80
66
{
81
- foldersKeys . Clear ( ) ;
82
- Folders . Clear ( ) ;
67
+ folders . Clear ( ) ;
83
68
nodes . Clear ( ) ;
84
69
85
70
var titleNode = new TreeNode ( )
@@ -100,7 +85,7 @@ public void Load(IEnumerable<ITreeData> data, string title)
100
85
var label = parts [ i ] ;
101
86
var name = String . Join ( "/" , parts , 0 , i + 1 ) ;
102
87
var isFolder = i < parts . Length - 1 ;
103
- var alreadyExists = Folders . ContainsKey ( name ) ;
88
+ var alreadyExists = folders . ContainsKey ( name ) ;
104
89
if ( ! alreadyExists )
105
90
{
106
91
var node = new TreeNode ( )
@@ -124,12 +109,11 @@ public void Load(IEnumerable<ITreeData> data, string title)
124
109
nodes . Add ( node ) ;
125
110
if ( isFolder )
126
111
{
127
- Folders . Add ( name , null ) ;
112
+ folders . Add ( name , node ) ;
128
113
}
129
114
}
130
115
}
131
116
}
132
- foldersKeys = Folders . Keys . Cast < string > ( ) . ToList ( ) ;
133
117
}
134
118
135
119
public Rect Render ( Rect rect , Vector2 scroll , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null )
0 commit comments