diff --git a/Terminal.Gui/Views/TreeView.cs b/Terminal.Gui/Views/TreeView.cs
index 936c07dd5..2079a484f 100644
--- a/Terminal.Gui/Views/TreeView.cs
+++ b/Terminal.Gui/Views/TreeView.cs
@@ -763,7 +763,7 @@ namespace Terminal.Gui {
///
public virtual void Draw(ConsoleDriver driver,ColorScheme colorScheme, int y, int availableWidth)
{
- driver.SetAttribute(tree.SelectedObject == Model ?
+ driver.SetAttribute(tree.SelectedObject == Model && tree.HasFocus?
colorScheme.HotFocus :
colorScheme.Normal);
diff --git a/UICatalog/Scenarios/TreeViewFileSystem.cs b/UICatalog/Scenarios/TreeViewFileSystem.cs
index 94d3152be..8665fdd99 100644
--- a/UICatalog/Scenarios/TreeViewFileSystem.cs
+++ b/UICatalog/Scenarios/TreeViewFileSystem.cs
@@ -17,18 +17,13 @@ namespace UICatalog.Scenarios {
///
/// A tree view where nodes are files and folders
///
- TreeView _treeViewFiles;
+ TreeView treeViewFiles;
///
/// A tree view where nodes are
///
- TreeView _treeViewNodes;
+ TreeView treeViewNodes;
- ///
- /// Currently showing tree view (either or )
- ///
- ITreeView _treeView;
-
public override void Setup ()
{
Win.Title = this.GetName();
@@ -48,23 +43,58 @@ namespace UICatalog.Scenarios {
Top.Add (menu);
var statusBar = new StatusBar (new StatusItem [] {
- new StatusItem(Key.F2, "~F2~ File Tree", () => SwitchToFileTree()),
- new StatusItem(Key.F3, "~F3~ Clear Objects", () => ClearObjects()),
- new StatusItem(Key.F4, "~F4~ Simple Tree", () => SwitchToSimpleTree()),
new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
});
Top.Add (statusBar);
+ var lblFiles = new Label("File Tree:"){
+ X=0,
+ Y=1
+ };
+ Win.Add(lblFiles);
- _treeViewFiles = new TreeView () {
+ treeViewFiles = new TreeView () {
X = 0,
- Y = 0,
+ Y = Pos.Bottom(lblFiles),
+ Width = 40,
+ Height = 9,
+ };
+
+ SetupFileTree();
+
+ Win.Add(treeViewFiles);
+
+ var lblNodeTree = new Label("Node Tree:"){
+ X=0,
+ Y=Pos.Bottom(treeViewFiles)+1
+ };
+
+ Win.Add(lblNodeTree);
+
+ treeViewNodes = new TreeView() {
+ X = 0,
+ Y = Pos.Bottom(lblNodeTree),
Width = Dim.Fill (),
Height = Dim.Fill (),
};
+
+ SetupNodeTree();
+
+ Win.Add(treeViewNodes);
+ }
+
+ private void SetupNodeTree ()
+ {
+ // Add 2 root nodes with simple set of subfolders
+ treeViewNodes.AddObject(CreateSimpleRoot());
+ treeViewNodes.AddObject(CreateSimpleRoot());
+ }
+
+ private void SetupFileTree ()
+ {
// setup delegates
- _treeViewFiles.TreeBuilder = new DelegateTreeBuilder(
+ treeViewFiles.TreeBuilder = new DelegateTreeBuilder(
// Determines how to compute children of any given branch
GetChildren,
@@ -73,53 +103,31 @@ namespace UICatalog.Scenarios {
);
// Determines how to represent objects as strings on the screen
- _treeViewFiles.AspectGetter = FileSystemAspectGetter;
+ treeViewFiles.AspectGetter = FileSystemAspectGetter;
- _treeViewNodes = new TreeView() {
- X = 0,
- Y = 0,
- Width = Dim.Fill (),
- Height = Dim.Fill (),
- };
- string root = System.IO.Path.GetPathRoot(Environment.CurrentDirectory);
-
- if(root == null)
- {
- MessageBox.ErrorQuery(10,5,"Error","Unable to determine file system root","ok");
- return;
- }
+ treeViewFiles.AddObjects(DriveInfo.GetDrives().Select(d=>d.RootDirectory));
}
-
private void ShowLines ()
{
- _treeView.ShowBranchLines = !_treeView.ShowBranchLines;
- _treeView.SetNeedsDisplay();
+ treeViewNodes.ShowBranchLines = !treeViewNodes.ShowBranchLines;
+ treeViewNodes.SetNeedsDisplay();
+
+ treeViewFiles.ShowBranchLines = !treeViewFiles.ShowBranchLines;
+ treeViewFiles.SetNeedsDisplay();
}
private void ShowExpandableSymbol ()
{
- _treeView.ShowExpandableSymbol = !_treeView.ShowExpandableSymbol;
- _treeView.SetNeedsDisplay();
+ treeViewNodes.ShowExpandableSymbol = !treeViewNodes.ShowExpandableSymbol;
+ treeViewNodes.SetNeedsDisplay();
+
+ treeViewFiles.ShowExpandableSymbol = !treeViewFiles.ShowExpandableSymbol;
+ treeViewFiles.SetNeedsDisplay();
}
- private void SwitchToSimpleTree ()
- {
- Win.Remove (_treeViewFiles);
- Win.Add(_treeViewNodes);
- _treeView = _treeViewNodes;
-
- ClearObjects();
-
- // Add 2 root nodes with simple set of subfolders
- _treeViewNodes.AddObject(CreateSimpleRoot());
- _treeViewNodes.AddObject(CreateSimpleRoot());
-
- }
-
private ITreeNode CreateSimpleRoot ()
{
-
return new TreeNode("Root"){
Children = new List()
{
@@ -178,22 +186,6 @@ namespace UICatalog.Scenarios {
};
}
- private void ClearObjects()
- {
- _treeView?.ClearObjects();
- }
- private void SwitchToFileTree()
- {
- // switch trees
- Win.Remove(_treeViewNodes);
- Win.Add (_treeViewFiles);
- _treeView = _treeViewFiles;
-
- ClearObjects();
-
- _treeViewFiles.AddObjects(DriveInfo.GetDrives().Select(d=>d.RootDirectory));
- }
-
private IEnumerable GetChildren(FileSystemInfo model)
{
// If it is a directory it's children are all contained files and dirs