Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }