Index: Core/Common/src/Core.Common.Controls.TreeView/ITreeNodePresenter.cs =================================================================== diff -u -rd7da4fd9051547085f0cbbec790eda9cb8ca7f14 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/src/Core.Common.Controls.TreeView/ITreeNodePresenter.cs (.../ITreeNodePresenter.cs) (revision d7da4fd9051547085f0cbbec790eda9cb8ca7f14) +++ Core/Common/src/Core.Common.Controls.TreeView/ITreeNodePresenter.cs (.../ITreeNodePresenter.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -124,12 +124,6 @@ void OnDragDrop(object item, object itemParent, object target, DragOperations operation, int position); /// - /// In case a node is selected by the user it might be necessary to notify observers. - /// - /// - void OnNodeSelected(object nodeData); - - /// /// Returns context menu based on current data /// ContextMenuStrip GetContextMenu(TreeNode node, object nodeData); Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNode.cs =================================================================== diff -u -rd7da4fd9051547085f0cbbec790eda9cb8ca7f14 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/src/Core.Common.Controls.TreeView/TreeNode.cs (.../TreeNode.cs) (revision d7da4fd9051547085f0cbbec790eda9cb8ca7f14) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeNode.cs (.../TreeNode.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Drawing; +using System.Linq; using System.Windows.Forms; using Core.Common.Base; @@ -10,7 +11,7 @@ { private readonly TreeNodeList nodes; private readonly TreeView treeView; - protected bool isLoaded; + private bool isLoaded; private object tag; private IObservable observable; private readonly int maximumTextLength = 259; // Having very big strings causes problems by tree-view @@ -177,18 +178,6 @@ public bool ShowCheckBox { get; set; } - public Color BackgroundColor - { - get - { - return BackColor; - } - set - { - BackColor = value; - } - } - public Color ForegroundColor { get @@ -205,7 +194,7 @@ public Image Image { get; set; } public bool IsUpdating { get; private set; } - public void RefreshChildNodes(bool forcedRefresh = false) + private void RefreshChildNodes(bool forcedRefresh = false) { if (IsUpdating && !forcedRefresh) { @@ -289,15 +278,7 @@ public TreeNode GetNodeByTag(object item) { - foreach (TreeNode node in nodes) - { - if (node.Tag == item) - { - return node; - } - } - - return null; + return nodes.FirstOrDefault(node => node.Tag == item); } public void ShowContextMenu(Point location) @@ -315,26 +296,5 @@ observable.Detach(this); } } - - private static Font CreateBoldFont(Font font, bool bold) - { - if (font.Bold != bold) - { - FontStyle style; - if (bold) - { - style = font.Style | FontStyle.Bold; - } - else - { - //'substract' the bold - style = (FontStyle) ((int) font.Style - (int) FontStyle.Bold); - } - return new Font(font.Name, font.Size, - style, font.Unit, - font.GdiCharSet, font.GdiVerticalFont); - } - return new Font(font, font.Style); - } } } \ No newline at end of file Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNodeGraphicExtensions.cs =================================================================== diff -u -rb326158bd228dc407858ba620a437a175baf0190 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/src/Core.Common.Controls.TreeView/TreeNodeGraphicExtensions.cs (.../TreeNodeGraphicExtensions.cs) (revision b326158bd228dc407858ba620a437a175baf0190) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeNodeGraphicExtensions.cs (.../TreeNodeGraphicExtensions.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -8,9 +8,9 @@ { public static class TreeNodeGraphicExtensions { - private const int DefaultImageWidth = 16; - private const int DefaultImageHeight = 16; - private const int SpaceBetweenNodeParts = 2; + private const int defaultImageWidth = 16; + private const int defaultImageHeight = 16; + private const int spaceBetweenNodeParts = 2; /// /// Checks if the is on the expand button of the node @@ -25,7 +25,7 @@ } var yBoundsMiddle = node.Bounds.Top + node.Bounds.Height/2; - var graphics = ((Control) node.TreeView).CreateGraphics(); + var graphics = node.TreeView.CreateGraphics(); var buttonSize = GetExpandButtonSize(graphics); var rectangle = new Rectangle(GetTreeLineLeft(node) - buttonSize/2, yBoundsMiddle - buttonSize/2, buttonSize, buttonSize); return rectangle.Contains(point); @@ -43,8 +43,8 @@ return false; } - var topOffset = (node.Bounds.Height - DefaultImageHeight)/2; - var rectangle = new Rectangle(GetCheckBoxLeft(node), node.Bounds.Top + topOffset, DefaultImageWidth, DefaultImageHeight); + var topOffset = (node.Bounds.Height - defaultImageHeight)/2; + var rectangle = new Rectangle(GetCheckBoxLeft(node), node.Bounds.Top + topOffset, defaultImageWidth, defaultImageHeight); return rectangle.Contains(point); } @@ -149,7 +149,7 @@ } if (node.Parent != null || node.HasChildren) { - graphics.DrawLine(pen, xLine + 1, yBoundsMiddle, GetCheckBoxLeft(node) - SpaceBetweenNodeParts, yBoundsMiddle); // Horizontal line + graphics.DrawLine(pen, xLine + 1, yBoundsMiddle, GetCheckBoxLeft(node) - spaceBetweenNodeParts, yBoundsMiddle); // Horizontal line } // draw parent lines @@ -218,7 +218,7 @@ } var bounds = node.Bounds; - var treeView = (TreeView) node.TreeView; + var treeView = node.TreeView; var foreColor = (selected && treeView.Focused) ? SystemColors.HighlightText : (node.ForeColor != Color.Empty) ? node.ForeColor : treeView.ForeColor; @@ -254,12 +254,12 @@ return; } - var topOffset = (node.Bounds.Height - DefaultImageHeight)/2; - var imgRect = new Rectangle(GetCheckBoxLeft(node), node.Bounds.Top + topOffset, DefaultImageWidth, DefaultImageHeight); + var topOffset = (node.Bounds.Height - defaultImageHeight)/2; + var imgRect = new Rectangle(GetCheckBoxLeft(node), node.Bounds.Top + topOffset, defaultImageWidth, defaultImageHeight); if (Application.RenderWithVisualStyles) { - var point = new Point(imgRect.Left + SpaceBetweenNodeParts, imgRect.Top + 2); + var point = new Point(imgRect.Left + spaceBetweenNodeParts, imgRect.Top + 2); CheckBoxRenderer.DrawCheckBox(graphics, point, node.Checked ? CheckBoxState.CheckedNormal @@ -287,32 +287,32 @@ } var graphicsUnit = GraphicsUnit.Pixel; - var topOffset = (node.Bounds.Height - DefaultImageHeight)/2; - var imgRect = new Rectangle(GetImageLeft(node), node.Bounds.Top + topOffset, DefaultImageWidth, DefaultImageHeight); + var topOffset = (node.Bounds.Height - defaultImageHeight)/2; + var imgRect = new Rectangle(GetImageLeft(node), node.Bounds.Top + topOffset, defaultImageWidth, defaultImageHeight); graphics.DrawImage(node.Image, imgRect, node.Image.GetBounds(ref graphicsUnit), graphicsUnit); } private static int GetTreeLineLeft(TreeNode node) { - return GetCheckBoxLeft(node) - DefaultImageWidth + 3; + return GetCheckBoxLeft(node) - defaultImageWidth + 3; } private static int GetCheckBoxLeft(TreeNode node) { - return node.Bounds.Left - (DefaultImageWidth + SpaceBetweenNodeParts); + return node.Bounds.Left - (defaultImageWidth + spaceBetweenNodeParts); } private static int GetImageLeft(TreeNode node) { var xCheckBox = GetCheckBoxLeft(node); - return node.ShowCheckBox ? xCheckBox + DefaultImageWidth + SpaceBetweenNodeParts : xCheckBox; + return node.ShowCheckBox ? xCheckBox + defaultImageWidth + spaceBetweenNodeParts : xCheckBox; } private static int GetTextLeft(TreeNode node) { var xImage = GetImageLeft(node); - return node.Image != null ? xImage + DefaultImageWidth + SpaceBetweenNodeParts : xImage; + return node.Image != null ? xImage + defaultImageWidth + spaceBetweenNodeParts : xImage; } private static TreeNode GetNextNodeSameLevel(TreeNode node) Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNodeList.cs =================================================================== diff -u -rb326158bd228dc407858ba620a437a175baf0190 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/src/Core.Common.Controls.TreeView/TreeNodeList.cs (.../TreeNodeList.cs) (revision b326158bd228dc407858ba620a437a175baf0190) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeNodeList.cs (.../TreeNodeList.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Linq; using System.Windows.Forms; using Core.Common.Controls.TreeView.Properties; @@ -84,12 +85,16 @@ private IList GetAllNodes(TreeNode treeNode) { - var thisAndChildren = new List(); - thisAndChildren.Add(treeNode); + var thisAndChildren = new List + { + treeNode + }; + foreach (var node in treeNode.Nodes) { thisAndChildren.AddRange(GetAllNodes(node)); } + return thisAndChildren; } @@ -135,11 +140,8 @@ public IEnumerator GetEnumerator() { - //wrap TreeNodeCollection so it returns the right enumerator variable - foreach (TreeNode node in nodes) - { - yield return node; - } + // Wrap TreeNodeCollection so it returns the right enumerator variable + return nodes.Cast().GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() Index: Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs =================================================================== diff -u -rcc570ccd4f17971ce651ead28207aae3399919d1 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs (.../TreeView.cs) (revision cc570ccd4f17971ce651ead28207aae3399919d1) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs (.../TreeView.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -237,9 +237,9 @@ return new TreeNode(this); } - public TreeNode AddNewNode(TreeNode parentNode, object nodeData, int insertionIndex = -1) + public void AddNewNode(TreeNode parentNode, object nodeData, int insertionIndex = -1) { - return controller.AddNewNode(parentNode, nodeData, insertionIndex); + controller.AddNewNode(parentNode, nodeData, insertionIndex); } /// @@ -367,7 +367,7 @@ } } - public IEnumerable GetAllLoadedNodes(TreeNode currentNode) + private IEnumerable GetAllLoadedNodes(TreeNode currentNode) { var allChildNodes = new[] { @@ -383,14 +383,18 @@ { if (GetStyle(ControlStyles.UserPaint)) { - Message m = new Message(); - m.HWnd = Handle; - m.Msg = NativeInterop.WM_PRINTCLIENT; - m.WParam = e.Graphics.GetHdc(); - m.LParam = (IntPtr) NativeInterop.PRF_CLIENT; + Message m = new Message + { + HWnd = Handle, + Msg = NativeInterop.WM_PRINTCLIENT, + WParam = e.Graphics.GetHdc(), + LParam = (IntPtr) NativeInterop.PRF_CLIENT + }; + DefWndProc(ref m); e.Graphics.ReleaseHdc(m.WParam); } + base.OnPaint(e); } Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewController.cs =================================================================== diff -u -rd7da4fd9051547085f0cbbec790eda9cb8ca7f14 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/src/Core.Common.Controls.TreeView/TreeViewController.cs (.../TreeViewController.cs) (revision d7da4fd9051547085f0cbbec790eda9cb8ca7f14) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewController.cs (.../TreeViewController.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -248,7 +248,7 @@ } } - public TreeNode AddNewNode(TreeNode parentNode, object nodeData, int insertionIndex = -1) + public void AddNewNode(TreeNode parentNode, object nodeData, int insertionIndex = -1) { var newNode = treeView.NewNode(); @@ -274,7 +274,6 @@ } newNode.HasChildren = HasChildren(newNode); - return newNode; } /// Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs =================================================================== diff -u -rd7da4fd9051547085f0cbbec790eda9cb8ca7f14 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision d7da4fd9051547085f0cbbec790eda9cb8ca7f14) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -34,7 +34,7 @@ throw new InvalidOperationException(Resources.TreeViewNodePresenterBase_OnNodeRenamed_OnNodeRenamed_must_be_implemented_in_derived_class); } - public static DragOperations GetDefaultDropOperation(DragOperations validOperation) + protected static DragOperations GetDefaultDropOperation(DragOperations validOperation) { return DragOperations.Move == validOperation ? DragOperations.Move : DragOperations.None; } @@ -118,11 +118,6 @@ return CanRemove(data); } - public void OnNodeSelected(object nodeData) - { - throw new NotImplementedException(); - } - public virtual ContextMenuStrip GetContextMenu(TreeNode node, object nodeData) { return null; @@ -232,7 +227,7 @@ /// /// /// - protected virtual void OnCollectionChanged(T childNodeData, TreeNode parentNode, NotifyCollectionChangeEventArgs e, int newNodeIndex) + private void OnCollectionChanged(T childNodeData, TreeNode parentNode, NotifyCollectionChangeEventArgs e, int newNodeIndex) { switch (e.Action) { Index: Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewTest.cs =================================================================== diff -u -r757ac958da1c3c60d1cacca9f515042182c296c1 -rac6f0c53e8a567d9bcb460b5a06f78081feaff2c --- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewTest.cs (.../TreeViewTest.cs) (revision 757ac958da1c3c60d1cacca9f515042182c296c1) +++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewTest.cs (.../TreeViewTest.cs) (revision ac6f0c53e8a567d9bcb460b5a06f78081feaff2c) @@ -7,7 +7,7 @@ using System.Windows.Forms; using Core.Common.Base; using Core.Common.TestUtil; - +using Core.Common.Utils.Reflection; using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; @@ -565,12 +565,12 @@ public MockTestNode(TreeView treeView, bool loaded) : base(treeView) { - isLoaded = loaded; + SetLoaded(loaded); } public void SetLoaded(bool value) { - isLoaded = value; + TypeUtils.SetField(this, "isLoaded", value); } } }