Example #1
0
        /// <summary>
        /// Occurs when this item is expanded.
        /// </summary>
        protected override async void LoadChildren()
        {
            var dirInfo = this.File as DirectoryInfo;

            if (!this.IsDirectory || dirInfo == null)
            {
                return;
            }
            this.Children.Clear();
            var loader = new ModelTreeViewItem(this, false)
            {
                Text = "Loading...", Icon = MainMenuIcon.LoadingHourglass
            };

            this.Children.Add(loader);

            var fileItems = new Collection <ExplorerItem> ();

            var getDirs = Task.Run(() =>
            {
                var directories = dirInfo.GetDirectories();
                foreach (var directoryInfo in directories)
                {
                    var info = directoryInfo;
                    fileItems.Add(new ExplorerItem(this, info, this.m_ShowFiles));
                }
            });
            await getDirs;

            if (this.m_ShowFiles)
            {
                var getFiles = Task.Run(() =>
                {
                    var fileInfos = dirInfo.GetFiles();
                    foreach (var fileInfo in fileInfos)
                    {
                        var info = fileInfo;
                        fileItems.Add(new ExplorerItem(this, info));
                    }
                });
                await getFiles;
            }
            this.Children.Clear();
            int count = 0;

            foreach (var explorerItem in fileItems)
            {
                count++;
                this.Children.Add(explorerItem);
                if (count == 100)
                {
                    // This keeps the UI responsive when adding lots of items...
                    await Task.Delay(500);

                    count = 0;
                }
            }
            fileItems.Clear();
            this.Loaded();
        }
 /// <summary>
 /// Initializes a new peter project.
 /// </summary>
 /// <param name="parent">Parent item</param>
 /// <param name="directory">The directory for this item.</param>
 public MockPeterProject(ModelTreeViewItem parent, DirectoryInfo directory) : base(parent, directory)
 {
 }
 /// <summary>
 /// Initializes a new peter project.
 /// </summary>
 /// <param name="parent">Parent item</param>
 /// <param name="file">The file for this item.</param>
 public MockPeterProject(ModelTreeViewItem parent, FileInfo file) : base(parent, file)
 {
 }
 /// <summary>
 /// Initializes a new peter project.
 /// </summary>
 /// <param name="parent">Parent item</param>
 public MockPeterProject(ModelTreeViewItem parent) : base(parent)
 {
 }