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

Commit bccbe5e

Browse files
Adding functionality to track checked files
1 parent b7c4f70 commit bccbe5e

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

src/GitHub.Api/UI/TreeLoader.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ public interface ITree
88
{
99
void AddNode(string path, string label, int level, bool isFolder, bool isActive, bool isHidden, bool isCollapsed, bool isSelected);
1010
void Clear();
11-
HashSet<string> GetCollapsedFolders();
11+
IEnumerable<string> GetCollapsedFolders();
12+
IEnumerable<string> GetCheckedFiles();
1213
string Title { get; }
1314
bool DisplayRootNode { get; }
1415
bool IsCheckable { get; }
@@ -20,7 +21,7 @@ public static class TreeLoader
2021
{
2122
public static void Load(ITree tree, IEnumerable<ITreeData> treeDatas)
2223
{
23-
var collapsedFolders = tree.GetCollapsedFolders();
24+
var collapsedFolders = new HashSet<string>(tree.GetCollapsedFolders());
2425
var selectedNodePath = tree.SelectedNodePath;
2526

2627
tree.Clear();

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

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public abstract class Tree: ITree
3030
[SerializeField] private List<TreeNode> nodes = new List<TreeNode>();
3131
[SerializeField] private TreeNode selectedNode = null;
3232
[SerializeField] private TreeNodeDictionary folders = new TreeNodeDictionary();
33+
[SerializeField] private TreeNodeDictionary checkedFileNodes = new TreeNodeDictionary();
3334

3435
[NonSerialized] private Stack<bool> indents = new Stack<bool>();
3536
[NonSerialized] private Action<TreeNode> rightClickNextRender;
@@ -112,14 +113,19 @@ public void AddNode(string path, string label, int level, bool isFolder, bool is
112113
public void Clear()
113114
{
114115
folders.Clear();
116+
checkedFileNodes.Clear();
115117
nodes.Clear();
116118
SelectedNode = null;
117119
}
118120

119-
public HashSet<string> GetCollapsedFolders()
121+
public IEnumerable<string> GetCollapsedFolders()
120122
{
121-
var collapsedFoldersEnumerable = folders.Where(pair => pair.Value.IsCollapsed).Select(pair => pair.Key);
122-
return new HashSet<string>(collapsedFoldersEnumerable);
123+
return folders.Where(pair => pair.Value.IsCollapsed).Select(pair => pair.Key);
124+
}
125+
126+
public IEnumerable<string> GetCheckedFiles()
127+
{
128+
return checkedFileNodes.Where(pair => pair.Value.CheckState == CheckState.Checked).Select(pair => pair.Key);
123129
}
124130

125131
public Rect Render(Rect containingRect, Rect rect, Vector2 scroll, Action<TreeNode> singleClick = null, Action<TreeNode> doubleClick = null, Action<TreeNode> rightClick = null)
@@ -270,6 +276,13 @@ private void ToggleNodeChecked(int idx, TreeNode node)
270276
{
271277
ToggleChildrenChecked(idx, node, isChecked);
272278
}
279+
else
280+
{
281+
if (isChecked)
282+
{
283+
checkedFileNodes.Add(node.Path, node);
284+
}
285+
}
273286

274287
ToggleParentFoldersChecked(idx, node, isChecked);
275288
}
@@ -290,6 +303,13 @@ private void ToggleChildrenChecked(int idx, TreeNode node, bool isChecked)
290303
{
291304
ToggleChildrenChecked(i, childNode, isChecked);
292305
}
306+
else
307+
{
308+
if (isChecked)
309+
{
310+
checkedFileNodes.Add(node.Path, node);
311+
}
312+
}
293313
}
294314
}
295315

0 commit comments

Comments
 (0)