private static bool HasCircularParent(this IDomainHierarchy parent, IDomainHierarchy originaltarget) { var domain = parent as IDomainObject; if (domain.IsNullOrEmpty()) return false; return parent.Equals(originaltarget) || HasCircularParent(parent.GetParent(), originaltarget); }
public void Bind(ICollection<IDomainHierarchy> items, IDomainHierarchy target, bool addEmpty = false) { if (items == null) throw new ArgumentNullException("items"); _type = items.First().GetType().Name; _button.Text = target.IsNullOrEmpty() ? string.Format(_defaultText, _type) : target.Title; _button.CommandArgument = target.IsNullOrEmpty() ? string.Empty : target.Id.ToString(); AddEmpty(_tree, target, addEmpty); using (new ObjectScope<IDomainHierarchy>(items.ToList())) { var roots = items.Where(i => IsRoot(i, items)); foreach (var root in roots) Bind(_tree, root, target); } }
private void SetImage(TreeNode node, IDomainHierarchy item, bool usedefault = false) { if (!AutoImage) return; var imageprovider = item as IImageProvider; node.ImageUrl = (imageprovider == null) ? string.Format(_imageFormat, _type) : usedefault ? imageprovider.DefaultImageUrl : imageprovider.ImageUrl; }
private void Bind(TreeNode parent, IDomainHierarchy item, IDomainHierarchy target) { var node = new TreeNode {Text = item.Title, Value = item.Id.ToString(), Selected = item.Equals(target)}; SetImage(node, item); parent.ChildNodes.Add(node); if (node.Selected && ExpandToSelectedNode) { ExpandUp(node); } foreach (var child in item.GetChildren()) Bind(node, child as IDomainHierarchy, target); }
private void Bind(TreeView tree, IDomainHierarchy root, IDomainHierarchy target) { var node = new TreeNode {Text = root.Title, Value = root.Id.ToString(), Selected = root.Equals(target)}; SetImage(node, root); tree.Nodes.Add(node); foreach (var child in root.GetChildren()) Bind(node, child as IDomainHierarchy, target); }
private void AddEmpty(TreeView tree, IDomainHierarchy target, bool addEmpty) { if (!addEmpty) return; var node = new TreeNode {Text = string.Format(_emptyText, _type), Value = IdManager.Empty().ToString(), Selected = false}; SetImage(node, target, true); tree.Nodes.Add(node); }
private static bool IsRoot(IDomainHierarchy target, ICollection<IDomainHierarchy> items) { if (target.IsNullOrEmpty()) return false; var parent = target.GetParent(); if (parent.IsNullOrEmpty()) return true; return !items.Contains(parent); }