Index: Core/Common/src/Core.Common.Base/Service/FileImportActivity.cs
===================================================================
diff -u -ref35125104cc8b0201f9c961049cc6c8a30fb74d -rb6d165f6edddc4271e94c5f6d70c12d4ba0c60eb
--- Core/Common/src/Core.Common.Base/Service/FileImportActivity.cs (.../FileImportActivity.cs) (revision ef35125104cc8b0201f9c961049cc6c8a30fb74d)
+++ Core/Common/src/Core.Common.Base/Service/FileImportActivity.cs (.../FileImportActivity.cs) (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -66,6 +66,13 @@
fileImporter.Cancel();
}
- protected override void OnFinish() {}
+ protected override void OnFinish()
+ {
+ var observableTarget = target as IObservable;
+ if (observableTarget != null)
+ {
+ observableTarget.NotifyObservers();
+ }
+ }
}
}
\ No newline at end of file
Index: Core/Common/src/Core.Common.Controls.TreeView/Core.Common.Controls.TreeView.csproj
===================================================================
diff -u -r905cfbd0916a140115717f06eb3755d49420ef21 -rb6d165f6edddc4271e94c5f6d70c12d4ba0c60eb
--- Core/Common/src/Core.Common.Controls.TreeView/Core.Common.Controls.TreeView.csproj (.../Core.Common.Controls.TreeView.csproj) (revision 905cfbd0916a140115717f06eb3755d49420ef21)
+++ Core/Common/src/Core.Common.Controls.TreeView/Core.Common.Controls.TreeView.csproj (.../Core.Common.Controls.TreeView.csproj) (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -45,7 +45,6 @@
Properties\GlobalAssembly.cs
-
@@ -54,15 +53,13 @@
True
Resources.resx
-
-
Component
-
+
Index: Core/Common/src/Core.Common.Controls.TreeView/DragOperations.cs
===================================================================
diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -rb6d165f6edddc4271e94c5f6d70c12d4ba0c60eb
--- Core/Common/src/Core.Common.Controls.TreeView/DragOperations.cs (.../DragOperations.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5)
+++ Core/Common/src/Core.Common.Controls.TreeView/DragOperations.cs (.../DragOperations.cs) (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -1,7 +1,7 @@
namespace Core.Common.Controls.TreeView
{
///
- /// Enum that specifies dragoperations.
+ /// Enum that specifies drag operations.
///
public enum DragOperations
{
Fisheye: Tag b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb refers to a dead (removed) revision in file `Core/Common/src/Core.Common.Controls.TreeView/ITreeNodePresenter.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Core/Common/src/Core.Common.Controls.TreeView/PlaceholderLocation.cs
===================================================================
diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -rb6d165f6edddc4271e94c5f6d70c12d4ba0c60eb
--- Core/Common/src/Core.Common.Controls.TreeView/PlaceholderLocation.cs (.../PlaceholderLocation.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5)
+++ Core/Common/src/Core.Common.Controls.TreeView/PlaceholderLocation.cs (.../PlaceholderLocation.cs) (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -1,7 +1,7 @@
namespace Core.Common.Controls.TreeView
{
///
- /// Enum to specify whether the mouse is above or below a treenode.
+ /// Enum to specify whether or not the mouse is above or below a tree node.
///
public enum PlaceholderLocation
{
Fisheye: Tag b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb refers to a dead (removed) revision in file `Core/Common/src/Core.Common.Controls.TreeView/TreeNode.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNodeDataDeletedEventArgs.cs
===================================================================
diff -u
--- Core/Common/src/Core.Common.Controls.TreeView/TreeNodeDataDeletedEventArgs.cs (revision 0)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeNodeDataDeletedEventArgs.cs (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -0,0 +1,24 @@
+using System;
+
+namespace Core.Common.Controls.TreeView
+{
+ ///
+ /// Event arguments to be used in the event that node data has been deleted from a .
+ ///
+ public class TreeNodeDataDeletedEventArgs : EventArgs
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The deleted data instance.
+ public TreeNodeDataDeletedEventArgs(object deletedDataInstance)
+ {
+ DeletedDataInstance = deletedDataInstance;
+ }
+
+ ///
+ /// Gets the data instance deleted from the .
+ ///
+ public object DeletedDataInstance { get; private set; }
+ }
+}
\ No newline at end of file
Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNodeExpandCollapseState.cs
===================================================================
diff -u -rb326158bd228dc407858ba620a437a175baf0190 -rb6d165f6edddc4271e94c5f6d70c12d4ba0c60eb
--- Core/Common/src/Core.Common.Controls.TreeView/TreeNodeExpandCollapseState.cs (.../TreeNodeExpandCollapseState.cs) (revision b326158bd228dc407858ba620a437a175baf0190)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeNodeExpandCollapseState.cs (.../TreeNodeExpandCollapseState.cs) (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
-
+using System.Windows.Forms;
using Core.Common.Controls.TreeView.Properties;
namespace Core.Common.Controls.TreeView
@@ -37,7 +37,7 @@
throw new ArgumentException(Resources.TreeNodeExpandCollapseState_Node_tag_cannot_be_null_for_record_to_work);
}
wasExpanded = nodeToBeRecorded.IsExpanded;
- childStates = nodeToBeRecorded.Nodes.Where(n => n.Nodes.Any()).ToDictionary(n => n.Tag, n => new TreeNodeExpandCollapseState(n));
+ childStates = nodeToBeRecorded.Nodes.OfType().Where(n => n.Nodes.Count > 0).ToDictionary(n => n.Tag, n => new TreeNodeExpandCollapseState(n));
}
///
@@ -70,7 +70,7 @@
}
}
- foreach (var treeNode in targetNode.Nodes.Where(n => n.Nodes.Any() && childStates.ContainsKey(n.Tag)))
+ foreach (var treeNode in targetNode.Nodes.OfType().Where(n => n.Nodes.Count > 0 && childStates.ContainsKey(n.Tag)))
{
childStates[treeNode.Tag].Restore(treeNode);
}
Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNodeGraphicExtensions.cs
===================================================================
diff -u -rcc608d648b3fe89d6f748f5245c532014186d578 -rb6d165f6edddc4271e94c5f6d70c12d4ba0c60eb
--- Core/Common/src/Core.Common.Controls.TreeView/TreeNodeGraphicExtensions.cs (.../TreeNodeGraphicExtensions.cs) (revision cc608d648b3fe89d6f748f5245c532014186d578)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeNodeGraphicExtensions.cs (.../TreeNodeGraphicExtensions.cs) (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -13,36 +13,12 @@
private const int spaceBetweenNodeParts = 2;
///
- /// Checks if the is on the expand button of the node
- ///
- /// Node to check for
- /// Point to search for
- public static bool IsOnExpandButton(this TreeNode node, Point point)
- {
- if (node == null || !node.HasChildren)
- {
- return false;
- }
-
- var yBoundsMiddle = node.Bounds.Top + node.Bounds.Height/2;
- 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);
- }
-
- ///
/// Checks if the is on the checkbox of the node
///
/// Node to check for
/// Point to search for
public static bool IsOnCheckBox(this TreeNode node, Point point)
{
- if (node == null || !node.ShowCheckBox)
- {
- return false;
- }
-
var topOffset = (node.Bounds.Height - defaultImageHeight)/2;
var rectangle = new Rectangle(GetCheckBoxLeft(node), node.Bounds.Top + topOffset, defaultImageWidth, defaultImageHeight);
return rectangle.Contains(point);
@@ -52,19 +28,28 @@
/// Draws a tree node using the boundaries of the node
///
/// Node to draw
+ /// The to use while drawing the node.
/// Graphic to draw on
/// Is node in selected state
- public static void DrawNode(this TreeNode node, Graphics graphics, bool selected)
+ public static void DrawNode(this TreeNode node, TreeNodeInfo treeNodeInfo, Graphics graphics, bool selected)
{
- if (node.Bounds.Height == 0) //nothing to draw
+ if (node.Bounds.Height == 0) // Nothing to draw
{
return;
}
- DrawText(graphics, node, selected);
+ DrawText(graphics, node, treeNodeInfo, selected);
DrawTreeLines(graphics, node);
- DrawCheckbox(graphics, node);
- DrawImage(graphics, node);
+
+ if (treeNodeInfo.CanCheck != null && treeNodeInfo.CanCheck(node.Tag))
+ {
+ DrawCheckbox(graphics, node);
+ }
+
+ if (treeNodeInfo.Image != null)
+ {
+ DrawImage(graphics, node, treeNodeInfo);
+ }
}
///
@@ -145,9 +130,9 @@
if (node.Parent != null)
{
- graphics.DrawLine(pen, xLine, bounds.Top, xLine, (hasNextNodeOnSameLevel) ? bounds.Bottom : yBoundsMiddle); // Vertical line
+ graphics.DrawLine(pen, xLine, bounds.Top, xLine, hasNextNodeOnSameLevel ? bounds.Bottom : yBoundsMiddle); // Vertical line
}
- if (node.Parent != null || node.HasChildren)
+ if (node.Parent != null || node.Nodes.Count > 0)
{
graphics.DrawLine(pen, xLine + 1, yBoundsMiddle, GetCheckBoxLeft(node) - spaceBetweenNodeParts, yBoundsMiddle); // Horizontal line
}
@@ -172,14 +157,14 @@
private static void DrawExpandGraphic(Graphics graphics, TreeNode node, int yBoundsMiddle)
{
- if (!node.HasChildren)
+ if (node.Nodes.Count == 0)
{
return;
}
if (Application.RenderWithVisualStyles)
{
- var image = (node.IsExpanded)
+ var image = node.IsExpanded
? VisualStyleElement.TreeView.Glyph.Opened
: VisualStyleElement.TreeView.Glyph.Closed;
@@ -210,7 +195,7 @@
}
}
- private static void DrawText(Graphics graphics, TreeNode node, bool selected)
+ private static void DrawText(Graphics graphics, TreeNode node, TreeNodeInfo treeNodeInfo, bool selected)
{
if (node.IsEditing && node.IsSelected)
{
@@ -219,23 +204,23 @@
var bounds = node.Bounds;
var treeView = node.TreeView;
- var foreColor = (selected && treeView.Focused)
+ var foreColor = selected && treeView.Focused
? SystemColors.HighlightText
- : (node.ForeColor != Color.Empty) ? node.ForeColor : treeView.ForeColor;
+ : node.ForeColor != Color.Empty ? node.ForeColor : treeView.ForeColor;
- var backgroundColor = (selected)
+ var backgroundColor = selected
? treeView.Focused ? SystemColors.Highlight : Color.FromArgb(255, 232, 232, 232)
- : (node.BackColor != Color.Empty)
+ : node.BackColor != Color.Empty
? node.BackColor
: treeView.BackColor;
var font = new Font(node.NodeFont ?? treeView.Font, FontStyle.Regular);
var topOffset = (node.Bounds.Height - TextRenderer.MeasureText(node.Text, font).Height)/2;
- var startPoint = new Point(GetTextLeft(node), bounds.Top + topOffset);
+ var startPoint = new Point(GetTextLeft(node, treeNodeInfo), bounds.Top + topOffset);
var drawingBounds = treeView.FullRowSelect
? new Rectangle(0, bounds.Top, treeView.Width, bounds.Height)
- : new Rectangle(GetTextLeft(node), bounds.Top, bounds.Width, bounds.Height);
+ : new Rectangle(GetTextLeft(node, treeNodeInfo), bounds.Top, bounds.Width, bounds.Height);
graphics.FillRectangle(new SolidBrush(backgroundColor), drawingBounds);
@@ -249,11 +234,6 @@
private static void DrawCheckbox(Graphics graphics, TreeNode node)
{
- if (!node.ShowCheckBox)
- {
- return;
- }
-
var topOffset = (node.Bounds.Height - defaultImageHeight)/2;
var imgRect = new Rectangle(GetCheckBoxLeft(node), node.Bounds.Top + topOffset, defaultImageWidth, defaultImageHeight);
@@ -279,18 +259,14 @@
return Convert.ToInt32(20*(72/graphics.DpiX));
}
- private static void DrawImage(Graphics graphics, TreeNode node)
+ private static void DrawImage(Graphics graphics, TreeNode node, TreeNodeInfo treeNodeInfo)
{
- if (node.Image == null)
- {
- return;
- }
-
+ var image = treeNodeInfo.Image(node.Tag);
var graphicsUnit = GraphicsUnit.Pixel;
var topOffset = (node.Bounds.Height - defaultImageHeight)/2;
- var imgRect = new Rectangle(GetImageLeft(node), node.Bounds.Top + topOffset, defaultImageWidth, defaultImageHeight);
+ var imgRect = new Rectangle(GetImageLeft(node, treeNodeInfo), node.Bounds.Top + topOffset, defaultImageWidth, defaultImageHeight);
- graphics.DrawImage(node.Image, imgRect, node.Image.GetBounds(ref graphicsUnit), graphicsUnit);
+ graphics.DrawImage(image, imgRect, image.GetBounds(ref graphicsUnit), graphicsUnit);
}
private static int GetTreeLineLeft(TreeNode node)
@@ -303,16 +279,22 @@
return node.Bounds.Left - (defaultImageWidth + spaceBetweenNodeParts);
}
- private static int GetImageLeft(TreeNode node)
+ private static int GetImageLeft(TreeNode node, TreeNodeInfo treeNodeInfo)
{
var xCheckBox = GetCheckBoxLeft(node);
- return node.ShowCheckBox ? xCheckBox + defaultImageWidth + spaceBetweenNodeParts : xCheckBox;
+
+ return treeNodeInfo.CanCheck != null && treeNodeInfo.CanCheck(node.Tag)
+ ? xCheckBox + defaultImageWidth + spaceBetweenNodeParts
+ : xCheckBox;
}
- private static int GetTextLeft(TreeNode node)
+ private static int GetTextLeft(TreeNode node, TreeNodeInfo treeNodeInfo)
{
- var xImage = GetImageLeft(node);
- return node.Image != null ? xImage + defaultImageWidth + spaceBetweenNodeParts : xImage;
+ var xImage = GetImageLeft(node, treeNodeInfo);
+
+ return treeNodeInfo.Image != null && treeNodeInfo.Image(node.Tag) != null
+ ? xImage + defaultImageWidth + spaceBetweenNodeParts
+ : xImage;
}
private static TreeNode GetNextNodeSameLevel(TreeNode node)
Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNodeInfo.cs
===================================================================
diff -u -r778cb6e89f676cb60f95da71d7aed9d5b355ed2e -rb6d165f6edddc4271e94c5f6d70c12d4ba0c60eb
--- Core/Common/src/Core.Common.Controls.TreeView/TreeNodeInfo.cs (.../TreeNodeInfo.cs) (revision 778cb6e89f676cb60f95da71d7aed9d5b355ed2e)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeNodeInfo.cs (.../TreeNodeInfo.cs) (revision b6d165f6edddc4271e94c5f6d70c12d4ba0c60eb)
@@ -29,10 +29,10 @@
public Func