Explorar o código

Updated to match coding guidelines (whitespace, brackets etc)

tznind %!s(int64=4) %!d(string=hai) anos
pai
achega
dc22a890e9

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 226 - 236
Terminal.Gui/Views/TreeView.cs


+ 102 - 95
UICatalog/Scenarios/ClassExplorer.cs

@@ -30,8 +30,8 @@ namespace UICatalog.Scenarios {
 				Type = type;
 			}
 
-			public Type Type {get;set;}
-			public Showable ToShow {get;set;}
+			public Type Type { get; set; }
+			public Showable ToShow { get; set; }
 
 			// Make sure to implement Equals methods on your objects if you intend to return new instances every time in ChildGetter
 			public override bool Equals (object obj)
@@ -48,17 +48,17 @@ namespace UICatalog.Scenarios {
 
 			public override string ToString ()
 			{
-				return ToShow.ToString();
+				return ToShow.ToString ();
 			}
 		}
 
 		public override void Setup ()
 		{
-			Win.Title = this.GetName();
+			Win.Title = this.GetName ();
 			Win.Y = 1; // menu
 			Win.Height = Dim.Fill (1); // status bar
-			Top.LayoutSubviews();
-						
+			Top.LayoutSubviews ();
+
 			var menu = new MenuBar (new MenuBarItem [] {
 				new MenuBarItem ("_File", new MenuItem [] {
 					new MenuItem ("_Quit", "", () => Quit()),
@@ -77,115 +77,116 @@ namespace UICatalog.Scenarios {
 			treeView = new TreeView<object> () {
 				X = 0,
 				Y = 0,
-				Width = Dim.Percent(50),
-				Height = Dim.Fill(),
+				Width = Dim.Percent (50),
+				Height = Dim.Fill (),
 			};
 
 
-			treeView.AddObjects(AppDomain.CurrentDomain.GetAssemblies());
+			treeView.AddObjects (AppDomain.CurrentDomain.GetAssemblies ());
 			treeView.AspectGetter = GetRepresentation;
-			treeView.TreeBuilder = new DelegateTreeBuilder<object>(ChildGetter,CanExpand);
+			treeView.TreeBuilder = new DelegateTreeBuilder<object> (ChildGetter, CanExpand);
 			treeView.SelectionChanged += TreeView_SelectionChanged;
 
-			Win.Add(treeView);
+			Win.Add (treeView);
 
-			textView = new TextView (){
-				X = Pos.Right(treeView),
+			textView = new TextView () {
+				X = Pos.Right (treeView),
 				Y = 0,
-				Width = Dim.Fill(),
-				Height = Dim.Fill()
-				};
+				Width = Dim.Fill (),
+				Height = Dim.Fill ()
+			};
 
-			Win.Add(textView);
+			Win.Add (textView);
 		}
 
 		private void ShowPrivate ()
 		{
 			miShowPrivate.Checked = !miShowPrivate.Checked;
-			treeView.RebuildTree();
-			treeView.SetFocus();
+			treeView.RebuildTree ();
+			treeView.SetFocus ();
 		}
 
-		private BindingFlags GetFlags()
+		private BindingFlags GetFlags ()
 		{
-			if(miShowPrivate.Checked)
+			if (miShowPrivate.Checked) {
 				return BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
-			
+			}
+
 			return BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public;
 		}
 
 		private void TreeView_SelectionChanged (object sender, SelectionChangedEventArgs<object> e)
 		{
 			var val = e.NewValue;
-			var all = treeView.GetAllSelectedObjects().ToArray();
+			var all = treeView.GetAllSelectedObjects ().ToArray ();
 
-			if(val == null || val is ShowForType)
+			if (val == null || val is ShowForType) {
 				return;
+			}
+
 			try {
-				
-				if(all.Length > 1){
 
-					textView.Text = all.Length  + " Objects";
-				}
-				else
-				{
-					StringBuilder sb = new StringBuilder();
+				if (all.Length > 1) {
+
+					textView.Text = all.Length + " Objects";
+				} else {
+					StringBuilder sb = new StringBuilder ();
 
 					// tell the user about the currently selected tree node
-					sb.AppendLine(e.NewValue.GetType().Name);
-					
-					if(val is Assembly ass) {
-						sb.AppendLine($"Location:{ass.Location}");
-						sb.AppendLine($"FullName:{ass.FullName}");
+					sb.AppendLine (e.NewValue.GetType ().Name);
+
+					if (val is Assembly ass) {
+						sb.AppendLine ($"Location:{ass.Location}");
+						sb.AppendLine ($"FullName:{ass.FullName}");
 					}
 
-					if(val is PropertyInfo p) {
-						sb.AppendLine($"Name:{p.Name}");
-						sb.AppendLine($"Type:{p.PropertyType}");
-						sb.AppendLine($"CanWrite:{p.CanWrite}");
-						sb.AppendLine($"CanRead:{p.CanRead}");
+					if (val is PropertyInfo p) {
+						sb.AppendLine ($"Name:{p.Name}");
+						sb.AppendLine ($"Type:{p.PropertyType}");
+						sb.AppendLine ($"CanWrite:{p.CanWrite}");
+						sb.AppendLine ($"CanRead:{p.CanRead}");
 					}
-				
-					if(val is FieldInfo f) {
-						sb.AppendLine($"Name:{f.Name}");
-						sb.AppendLine($"Type:{f.FieldType}");
+
+					if (val is FieldInfo f) {
+						sb.AppendLine ($"Name:{f.Name}");
+						sb.AppendLine ($"Type:{f.FieldType}");
 					}
-							
-					if(val is EventInfo ev) {
-						sb.AppendLine($"Name:{ev.Name}");
-						sb.AppendLine($"Parameters:");
-						foreach(var parameter in ev.EventHandlerType.GetMethod("Invoke").GetParameters()) {
-							sb.AppendLine($"  {parameter.ParameterType} {parameter.Name}");
+
+					if (val is EventInfo ev) {
+						sb.AppendLine ($"Name:{ev.Name}");
+						sb.AppendLine ($"Parameters:");
+						foreach (var parameter in ev.EventHandlerType.GetMethod ("Invoke").GetParameters ()) {
+							sb.AppendLine ($"  {parameter.ParameterType} {parameter.Name}");
 						}
 					}
-						
-					if(val is MethodInfo method) {
-						sb.AppendLine($"Name:{method.Name}");
-						sb.AppendLine($"IsPublic:{method.IsPublic}");
-						sb.AppendLine($"IsStatic:{method.IsStatic}");
-						sb.AppendLine($"Parameters:{(method.GetParameters().Any() ? "":"None")}");
-						foreach(var parameter in method.GetParameters()) {
-							sb.AppendLine($"  {parameter.ParameterType} {parameter.Name}");
+
+					if (val is MethodInfo method) {
+						sb.AppendLine ($"Name:{method.Name}");
+						sb.AppendLine ($"IsPublic:{method.IsPublic}");
+						sb.AppendLine ($"IsStatic:{method.IsStatic}");
+						sb.AppendLine ($"Parameters:{(method.GetParameters ().Any () ? "" : "None")}");
+						foreach (var parameter in method.GetParameters ()) {
+							sb.AppendLine ($"  {parameter.ParameterType} {parameter.Name}");
 						}
 					}
-				
-						
-					if(val is ConstructorInfo ctor) {
-						sb.AppendLine($"Name:{ctor.Name}");
-						sb.AppendLine($"Parameters:{(ctor.GetParameters().Any() ? "":"None")}");
-						foreach(var parameter in ctor.GetParameters()) {
-							sb.AppendLine($"  {parameter.ParameterType} {parameter.Name}");
+
+
+					if (val is ConstructorInfo ctor) {
+						sb.AppendLine ($"Name:{ctor.Name}");
+						sb.AppendLine ($"Parameters:{(ctor.GetParameters ().Any () ? "" : "None")}");
+						foreach (var parameter in ctor.GetParameters ()) {
+							sb.AppendLine ($"  {parameter.ParameterType} {parameter.Name}");
 						}
 					}
 
-					textView.Text = sb.ToString().Replace("\r\n","\n");
+					textView.Text = sb.ToString ().Replace ("\r\n", "\n");
 				}
-								
+
 			} catch (Exception ex) {
 
 				textView.Text = ex.Message;
 			}
-			textView.SetNeedsDisplay();
+			textView.SetNeedsDisplay ();
 		}
 
 		private bool CanExpand (object arg)
@@ -196,52 +197,58 @@ namespace UICatalog.Scenarios {
 		private IEnumerable<object> ChildGetter (object arg)
 		{
 			try {
-				if(arg is Assembly a) {
-					return a.GetTypes();
+				if (arg is Assembly a) {
+					return a.GetTypes ();
 				}
 
-				if(arg is Type t) {
+				if (arg is Type t) {
 					// Note that here we cannot simply return the enum values as the same object cannot appear under multiple branches
-					return Enum.GetValues(typeof(Showable))
-						.Cast<Showable>()
+					return Enum.GetValues (typeof (Showable))
+						.Cast<Showable> ()
 						// Although we new the Type every time the delegate is called state is preserved because the class has appropriate equality members
-						.Select(v=>new ShowForType(v,t));
+						.Select (v => new ShowForType (v, t));
 				}
 
-				if(arg is ShowForType show) {
-					switch(show.ToShow) {
-						case Showable.Properties:
-							return show.Type.GetProperties(GetFlags());
-						case Showable.Constructors:
-							return show.Type.GetConstructors(GetFlags());
-						case Showable.Events:
-							return show.Type.GetEvents(GetFlags());
-						case Showable.Fields:
-							return show.Type.GetFields(GetFlags());
-						case Showable.Methods:
-							return show.Type.GetMethods(GetFlags());
+				if (arg is ShowForType show) {
+					switch (show.ToShow) {
+					case Showable.Properties:
+						return show.Type.GetProperties (GetFlags ());
+					case Showable.Constructors:
+						return show.Type.GetConstructors (GetFlags ());
+					case Showable.Events:
+						return show.Type.GetEvents (GetFlags ());
+					case Showable.Fields:
+						return show.Type.GetFields (GetFlags ());
+					case Showable.Methods:
+						return show.Type.GetMethods (GetFlags ());
 					}
 				}
 
 			} catch (Exception) {
-				return Enumerable.Empty<object>();
+				return Enumerable.Empty<object> ();
 			}
-			return Enumerable.Empty<object>();
+			return Enumerable.Empty<object> ();
 		}
 
 		private string GetRepresentation (object model)
 		{
 			try {
-				if(model is Assembly ass) {
-					return ass.GetName().Name;
+				if (model is Assembly ass) {
+					return ass.GetName ().Name;
 				}
 
-				if(model is PropertyInfo p)
+				if (model is PropertyInfo p) {
 					return p.Name;
-				if(model is FieldInfo f)
+				}
+
+				if (model is FieldInfo f) {
 					return f.Name;
-				if(model is EventInfo ei)
+				}
+
+				if (model is EventInfo ei) {
 					return ei.Name;
+				}
+
 
 
 			} catch (Exception ex) {
@@ -249,7 +256,7 @@ namespace UICatalog.Scenarios {
 				return ex.Message;
 			}
 
-			return model.ToString();
+			return model.ToString ();
 		}
 		private void Quit ()
 		{

+ 47 - 48
UICatalog/Scenarios/InteractiveTree.cs

@@ -10,33 +10,33 @@ namespace UICatalog.Scenarios {
 
 	[ScenarioMetadata (Name: "Interactive Tree", Description: "Create nodes and child nodes in TreeView")]
 	[ScenarioCategory ("Controls")]
-	class InteractiveTree : Scenario{
+	class InteractiveTree : Scenario {
 
 		TreeView treeView;
 
 		public override void Setup ()
 		{
-			Win.Title = this.GetName();
+			Win.Title = this.GetName ();
 			Win.Y = 1; // menu
 			Win.Height = Dim.Fill (1); // status bar
 			Top.LayoutSubviews ();
-			
+
 			var menu = new MenuBar (new MenuBarItem [] {
 				new MenuBarItem ("_File", new MenuItem [] {
 					new MenuItem ("_Quit", "", () => Quit()),
-				}) 
+				})
 				});
-			Top.Add(menu);
-			
-			treeView = new TreeView() {
+			Top.Add (menu);
+
+			treeView = new TreeView () {
 				X = 0,
 				Y = 0,
-				Width = Dim.Fill(),
-				Height = Dim.Fill(1),
+				Width = Dim.Fill (),
+				Height = Dim.Fill (1),
 			};
 			treeView.KeyPress += TreeView_KeyPress;
-			
-			Win.Add(treeView);
+
+			Win.Add (treeView);
 
 			var statusBar = new StatusBar (new StatusItem [] {
 				new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
@@ -50,30 +50,30 @@ namespace UICatalog.Scenarios {
 
 		private void TreeView_KeyPress (View.KeyEventEventArgs obj)
 		{
-			if(obj.KeyEvent.Key == Key.DeleteChar) {
+			if (obj.KeyEvent.Key == Key.DeleteChar) {
 
 				var toDelete = treeView.SelectedObject;
 
-				if(toDelete == null)
+				if (toDelete == null) {
 					return;
-				
+				}
+
 				obj.Handled = true;
 
 				// if it is a root object remove it
-				if(treeView.Objects.Contains(toDelete)) {
-					treeView.Remove(toDelete);
-				}
-				else {
-					var parent = treeView.GetParent(toDelete);
-
-					if(parent == null)
-						MessageBox.ErrorQuery("Could not delete",$"Parent of '{toDelete}' was unexpectedly null","Ok");
-					else {
+				if (treeView.Objects.Contains (toDelete)) {
+					treeView.Remove (toDelete);
+				} else {
+					var parent = treeView.GetParent (toDelete);
+
+					if (parent == null) {
+						MessageBox.ErrorQuery ("Could not delete", $"Parent of '{toDelete}' was unexpectedly null", "Ok");
+					} else {
 						//update the model
-						parent.Children.Remove(toDelete);
+						parent.Children.Remove (toDelete);
 
 						//refresh the tree
-						treeView.RefreshObject(parent);
+						treeView.RefreshObject (parent);
 					}
 				}
 			}
@@ -83,34 +83,34 @@ namespace UICatalog.Scenarios {
 		{
 			var node = treeView.SelectedObject;
 
-			if(node != null) {
-				if(GetText("Text","Enter text for node:",node.Text,out string entered)) {
+			if (node != null) {
+				if (GetText ("Text", "Enter text for node:", node.Text, out string entered)) {
 					node.Text = entered;
-					treeView.RefreshObject(node);
+					treeView.RefreshObject (node);
 				}
 			}
 		}
 
 		private void AddRootNode ()
 		{
-			if(GetText("Text","Enter text for node:","",out string entered)) {
-				treeView.AddObject(new TreeNode(entered));
+			if (GetText ("Text", "Enter text for node:", "", out string entered)) {
+				treeView.AddObject (new TreeNode (entered));
 			}
 		}
 
-		private void AddChildNode()
+		private void AddChildNode ()
 		{
 			var node = treeView.SelectedObject;
 
-			if(node != null) {
-				if(GetText("Text","Enter text for node:","",out string entered)) {
-					node.Children.Add(new TreeNode(entered));
-					treeView.RefreshObject(node);
+			if (node != null) {
+				if (GetText ("Text", "Enter text for node:", "", out string entered)) {
+					node.Children.Add (new TreeNode (entered));
+					treeView.RefreshObject (node);
 				}
 			}
 		}
 
-		private bool GetText(string title, string label, string initialText, out string enteredText)
+		private bool GetText (string title, string label, string initialText, out string enteredText)
 		{
 			bool okPressed = false;
 
@@ -120,26 +120,25 @@ namespace UICatalog.Scenarios {
 			cancel.Clicked += () => { Application.RequestStop (); };
 			var d = new Dialog (title, 60, 20, ok, cancel);
 
-			var lbl = new Label() {
+			var lbl = new Label () {
 				X = 0,
 				Y = 1,
 				Text = label
 			};
 
-			var tf = new TextField()
-				{
-					Text = initialText,
-					X = 0,
-					Y = 2,
-					Width = Dim.Fill()
-				};
-			
-			d.Add (lbl,tf);
-			tf.SetFocus();
+			var tf = new TextField () {
+				Text = initialText,
+				X = 0,
+				Y = 2,
+				Width = Dim.Fill ()
+			};
+
+			d.Add (lbl, tf);
+			tf.SetFocus ();
 
 			Application.Run (d);
 
-			enteredText = okPressed? tf.Text.ToString() : null;
+			enteredText = okPressed ? tf.Text.ToString () : null;
 			return okPressed;
 		}
 

+ 99 - 101
UICatalog/Scenarios/TreeUseCases.cs

@@ -9,15 +9,15 @@ namespace UICatalog.Scenarios {
 	[ScenarioCategory ("Controls")]
 	class TreeUseCases : Scenario {
 
-        View currentTree;
+		View currentTree;
 
-	    public override void Setup ()
+		public override void Setup ()
 		{
-			Win.Title = this.GetName();
+			Win.Title = this.GetName ();
 			Win.Y = 1; // menu
 			Win.Height = Dim.Fill (1); // status bar
 			Top.LayoutSubviews ();
-			
+
 			var menu = new MenuBar (new MenuBarItem [] {
 				new MenuBarItem ("_File", new MenuItem [] {
 					new MenuItem ("_Quit", "", () => Quit()),
@@ -29,8 +29,8 @@ namespace UICatalog.Scenarios {
 					new MenuItem ("_Armies With Delegate", "", () => LoadArmies(true)),
 				}),
 			});
-			
-            Top.Add (menu);
+
+			Top.Add (menu);
 
 			var statusBar = new StatusBar (new StatusItem [] {
 				new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
@@ -38,85 +38,82 @@ namespace UICatalog.Scenarios {
 
 			Top.Add (statusBar);
 
-            // Start with the most basic use case
-            LoadSimpleNodes();
-        }
+			// Start with the most basic use case
+			LoadSimpleNodes ();
+		}
 
-        // Your data class
+		// Your data class
 		private class House : TreeNode {
 
-            // Your properties
-            public string Address {get;set;}
-            public List<Room> Rooms {get;set;}
+			// Your properties
+			public string Address { get; set; }
+			public List<Room> Rooms { get; set; }
 
-            // ITreeNode member:
-			public override IList<ITreeNode> Children => Rooms.Cast<ITreeNode>().ToList();
+			// ITreeNode member:
+			public override IList<ITreeNode> Children => Rooms.Cast<ITreeNode> ().ToList ();
 
 			public override string Text { get => Address; set => Address = value; }
 		}
-		private class Room : TreeNode{
-            
-            public string Name {get;set;}
+		private class Room : TreeNode {
 
-			public override string Text{get=>Name;set{Name=value;}}
-        }
+			public string Name { get; set; }
 
-		private void LoadRooms()
+			public override string Text { get => Name; set { Name = value; } }
+		}
+
+		private void LoadRooms ()
 		{
-            var myHouse = new House()
-            {
-                Address = "23 Nowhere Street",
-                Rooms = new List<Room>{
-                    new Room(){Name = "Ballroom"},
-                    new Room(){Name = "Bedroom 1"},
-                    new Room(){Name = "Bedroom 2"}
-                }
-            };
-
-            if(currentTree != null)
-                Win.Remove(currentTree);
-
-			var tree = new TreeView()
-			{
-                X = 0,
-                Y = 0,
+			var myHouse = new House () {
+				Address = "23 Nowhere Street",
+				Rooms = new List<Room>{
+		    new Room(){Name = "Ballroom"},
+		    new Room(){Name = "Bedroom 1"},
+		    new Room(){Name = "Bedroom 2"}
+		}
+			};
+
+			if (currentTree != null) {
+				Win.Remove (currentTree);
+			}
+
+
+			var tree = new TreeView () {
+				X = 0,
+				Y = 0,
 				Width = 40,
 				Height = 20
 			};
 
-            Win.Add(tree);
+			Win.Add (tree);
 
-            tree.AddObject(myHouse);
+			tree.AddObject (myHouse);
 
-            currentTree = tree;
+			currentTree = tree;
 		}
 
 
 
-        private abstract class GameObject
-        {
+		private abstract class GameObject {
 
-        }
-        private class Army : GameObject
-        {
-            public string Designation {get;set;}
-            public List<Unit> Units {get;set;}
+		}
+		private class Army : GameObject {
+			public string Designation { get; set; }
+			public List<Unit> Units { get; set; }
 
 
 			public override string ToString ()
 			{
 				return Designation;
 			}
-        }
+		}
 
-        private class Unit : GameObject
-        {
-            public string Name {get;set;}
+		private class Unit : GameObject {
+			public string Name { get; set; }
 			public override string ToString ()
 			{
 				return Name;
 			}
-        }
+		}
 
 		private class GameObjectTreeBuilder : ITreeBuilder<GameObject> {
 			public bool SupportsCanExpand => true;
@@ -128,49 +125,49 @@ namespace UICatalog.Scenarios {
 
 			public IEnumerable<GameObject> GetChildren (GameObject model)
 			{
-                if(model is Army a)
-                    return a.Units;
+				if (model is Army a) {
+					return a.Units;
+				}
 
-				return Enumerable.Empty<GameObject>();
+				return Enumerable.Empty<GameObject> ();
 			}
 		}
 
 
-		private void LoadArmies(bool useDelegate)
+		private void LoadArmies (bool useDelegate)
 		{
-            var army1 = new Army()
-            {
-                Designation = "3rd Infantry",
-                Units = new List<Unit>{
-                    new Unit(){Name = "Orc"},
-                    new Unit(){Name = "Troll"},
-                    new Unit(){Name = "Goblin"},
-                }
-            };
-
-            if(currentTree != null)
-                Win.Remove(currentTree);
-
-			var tree = new TreeView<GameObject>()
-			{
-                X = 0,
-                Y = 0,
+			var army1 = new Army () {
+				Designation = "3rd Infantry",
+				Units = new List<Unit>{
+		    new Unit(){Name = "Orc"},
+		    new Unit(){Name = "Troll"},
+		    new Unit(){Name = "Goblin"},
+		}
+			};
+
+			if (currentTree != null) {
+				Win.Remove (currentTree);
+			}
+
+
+			var tree = new TreeView<GameObject> () {
+				X = 0,
+				Y = 0,
 				Width = 40,
 				Height = 20
 			};
 
-            if(useDelegate){
-                tree.TreeBuilder = new DelegateTreeBuilder<GameObject>((o)=>o is Army a ? a.Units : Enumerable.Empty<GameObject>());
-            }
-            else{
-                tree.TreeBuilder = new GameObjectTreeBuilder();
-            }
+			if (useDelegate) {
+				tree.TreeBuilder = new DelegateTreeBuilder<GameObject> ((o) => o is Army a ? a.Units : Enumerable.Empty<GameObject> ());
+			} else {
+				tree.TreeBuilder = new GameObjectTreeBuilder ();
+			}
 
-            Win.Add(tree);
+			Win.Add (tree);
 
-            tree.AddObject(army1);
+			tree.AddObject (army1);
 
-            currentTree = tree;
+			currentTree = tree;
 		}
 
 		private void Quit ()
@@ -178,33 +175,34 @@ namespace UICatalog.Scenarios {
 			Application.RequestStop ();
 		}
 
-		private void LoadSimpleNodes()
+		private void LoadSimpleNodes ()
 		{
-            if(currentTree != null)
-                Win.Remove(currentTree);
+			if (currentTree != null) {
+				Win.Remove (currentTree);
+			}
 
-			var tree = new TreeView()
-			{
-                X = 0,
-                Y = 0,
+
+			var tree = new TreeView () {
+				X = 0,
+				Y = 0,
 				Width = 40,
 				Height = 20
 			};
 
-            Win.Add(tree);
+			Win.Add (tree);
+
+			var root1 = new TreeNode ("Root1");
+			root1.Children.Add (new TreeNode ("Child1.1"));
+			root1.Children.Add (new TreeNode ("Child1.2"));
 
-			var root1 = new TreeNode("Root1");
-			root1.Children.Add(new TreeNode("Child1.1"));
-			root1.Children.Add(new TreeNode("Child1.2"));
+			var root2 = new TreeNode ("Root2");
+			root2.Children.Add (new TreeNode ("Child2.1"));
+			root2.Children.Add (new TreeNode ("Child2.2"));
 
-			var root2 = new TreeNode("Root2");
-			root2.Children.Add(new TreeNode("Child2.1"));
-			root2.Children.Add(new TreeNode("Child2.2"));
-		
-			tree.AddObject(root1);
-			tree.AddObject(root2);
+			tree.AddObject (root1);
+			tree.AddObject (root2);
 
-            currentTree = tree;
+			currentTree = tree;
 
 		}
 	}

+ 57 - 54
UICatalog/Scenarios/TreeViewFileSystem.cs

@@ -28,11 +28,11 @@ namespace UICatalog.Scenarios {
 
 		public override void Setup ()
 		{
-			Win.Title = this.GetName();
+			Win.Title = this.GetName ();
 			Win.Y = 1; // menu
 			Win.Height = Dim.Fill (1); // status bar
 			Top.LayoutSubviews ();
-			
+
 			var menu = new MenuBar (new MenuBarItem [] {
 				new MenuBarItem ("_File", new MenuItem [] {
 					new MenuItem ("_Quit", "", () => Quit()),
@@ -60,26 +60,26 @@ namespace UICatalog.Scenarios {
 			});
 			Top.Add (statusBar);
 
-			var lblFiles = new Label("File Tree:"){
-				X=0,
-				Y=1
+			var lblFiles = new Label ("File Tree:") {
+				X = 0,
+				Y = 1
 			};
-			Win.Add(lblFiles);
+			Win.Add (lblFiles);
 
 			treeViewFiles = new TreeView<FileSystemInfo> () {
 				X = 0,
-				Y = Pos.Bottom(lblFiles),
-				Width = Dim.Fill(),
-				Height = Dim.Fill(),
+				Y = Pos.Bottom (lblFiles),
+				Width = Dim.Fill (),
+				Height = Dim.Fill (),
 			};
-			
-			SetupFileTree();
-
-			Win.Add(treeViewFiles);
-			
-			SetupScrollBar();
-						
-			green = Application.Driver.MakeAttribute (Color.Green, Color.Blue);			
+
+			SetupFileTree ();
+
+			Win.Add (treeViewFiles);
+
+			SetupScrollBar ();
+
+			green = Application.Driver.MakeAttribute (Color.Green, Color.Blue);
 			red = Application.Driver.MakeAttribute (Color.Red, Color.Blue);
 		}
 
@@ -97,7 +97,7 @@ namespace UICatalog.Scenarios {
 				}
 				treeViewFiles.SetNeedsDisplay ();
 			};
-			
+
 			_scrollBar.OtherScrollBarView.ChangedPosition += () => {
 				treeViewFiles.ScrollOffsetHorizontal = _scrollBar.OtherScrollBarView.Position;
 				if (treeViewFiles.ScrollOffsetHorizontal != _scrollBar.OtherScrollBarView.Position) {
@@ -105,11 +105,11 @@ namespace UICatalog.Scenarios {
 				}
 				treeViewFiles.SetNeedsDisplay ();
 			};
-			
+
 			treeViewFiles.DrawContent += (e) => {
 				_scrollBar.Size = treeViewFiles.ContentHeight;
 				_scrollBar.Position = treeViewFiles.ScrollOffsetVertical;
-				_scrollBar.OtherScrollBarView.Size = treeViewFiles.GetContentWidth(true);
+				_scrollBar.OtherScrollBarView.Size = treeViewFiles.GetContentWidth (true);
 				_scrollBar.OtherScrollBarView.Position = treeViewFiles.ScrollOffsetHorizontal;
 				_scrollBar.Refresh ();
 			};
@@ -117,20 +117,20 @@ namespace UICatalog.Scenarios {
 
 		private void SetupFileTree ()
 		{
-			
+
 			// setup delegates
-			treeViewFiles.TreeBuilder = new DelegateTreeBuilder<FileSystemInfo>(
+			treeViewFiles.TreeBuilder = new DelegateTreeBuilder<FileSystemInfo> (
 
 				// Determines how to compute children of any given branch
 				GetChildren,
 				// As a shortcut to enumerating half the file system, tell tree that all directories are expandable (even if they turn out to be empty later on)				
-				(o)=>o is DirectoryInfo
+				(o) => o is DirectoryInfo
 			);
 
 			// Determines how to represent objects as strings on the screen
 			treeViewFiles.AspectGetter = FileSystemAspectGetter;
 
-			treeViewFiles.AddObjects(DriveInfo.GetDrives().Select(d=>d.RootDirectory));
+			treeViewFiles.AddObjects (DriveInfo.GetDrives ().Select (d => d.RootDirectory));
 		}
 
 		private void ShowLines ()
@@ -138,78 +138,81 @@ namespace UICatalog.Scenarios {
 			miShowLines.Checked = !miShowLines.Checked;
 
 			treeViewFiles.Style.ShowBranchLines = miShowLines.Checked;
-			treeViewFiles.SetNeedsDisplay();
+			treeViewFiles.SetNeedsDisplay ();
 		}
-		
-		private void SetExpandableSymbols(Rune? expand, Rune? collapse)
+
+		private void SetExpandableSymbols (Rune? expand, Rune? collapse)
 		{
 			miPlusMinus.Checked = expand == '+';
 			miArrowSymbols.Checked = expand == '>';
 			miNoSymbols.Checked = expand == null;
 			miUnicodeSymbols.Checked = expand == 'ஹ';
-						
+
 			treeViewFiles.Style.ExpandableSymbol = expand;
 			treeViewFiles.Style.CollapseableSymbol = collapse;
-			treeViewFiles.SetNeedsDisplay();
+			treeViewFiles.SetNeedsDisplay ();
 		}
-		private void ShowColoredExpandableSymbols()
+		private void ShowColoredExpandableSymbols ()
 		{
 			miColoredSymbols.Checked = !miColoredSymbols.Checked;
 
-			treeViewFiles.Style.ColorExpandSymbol =  miColoredSymbols.Checked;
-			treeViewFiles.SetNeedsDisplay();
+			treeViewFiles.Style.ColorExpandSymbol = miColoredSymbols.Checked;
+			treeViewFiles.SetNeedsDisplay ();
 		}
-		private void InvertExpandableSymbols(){
+		private void InvertExpandableSymbols ()
+		{
 			miInvertSymbols.Checked = !miInvertSymbols.Checked;
 
-			treeViewFiles.Style.InvertExpandSymbolColors =  miInvertSymbols.Checked;
-			treeViewFiles.SetNeedsDisplay();
+			treeViewFiles.Style.InvertExpandSymbolColors = miInvertSymbols.Checked;
+			treeViewFiles.SetNeedsDisplay ();
 		}
 
-		private void SetFullName()
+		private void SetFullName ()
 		{
 			miFullPaths.Checked = !miFullPaths.Checked;
 
-			if(miFullPaths.Checked)
-				treeViewFiles.AspectGetter = (f)=>f.FullName;
-			else
-				treeViewFiles.AspectGetter = (f)=>f.Name;
+			if (miFullPaths.Checked) {
+				treeViewFiles.AspectGetter = (f) => f.FullName;
+			} else {
+				treeViewFiles.AspectGetter = (f) => f.Name;
+			}
 		}
 
-		private void SetLeaveLastRow()
+		private void SetLeaveLastRow ()
 		{
 			miLeaveLastRow.Checked = !miLeaveLastRow.Checked;
 			treeViewFiles.Style.LeaveLastRow = miLeaveLastRow.Checked;
 		}
 
 
-		private IEnumerable<FileSystemInfo> GetChildren(FileSystemInfo model)
+		private IEnumerable<FileSystemInfo> GetChildren (FileSystemInfo model)
 		{
 			// If it is a directory it's children are all contained files and dirs
-			if(model is DirectoryInfo d) {
+			if (model is DirectoryInfo d) {
 				try {
-					return d.GetFileSystemInfos()
+					return d.GetFileSystemInfos ()
 						//show directories first
-						.OrderBy(a=>a is DirectoryInfo ? 0:1)
-						.ThenBy(b=>b.Name);
-				}
-				catch(SystemException) {
+						.OrderBy (a => a is DirectoryInfo ? 0 : 1)
+						.ThenBy (b => b.Name);
+				} catch (SystemException) {
 
 					// Access violation or other error getting the file list for directory
-					return Enumerable.Empty<FileSystemInfo>();
+					return Enumerable.Empty<FileSystemInfo> ();
 				}
 			}
 
-		    return Enumerable.Empty<FileSystemInfo>();;
+			return Enumerable.Empty<FileSystemInfo> (); ;
 		}
-		private string FileSystemAspectGetter(FileSystemInfo model)
+		private string FileSystemAspectGetter (FileSystemInfo model)
 		{
-			if(model is DirectoryInfo d)
+			if (model is DirectoryInfo d) {
 				return d.Name;
-			if(model is FileInfo f)
+			}
+			if (model is FileInfo f) {
 				return f.Name;
+			}
 
-			return model.ToString();
+			return model.ToString ();
 		}
 
 		private void Quit ()

+ 279 - 285
UnitTests/TreeViewTests.cs

@@ -7,196 +7,193 @@ using Terminal.Gui;
 using Xunit;
 
 namespace UnitTests {
-	public class TreeViewTests 
-	{
+	public class TreeViewTests {
 		#region Test Setup Methods
-		class Factory
-		{
-			public Car[] Cars {get;set;}
+		class Factory {
+			public Car [] Cars { get; set; }
 			public override string ToString ()
 			{
 				return "Factory";
 			}
 		};
 		class Car {
-			public string Name{get;set;}
+			public string Name { get; set; }
 			public override string ToString ()
 			{
 				return Name;
 			}
 		};
-		
-		private TreeView<object> CreateTree()
+
+		private TreeView<object> CreateTree ()
 		{
-			return CreateTree(out _, out _, out _);
+			return CreateTree (out _, out _, out _);
 		}
 
-		private TreeView<object> CreateTree(out Factory factory1, out Car car1, out Car car2)
+		private TreeView<object> CreateTree (out Factory factory1, out Car car1, out Car car2)
 		{
-			car1 = new Car();
-			car2 = new Car();
+			car1 = new Car ();
+			car2 = new Car ();
 
-			factory1 = new Factory()
-			{
-				Cars = new []{car1 ,car2}
+			factory1 = new Factory () {
+				Cars = new [] { car1, car2 }
 			};
-			
-			var tree = new TreeView<object>(new DelegateTreeBuilder<object>((s)=> s is Factory f ? f.Cars: null));
-			tree.AddObject(factory1);
+
+			var tree = new TreeView<object> (new DelegateTreeBuilder<object> ((s) => s is Factory f ? f.Cars : null));
+			tree.AddObject (factory1);
 
 			return tree;
 		}
 		#endregion
-		
+
 		/// <summary>
 		/// Tests that <see cref="TreeView.Expand(object)"/> and <see cref="TreeView.IsExpanded(object)"/> are consistent
 		/// </summary>
 		[Fact]
-		public void IsExpanded_TrueAfterExpand()
+		public void IsExpanded_TrueAfterExpand ()
 		{
-			var tree = CreateTree(out Factory f, out _, out _);
-			Assert.False(tree.IsExpanded(f));
+			var tree = CreateTree (out Factory f, out _, out _);
+			Assert.False (tree.IsExpanded (f));
 
-			tree.Expand(f);
-			Assert.True(tree.IsExpanded(f));
+			tree.Expand (f);
+			Assert.True (tree.IsExpanded (f));
 
-			tree.Collapse(f);
-			Assert.False(tree.IsExpanded(f));
+			tree.Collapse (f);
+			Assert.False (tree.IsExpanded (f));
 		}
 
 		[Fact]
-		public void EmptyTreeView_ContentSizes()
+		public void EmptyTreeView_ContentSizes ()
 		{
-			var emptyTree = new TreeView();
-			Assert.Equal(0,emptyTree.ContentHeight);
-			Assert.Equal(0,emptyTree.GetContentWidth(true));
-			Assert.Equal(0,emptyTree.GetContentWidth(false));
+			var emptyTree = new TreeView ();
+			Assert.Equal (0, emptyTree.ContentHeight);
+			Assert.Equal (0, emptyTree.GetContentWidth (true));
+			Assert.Equal (0, emptyTree.GetContentWidth (false));
 		}
 		[Fact]
-		public void EmptyTreeViewGeneric_ContentSizes()
+		public void EmptyTreeViewGeneric_ContentSizes ()
 		{
-			var emptyTree = new TreeView<string>();
-			Assert.Equal(0,emptyTree.ContentHeight);
-			Assert.Equal(0,emptyTree.GetContentWidth(true));
-			Assert.Equal(0,emptyTree.GetContentWidth(false));
+			var emptyTree = new TreeView<string> ();
+			Assert.Equal (0, emptyTree.ContentHeight);
+			Assert.Equal (0, emptyTree.GetContentWidth (true));
+			Assert.Equal (0, emptyTree.GetContentWidth (false));
 		}
-		
+
 		/// <summary>
 		/// Tests that <see cref="TreeView.Expand(object)"/> results in a correct content height
 		/// </summary>
 		[Fact]
-		public void ContentHeight_BiggerAfterExpand()
+		public void ContentHeight_BiggerAfterExpand ()
 		{
-			var tree = CreateTree(out Factory f, out _, out _);
-			Assert.Equal(1,tree.ContentHeight);
+			var tree = CreateTree (out Factory f, out _, out _);
+			Assert.Equal (1, tree.ContentHeight);
 
-			tree.Expand(f);
-			Assert.Equal(3,tree.ContentHeight);
+			tree.Expand (f);
+			Assert.Equal (3, tree.ContentHeight);
 
-			tree.Collapse(f);
-			Assert.Equal(1,tree.ContentHeight);
+			tree.Collapse (f);
+			Assert.Equal (1, tree.ContentHeight);
 		}
 
 		[Fact]
-		public void ContentWidth_BiggerAfterExpand()
+		public void ContentWidth_BiggerAfterExpand ()
 		{
-			var tree = CreateTree(out Factory f, out Car car1, out _);
-			tree.Bounds = new Rect(0,0,10,10);
-			
-			InitFakeDriver();
+			var tree = CreateTree (out Factory f, out Car car1, out _);
+			tree.Bounds = new Rect (0, 0, 10, 10);
+
+			InitFakeDriver ();
 
 			//-+Factory
-			Assert.Equal(9,tree.GetContentWidth(true));
+			Assert.Equal (9, tree.GetContentWidth (true));
 
 			car1.Name = "123456789";
 
-			tree.Expand(f);
+			tree.Expand (f);
 
 			//..├-123456789
-			Assert.Equal(13,tree.GetContentWidth(true));
+			Assert.Equal (13, tree.GetContentWidth (true));
 
-			tree.Collapse(f);
+			tree.Collapse (f);
 			//-+Factory
-			Assert.Equal(9,tree.GetContentWidth(true));
+			Assert.Equal (9, tree.GetContentWidth (true));
 		}
-		
+
 		[Fact]
-		public void ContentWidth_VisibleVsAll()
+		public void ContentWidth_VisibleVsAll ()
 		{
-			var tree = CreateTree(out Factory f, out Car car1, out Car car2);
+			var tree = CreateTree (out Factory f, out Car car1, out Car car2);
 			// control only allows 1 row to be viewed at once
-			tree.Bounds = new Rect(0,0,20,1);
-			
-			InitFakeDriver();
+			tree.Bounds = new Rect (0, 0, 20, 1);
+
+			InitFakeDriver ();
 
 			//-+Factory
-			Assert.Equal(9,tree.GetContentWidth(true));
-			Assert.Equal(9,tree.GetContentWidth(false));
+			Assert.Equal (9, tree.GetContentWidth (true));
+			Assert.Equal (9, tree.GetContentWidth (false));
 
 			car1.Name = "123456789";
 			car2.Name = "12345678";
 
-			tree.Expand(f);
-			
+			tree.Expand (f);
+
 			// Although expanded the bigger (longer) child node is not in the rendered area of the control
-			Assert.Equal(9,tree.GetContentWidth(true));
-			Assert.Equal(13,tree.GetContentWidth(false)); // If you ask for the global max width it includes the longer child
+			Assert.Equal (9, tree.GetContentWidth (true));
+			Assert.Equal (13, tree.GetContentWidth (false)); // If you ask for the global max width it includes the longer child
 
 			// Now that we have scrolled down 1 row we should see the big child
 			tree.ScrollOffsetVertical = 1;
-			Assert.Equal(13,tree.GetContentWidth(true));
-			Assert.Equal(13,tree.GetContentWidth(false));
-			
+			Assert.Equal (13, tree.GetContentWidth (true));
+			Assert.Equal (13, tree.GetContentWidth (false));
+
 			// Scroll down so only car2 is visible
 			tree.ScrollOffsetVertical = 2;
-			Assert.Equal(12,tree.GetContentWidth(true));
-			Assert.Equal(13,tree.GetContentWidth(false));
-			
+			Assert.Equal (12, tree.GetContentWidth (true));
+			Assert.Equal (13, tree.GetContentWidth (false));
+
 			// Scroll way down (off bottom of control even)
 			tree.ScrollOffsetVertical = 5;
-			Assert.Equal(0,tree.GetContentWidth(true));
-			Assert.Equal(13,tree.GetContentWidth(false));
+			Assert.Equal (0, tree.GetContentWidth (true));
+			Assert.Equal (13, tree.GetContentWidth (false));
 		}
 		/// <summary>
 		/// Tests that <see cref="TreeView.IsExpanded(object)"/> and <see cref="TreeView.Expand(object)"/> behaves correctly when an object cannot be expanded (because it has no children)
 		/// </summary>
 		[Fact]
-		public void IsExpanded_FalseIfCannotExpand()
+		public void IsExpanded_FalseIfCannotExpand ()
 		{
-			var tree = CreateTree(out Factory f, out Car c, out _);
-			
+			var tree = CreateTree (out Factory f, out Car c, out _);
+
 			// expose the car by expanding the factory
-			tree.Expand(f);
+			tree.Expand (f);
 
 			// car is not expanded
-			Assert.False(tree.IsExpanded(c));
+			Assert.False (tree.IsExpanded (c));
 
 			//try to expand the car (should have no effect because cars have no children)
-			tree.Expand(c);
-			
-			Assert.False(tree.IsExpanded(c));
+			tree.Expand (c);
+
+			Assert.False (tree.IsExpanded (c));
 
 			// should also be ignored
-			tree.Collapse(c);
+			tree.Collapse (c);
 
-			Assert.False(tree.IsExpanded(c));
+			Assert.False (tree.IsExpanded (c));
 		}
 
 		/// <summary>
 		/// Tests illegal ranges for <see cref="TreeView.ScrollOffset"/>
 		/// </summary>
 		[Fact]
-		public void ScrollOffset_CannotBeNegative()
+		public void ScrollOffset_CannotBeNegative ()
 		{
-			var tree = CreateTree();
+			var tree = CreateTree ();
 
-			Assert.Equal(0,tree.ScrollOffsetVertical);
+			Assert.Equal (0, tree.ScrollOffsetVertical);
 
 			tree.ScrollOffsetVertical = -100;
-			Assert.Equal(0,tree.ScrollOffsetVertical);
-			
+			Assert.Equal (0, tree.ScrollOffsetVertical);
+
 			tree.ScrollOffsetVertical = 10;
-			Assert.Equal(10,tree.ScrollOffsetVertical);
+			Assert.Equal (10, tree.ScrollOffsetVertical);
 		}
 
 
@@ -204,68 +201,68 @@ namespace UnitTests {
 		/// Tests <see cref="TreeView.GetScrollOffsetOf(object)"/> for objects that are as yet undiscovered by the tree
 		/// </summary>
 		[Fact]
-		public void GetScrollOffsetOf_MinusOneForUnRevealed()
+		public void GetScrollOffsetOf_MinusOneForUnRevealed ()
 		{
-			var tree = CreateTree(out Factory f, out Car c1, out Car c2);
-			
+			var tree = CreateTree (out Factory f, out Car c1, out Car c2);
+
 			// to start with the tree is collapsed and only knows about the root object
-			Assert.Equal(0,tree.GetScrollOffsetOf(f));
-			Assert.Equal(-1,tree.GetScrollOffsetOf(c1));
-			Assert.Equal(-1,tree.GetScrollOffsetOf(c2));
+			Assert.Equal (0, tree.GetScrollOffsetOf (f));
+			Assert.Equal (-1, tree.GetScrollOffsetOf (c1));
+			Assert.Equal (-1, tree.GetScrollOffsetOf (c2));
 
 			// reveal it by expanding the root object
-			tree.Expand(f);
-			
+			tree.Expand (f);
+
 			// tree now knows about children
-			Assert.Equal(0,tree.GetScrollOffsetOf(f));
-			Assert.Equal(1,tree.GetScrollOffsetOf(c1));
-			Assert.Equal(2,tree.GetScrollOffsetOf(c2));
+			Assert.Equal (0, tree.GetScrollOffsetOf (f));
+			Assert.Equal (1, tree.GetScrollOffsetOf (c1));
+			Assert.Equal (2, tree.GetScrollOffsetOf (c2));
 
 			// after collapsing the root node again
-			tree.Collapse(f);
-			
+			tree.Collapse (f);
+
 			// tree no longer knows about the locations of these objects
-			Assert.Equal(0,tree.GetScrollOffsetOf(f));
-			Assert.Equal(-1,tree.GetScrollOffsetOf(c1));
-			Assert.Equal(-1,tree.GetScrollOffsetOf(c2));
+			Assert.Equal (0, tree.GetScrollOffsetOf (f));
+			Assert.Equal (-1, tree.GetScrollOffsetOf (c1));
+			Assert.Equal (-1, tree.GetScrollOffsetOf (c2));
 		}
 
 		/// <summary>
 		/// Simulates behind the scenes changes to an object (which children it has) and how to sync that into the tree using <see cref="TreeView.RefreshObject(object, bool)"/>
 		/// </summary>
 		[Fact]
-		public void RefreshObject_ChildRemoved()
+		public void RefreshObject_ChildRemoved ()
 		{
-			var tree = CreateTree(out Factory f, out Car c1, out Car c2);
-			
+			var tree = CreateTree (out Factory f, out Car c1, out Car c2);
+
 			//reveal it by expanding the root object
-			tree.Expand(f);
-			
-			Assert.Equal(0,tree.GetScrollOffsetOf(f));
-			Assert.Equal(1,tree.GetScrollOffsetOf(c1));
-			Assert.Equal(2,tree.GetScrollOffsetOf(c2));
-			
+			tree.Expand (f);
+
+			Assert.Equal (0, tree.GetScrollOffsetOf (f));
+			Assert.Equal (1, tree.GetScrollOffsetOf (c1));
+			Assert.Equal (2, tree.GetScrollOffsetOf (c2));
+
 			// Factory now no longer makes Car c1 (only c2)
-			f.Cars = new Car[]{c2};
+			f.Cars = new Car [] { c2 };
 
 			// Tree does not know this yet
-			Assert.Equal(0,tree.GetScrollOffsetOf(f));
-			Assert.Equal(1,tree.GetScrollOffsetOf(c1));
-			Assert.Equal(2,tree.GetScrollOffsetOf(c2));
+			Assert.Equal (0, tree.GetScrollOffsetOf (f));
+			Assert.Equal (1, tree.GetScrollOffsetOf (c1));
+			Assert.Equal (2, tree.GetScrollOffsetOf (c2));
 
 			// If the user has selected the node c1
 			tree.SelectedObject = c1;
 
 			// When we refresh the tree
-			tree.RefreshObject(f);
+			tree.RefreshObject (f);
 
 			// Now tree knows that factory has only one child node c2
-			Assert.Equal(0,tree.GetScrollOffsetOf(f));
-			Assert.Equal(-1,tree.GetScrollOffsetOf(c1));
-			Assert.Equal(1,tree.GetScrollOffsetOf(c2));
+			Assert.Equal (0, tree.GetScrollOffsetOf (f));
+			Assert.Equal (-1, tree.GetScrollOffsetOf (c1));
+			Assert.Equal (1, tree.GetScrollOffsetOf (c2));
 
 			// The old selection was c1 which is now gone so selection should default to the parent of that branch (the factory)
-			Assert.Equal(f,tree.SelectedObject);
+			Assert.Equal (f, tree.SelectedObject);
 		}
 
 		/// <summary>
@@ -274,26 +271,26 @@ namespace UnitTests {
 		/// is expanded to expose the child (Car)
 		/// </summary>
 		[Fact]
-		public void GetParent_ReturnsParentOnlyWhenExpanded()
+		public void GetParent_ReturnsParentOnlyWhenExpanded ()
 		{
-			var tree = CreateTree(out Factory f, out Car c1, out Car c2);
-			
-			Assert.Null(tree.GetParent(f));
-			Assert.Null(tree.GetParent(c1));
-			Assert.Null(tree.GetParent(c2));
+			var tree = CreateTree (out Factory f, out Car c1, out Car c2);
+
+			Assert.Null (tree.GetParent (f));
+			Assert.Null (tree.GetParent (c1));
+			Assert.Null (tree.GetParent (c2));
 
 			// now when we expand the factory we discover the cars
-			tree.Expand(f);
-			
-			Assert.Null(tree.GetParent(f));
-			Assert.Equal(f,tree.GetParent(c1));
-			Assert.Equal(f,tree.GetParent(c2));
+			tree.Expand (f);
+
+			Assert.Null (tree.GetParent (f));
+			Assert.Equal (f, tree.GetParent (c1));
+			Assert.Equal (f, tree.GetParent (c2));
 
-			tree.Collapse(f);
+			tree.Collapse (f);
 
-			Assert.Null(tree.GetParent(f));
-			Assert.Null(tree.GetParent(c1));
-			Assert.Null(tree.GetParent(c2));
+			Assert.Null (tree.GetParent (f));
+			Assert.Null (tree.GetParent (c1));
+			Assert.Null (tree.GetParent (c2));
 		}
 
 		/// <summary>
@@ -302,79 +299,79 @@ namespace UnitTests {
 		/// previously didn't have any children
 		/// </summary>
 		[Fact]
-		public void RefreshObject_AfterChangingChildrenGetterDuringRuntime()
+		public void RefreshObject_AfterChangingChildrenGetterDuringRuntime ()
 		{
-			var tree = CreateTree(out Factory f, out Car c1, out Car c2);
-			
+			var tree = CreateTree (out Factory f, out Car c1, out Car c2);
+
 			string wheel = "Shiny Wheel";
 
 			// Expand the Factory
-			tree.Expand(f);
-			
+			tree.Expand (f);
+
 			// c1 cannot have children
-			Assert.Equal(f,tree.GetParent(c1));
+			Assert.Equal (f, tree.GetParent (c1));
 
 			// expanding it does nothing
-			tree.Expand(c1);
-			Assert.False(tree.IsExpanded(c1));
+			tree.Expand (c1);
+			Assert.False (tree.IsExpanded (c1));
 
 			// change the children getter so that now cars can have wheels
-			tree.TreeBuilder = new DelegateTreeBuilder<object>((o)=>
-				// factories have cars
-				o is Factory ? new object[]{c1,c2} 
-				// cars have wheels
-				: new object[]{wheel });
-			
+			tree.TreeBuilder = new DelegateTreeBuilder<object> ((o) =>
+				 // factories have cars
+				 o is Factory ? new object [] { c1, c2 }
+				 // cars have wheels
+				 : new object [] { wheel });
+
 			// still cannot expand
-			tree.Expand(c1);
-			Assert.False(tree.IsExpanded(c1));
+			tree.Expand (c1);
+			Assert.False (tree.IsExpanded (c1));
 
-			tree.RefreshObject(c1);
-			tree.Expand(c1);
-			Assert.True(tree.IsExpanded(c1));
-			Assert.Equal(wheel,tree.GetChildren(c1).FirstOrDefault());
+			tree.RefreshObject (c1);
+			tree.Expand (c1);
+			Assert.True (tree.IsExpanded (c1));
+			Assert.Equal (wheel, tree.GetChildren (c1).FirstOrDefault ());
 		}
 		/// <summary>
 		/// Same as <see cref="RefreshObject_AfterChangingChildrenGetterDuringRuntime"/> but
 		/// uses <see cref="TreeView.RebuildTree()"/> instead of <see cref="TreeView.RefreshObject(object, bool)"/>
 		/// </summary>
 		[Fact]
-		public void RebuildTree_AfterChangingChildrenGetterDuringRuntime()
+		public void RebuildTree_AfterChangingChildrenGetterDuringRuntime ()
 		{
-			var tree = CreateTree(out Factory f, out Car c1, out Car c2);
-			
+			var tree = CreateTree (out Factory f, out Car c1, out Car c2);
+
 			string wheel = "Shiny Wheel";
 
 			// Expand the Factory
-			tree.Expand(f);
-			
+			tree.Expand (f);
+
 			// c1 cannot have children
-			Assert.Equal(f,tree.GetParent(c1));
+			Assert.Equal (f, tree.GetParent (c1));
 
 			// expanding it does nothing
-			tree.Expand(c1);
-			Assert.False(tree.IsExpanded(c1));
+			tree.Expand (c1);
+			Assert.False (tree.IsExpanded (c1));
 
 			// change the children getter so that now cars can have wheels
-			tree.TreeBuilder = new DelegateTreeBuilder<object>((o)=>
-				// factories have cars
-				o is Factory ? new object[]{c1,c2} 
-				// cars have wheels
-				: new object[]{wheel });
-			
+			tree.TreeBuilder = new DelegateTreeBuilder<object> ((o) =>
+				 // factories have cars
+				 o is Factory ? new object [] { c1, c2 }
+				 // cars have wheels
+				 : new object [] { wheel });
+
 			// still cannot expand
-			tree.Expand(c1);
-			Assert.False(tree.IsExpanded(c1));
+			tree.Expand (c1);
+			Assert.False (tree.IsExpanded (c1));
 
 			// Rebuild the tree
-			tree.RebuildTree();
-			
+			tree.RebuildTree ();
+
 			// Rebuild should not have collapsed any branches or done anything wierd
-			Assert.True(tree.IsExpanded(f));
+			Assert.True (tree.IsExpanded (f));
 
-			tree.Expand(c1);
-			Assert.True(tree.IsExpanded(c1));
-			Assert.Equal(wheel,tree.GetChildren(c1).FirstOrDefault());
+			tree.Expand (c1);
+			Assert.True (tree.IsExpanded (c1));
+			Assert.Equal (wheel, tree.GetChildren (c1).FirstOrDefault ());
 		}
 		/// <summary>
 		/// Tests that <see cref="TreeView.GetChildren(object)"/> returns the child objects for
@@ -382,167 +379,165 @@ namespace UnitTests {
 		/// is expanded to expose the child (Car)
 		/// </summary>
 		[Fact]
-		public void GetChildren_ReturnsChildrenOnlyWhenExpanded()
+		public void GetChildren_ReturnsChildrenOnlyWhenExpanded ()
 		{
-			var tree = CreateTree(out Factory f, out Car c1, out Car c2);
-			
-			Assert.Empty(tree.GetChildren(f));
-			Assert.Empty(tree.GetChildren(c1));
-			Assert.Empty(tree.GetChildren(c2));
+			var tree = CreateTree (out Factory f, out Car c1, out Car c2);
+
+			Assert.Empty (tree.GetChildren (f));
+			Assert.Empty (tree.GetChildren (c1));
+			Assert.Empty (tree.GetChildren (c2));
 
 			// now when we expand the factory we discover the cars
-			tree.Expand(f);
-			
-			Assert.Contains(c1,tree.GetChildren(f));
-			Assert.Contains(c2,tree.GetChildren(f));
-			Assert.Empty(tree.GetChildren(c1));
-			Assert.Empty(tree.GetChildren(c2));
-
-			tree.Collapse(f);
-
-			Assert.Empty(tree.GetChildren(f));
-			Assert.Empty(tree.GetChildren(c1));
-			Assert.Empty(tree.GetChildren(c2));
+			tree.Expand (f);
+
+			Assert.Contains (c1, tree.GetChildren (f));
+			Assert.Contains (c2, tree.GetChildren (f));
+			Assert.Empty (tree.GetChildren (c1));
+			Assert.Empty (tree.GetChildren (c2));
+
+			tree.Collapse (f);
+
+			Assert.Empty (tree.GetChildren (f));
+			Assert.Empty (tree.GetChildren (c1));
+			Assert.Empty (tree.GetChildren (c2));
 		}
 
 		[Fact]
-		public void TreeNode_WorksWithoutDelegate()
+		public void TreeNode_WorksWithoutDelegate ()
 		{
-			var tree = new TreeView();
+			var tree = new TreeView ();
 
-			var root = new TreeNode("Root");
-			root.Children.Add(new TreeNode("Leaf1"));
-			root.Children.Add(new TreeNode("Leaf2"));
+			var root = new TreeNode ("Root");
+			root.Children.Add (new TreeNode ("Leaf1"));
+			root.Children.Add (new TreeNode ("Leaf2"));
 
-			tree.AddObject(root);
+			tree.AddObject (root);
 
-			tree.Expand(root);
-			Assert.Equal(2,tree.GetChildren(root).Count());
+			tree.Expand (root);
+			Assert.Equal (2, tree.GetChildren (root).Count ());
 		}
 
 
 		[Fact]
-		public void MultiSelect_GetAllSelectedObjects()
+		public void MultiSelect_GetAllSelectedObjects ()
 		{
-			var tree = new TreeView();
+			var tree = new TreeView ();
 
 			TreeNode l1;
 			TreeNode l2;
 			TreeNode l3;
 			TreeNode l4;
 
-			var root = new TreeNode("Root");
-			root.Children.Add(l1 = new TreeNode("Leaf1"));
-			root.Children.Add(l2 = new TreeNode("Leaf2"));
-			root.Children.Add(l3 = new TreeNode("Leaf3"));
-			root.Children.Add(l4 = new TreeNode("Leaf4"));
+			var root = new TreeNode ("Root");
+			root.Children.Add (l1 = new TreeNode ("Leaf1"));
+			root.Children.Add (l2 = new TreeNode ("Leaf2"));
+			root.Children.Add (l3 = new TreeNode ("Leaf3"));
+			root.Children.Add (l4 = new TreeNode ("Leaf4"));
 
-			tree.AddObject(root);
+			tree.AddObject (root);
 			tree.MultiSelect = true;
 
-			tree.Expand(root);
-			Assert.Empty(tree.GetAllSelectedObjects());
+			tree.Expand (root);
+			Assert.Empty (tree.GetAllSelectedObjects ());
 
 			tree.SelectedObject = root;
 
-			Assert.Single(tree.GetAllSelectedObjects(),root);
+			Assert.Single (tree.GetAllSelectedObjects (), root);
 
 			// move selection down 1
-			tree.AdjustSelection(1,false);
+			tree.AdjustSelection (1, false);
 
-			Assert.Single(tree.GetAllSelectedObjects(),l1);
+			Assert.Single (tree.GetAllSelectedObjects (), l1);
 
 			// expand selection down 2 (e.g. shift down twice)
-			tree.AdjustSelection(1,true);
-			tree.AdjustSelection(1,true);
+			tree.AdjustSelection (1, true);
+			tree.AdjustSelection (1, true);
 
-			Assert.Equal(3,tree.GetAllSelectedObjects().Count());
-			Assert.Contains(l1,tree.GetAllSelectedObjects());
-			Assert.Contains(l2,tree.GetAllSelectedObjects());
-			Assert.Contains(l3,tree.GetAllSelectedObjects());
+			Assert.Equal (3, tree.GetAllSelectedObjects ().Count ());
+			Assert.Contains (l1, tree.GetAllSelectedObjects ());
+			Assert.Contains (l2, tree.GetAllSelectedObjects ());
+			Assert.Contains (l3, tree.GetAllSelectedObjects ());
+
+			tree.Collapse (root);
 
-			tree.Collapse(root);
-			
 			// No selected objects since the root was collapsed
-			Assert.Empty(tree.GetAllSelectedObjects());
+			Assert.Empty (tree.GetAllSelectedObjects ());
 		}
 
 		[Fact]
-		public void ObjectActivated_Called()
+		public void ObjectActivated_Called ()
 		{
-			var tree = CreateTree(out Factory f, out Car car1, out _);
+			var tree = CreateTree (out Factory f, out Car car1, out _);
 
-			InitFakeDriver();
+			InitFakeDriver ();
 
 			object activated = null;
 			bool called = false;
 
 			// register for the event
-			tree.ObjectActivated += (s)=>
-			{
+			tree.ObjectActivated += (s) => {
 				activated = s.ActivatedObject;
 				called = true;
 			};
 
-			Assert.False(called);
-			
+			Assert.False (called);
+
 			// no object is selected yet so no event should happen
-			tree.ProcessKey(new KeyEvent(Key.Enter,new KeyModifiers()));
+			tree.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
 
-			Assert.Null(activated);
-			Assert.False(called);
+			Assert.Null (activated);
+			Assert.False (called);
 
 			// down to select factory
-			tree.ProcessKey(new KeyEvent(Key.CursorDown,new KeyModifiers()));
+			tree.ProcessKey (new KeyEvent (Key.CursorDown, new KeyModifiers ()));
 
-			tree.ProcessKey(new KeyEvent(Key.Enter,new KeyModifiers()));
-			
-			Assert.True(called);
-			Assert.Same(f,activated);			
+			tree.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
+
+			Assert.True (called);
+			Assert.Same (f, activated);
 		}
 
 
 		[Fact]
-		public void ObjectActivated_CustomKey()
+		public void ObjectActivated_CustomKey ()
 		{
-			var tree = CreateTree(out Factory f, out Car car1, out _);
-			
-			InitFakeDriver();
+			var tree = CreateTree (out Factory f, out Car car1, out _);
+
+			InitFakeDriver ();
 
 			tree.ObjectActivationKey = Key.Delete;
 			object activated = null;
 			bool called = false;
 
 			// register for the event
-			tree.ObjectActivated += (s)=>
-			{
+			tree.ObjectActivated += (s) => {
 				activated = s.ActivatedObject;
 				called = true;
 			};
 
-			Assert.False(called);
-			
+			Assert.False (called);
+
 			// no object is selected yet so no event should happen
-			tree.ProcessKey(new KeyEvent(Key.Enter,new KeyModifiers()));
+			tree.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
 
-			Assert.Null(activated);
-			Assert.False(called);
+			Assert.Null (activated);
+			Assert.False (called);
 
 			// down to select factory
-			tree.ProcessKey(new KeyEvent(Key.CursorDown,new KeyModifiers()));
+			tree.ProcessKey (new KeyEvent (Key.CursorDown, new KeyModifiers ()));
+
+			tree.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ()));
 
-			tree.ProcessKey(new KeyEvent(Key.Enter,new KeyModifiers()));
-			
 			// Enter is not the activation key in this unit test
-			Assert.Null(activated);
-			Assert.False(called);
+			Assert.Null (activated);
+			Assert.False (called);
 
 			// Delete is the activation key in this test so should result in activation occurring
-			tree.ProcessKey(new KeyEvent(Key.Delete,new KeyModifiers()));
+			tree.ProcessKey (new KeyEvent (Key.Delete, new KeyModifiers ()));
+
+			Assert.True (called);
+			Assert.Same (f, activated);
 
-			Assert.True(called);
-			Assert.Same(f,activated);
-			
 		}
 
 
@@ -551,57 +546,56 @@ namespace UnitTests {
 		/// Simulates behind the scenes changes to an object (which children it has) and how to sync that into the tree using <see cref="TreeView.RefreshObject(object, bool)"/>
 		/// </summary>
 		[Fact]
-		public void RefreshObject_EqualityTest()
+		public void RefreshObject_EqualityTest ()
 		{
-			var obj1 = new EqualityTestObject(){Name="Bob",Age=1 };
-			var obj2 = new EqualityTestObject(){Name="Bob",Age=2 };;
+			var obj1 = new EqualityTestObject () { Name = "Bob", Age = 1 };
+			var obj2 = new EqualityTestObject () { Name = "Bob", Age = 2 }; ;
 
 			string root = "root";
-			
-			var tree = new TreeView<object>();
-			tree.TreeBuilder = new DelegateTreeBuilder<object>((s)=>  ReferenceEquals(s , root) ? new object[]{obj1 } : null);
-			tree.AddObject(root);
+
+			var tree = new TreeView<object> ();
+			tree.TreeBuilder = new DelegateTreeBuilder<object> ((s) => ReferenceEquals (s, root) ? new object [] { obj1 } : null);
+			tree.AddObject (root);
 
 			// Tree is not expanded so the root has no children yet
-			Assert.Empty(tree.GetChildren(root));
+			Assert.Empty (tree.GetChildren (root));
 
 
-			tree.Expand(root);
+			tree.Expand (root);
 
 			// now that the tree is expanded we should get our child returned
-			Assert.Equal(1,tree.GetChildren(root).Count(child=>ReferenceEquals(obj1,child)));
+			Assert.Equal (1, tree.GetChildren (root).Count (child => ReferenceEquals (obj1, child)));
 
 			// change the getter to return an Equal object (but not the same reference - obj2)
-			tree.TreeBuilder = new DelegateTreeBuilder<object>((s)=>  ReferenceEquals(s , root) ? new object[]{obj2 } : null);
+			tree.TreeBuilder = new DelegateTreeBuilder<object> ((s) => ReferenceEquals (s, root) ? new object [] { obj2 } : null);
 
 			// tree has cached the knowledge of what children the root has so won't know about the change (we still get obj1)
-			Assert.Equal(1,tree.GetChildren(root).Count(child=>ReferenceEquals(obj1,child)));
+			Assert.Equal (1, tree.GetChildren (root).Count (child => ReferenceEquals (obj1, child)));
 
 			// now that we refresh the root we should get the new child reference (obj2)
-			tree.RefreshObject(root);
-			Assert.Equal(1,tree.GetChildren(root).Count(child=>ReferenceEquals(obj2,child)));
+			tree.RefreshObject (root);
+			Assert.Equal (1, tree.GetChildren (root).Count (child => ReferenceEquals (obj2, child)));
 
 		}
 
 		/// <summary>
 		/// Test object which considers for equality only <see cref="Name"/>
 		/// </summary>
-		private class EqualityTestObject
-		{
-			public string Name { get;set;}
-			public int Age { get;set;}
+		private class EqualityTestObject {
+			public string Name { get; set; }
+			public int Age { get; set; }
 
 			public override int GetHashCode ()
 			{
-				return Name?.GetHashCode()??base.GetHashCode ();
+				return Name?.GetHashCode () ?? base.GetHashCode ();
 			}
 			public override bool Equals (object obj)
 			{
-				return obj is EqualityTestObject eto && Equals(Name, eto.Name);
+				return obj is EqualityTestObject eto && Equals (Name, eto.Name);
 			}
 		}
 
-		private void InitFakeDriver()
+		private void InitFakeDriver ()
 		{
 			var driver = new FakeDriver ();
 			Application.Init (driver, new FakeMainLoop (() => FakeConsole.ReadKey (true)));

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio