Exemplo n.º 1
0
        private void GetChildren([NotNull] IEnumerable <ItemHeader> children, [NotNull] GetChildrenDelegate callback)
        {
            Diagnostics.Debug.ArgumentNotNull(children, nameof(children));
            Diagnostics.Debug.ArgumentNotNull(callback, nameof(callback));

            var result = new List <BaseTreeViewItem>();

            var count = children.Count();

            if (count > 100)
            {
                count = LoadManyItemsDialog.Execute(count);
                if (count < 0)
                {
                    callback(result);
                    return;
                }
            }

            for (var n = 0; n < count; n++)
            {
                var child = children.ElementAt(n);

                var item = GetChildTreeViewItem(child);

                if (child.HasChildren)
                {
                    item.Add(DummyTreeViewItem.Instance);
                }

                result.Add(item);
            }

            callback(result);
        }
Exemplo n.º 2
0
        public override bool GetChildren(GetChildrenDelegate callback, bool async)
        {
            Assert.ArgumentNotNull(callback, nameof(callback));

            var busy = true;

            GetItemsCompleted <ItemHeader> c = delegate(IEnumerable <ItemHeader> items)
            {
                var result = new List <TemplatedTreeViewItem>();

                var count = items.Count();
                if (count > 100)
                {
                    count = LoadManyItemsDialog.Execute(count);
                    if (count < 0)
                    {
                        callback(result);
                        return;
                    }
                }

                for (var n = 0; n < count; n++)
                {
                    var item = items.ElementAt(n);

                    var i = GetTreeViewItem(item.ItemUri, item.Name, item.Icon, item.TemplateId, item.TemplateName);

                    result.Add(i);
                }

                callback(result);

                busy = false;
            };

            DatabaseUri.Site.DataService.SelectItems(GetQueryText(), DatabaseUri, c);

            if (!async)
            {
                while (busy)
                {
                    AppHost.DoEvents();
                }
            }

            return(true);
        }