@@ -64,6 +64,9 @@ private set
64
64
65
65
public void Load ( IEnumerable < ITreeData > data , string title )
66
66
{
67
+ var collapsedFoldersEnumerable = folders . Where ( pair => pair . Value . IsCollapsed ) . Select ( pair => pair . Key ) ;
68
+ var collapsedFolders = new HashSet < string > ( collapsedFoldersEnumerable ) ;
69
+
67
70
folders . Clear ( ) ;
68
71
nodes . Clear ( ) ;
69
72
@@ -77,23 +80,27 @@ public void Load(IEnumerable<ITreeData> data, string title)
77
80
titleNode . Load ( ) ;
78
81
nodes . Add ( titleNode ) ;
79
82
83
+ var hideChildren = false ;
84
+ var hideChildrenBelowLevel = 0 ;
85
+
80
86
foreach ( var d in data )
81
87
{
82
88
var parts = d . Name . Split ( '/' ) ;
83
89
for ( int i = 0 ; i < parts . Length ; i ++ )
84
90
{
85
91
var label = parts [ i ] ;
86
- var name = String . Join ( "/" , parts , 0 , i + 1 ) ;
92
+ var level = i + 1 ;
93
+ var name = String . Join ( "/" , parts , 0 , level ) ;
87
94
var isFolder = i < parts . Length - 1 ;
88
95
var alreadyExists = folders . ContainsKey ( name ) ;
89
96
if ( ! alreadyExists )
90
97
{
91
- var node = new TreeNode ( )
98
+ var node = new TreeNode
92
99
{
93
100
Name = name ,
94
101
IsActive = d . IsActive ,
95
102
Label = label ,
96
- Level = i + 1 ,
103
+ Level = level ,
97
104
IsFolder = isFolder
98
105
} ;
99
106
@@ -102,13 +109,36 @@ public void Load(IEnumerable<ITreeData> data, string title)
102
109
activeNode = node ;
103
110
}
104
111
112
+ if ( hideChildren )
113
+ {
114
+ if ( level <= hideChildrenBelowLevel )
115
+ {
116
+ hideChildren = false ;
117
+ }
118
+ else
119
+ {
120
+ node . IsHidden = true ;
121
+ }
122
+ }
123
+
105
124
ResetNodeIcons ( node ) ;
106
125
107
126
node . Load ( ) ;
108
127
109
128
nodes . Add ( node ) ;
110
129
if ( isFolder )
111
130
{
131
+ if ( collapsedFolders . Contains ( name ) )
132
+ {
133
+ node . IsCollapsed = true ;
134
+
135
+ if ( ! hideChildren )
136
+ {
137
+ hideChildren = true ;
138
+ hideChildrenBelowLevel = level ;
139
+ }
140
+ }
141
+
112
142
folders . Add ( name , node ) ;
113
143
}
114
144
}
0 commit comments