using System.IO; using System.Collections.Generic; namespace NBTExplorer.Model { public class DirectoryDataNode : DataNode { private string _path; public DirectoryDataNode (string path) { _path = path; } protected override NodeCapabilities Capabilities { get { return NodeCapabilities.Search | NodeCapabilities.Refresh; } } public override string NodeDisplay { get { return Path.GetFileName(_path); } } public override bool HasUnexpandedChildren { get { return !IsExpanded; } } protected override void ExpandCore () { foreach (string dirpath in Directory.GetDirectories(_path)) { Nodes.Add(new DirectoryDataNode(dirpath)); } foreach (string filepath in Directory.GetFiles(_path)) { DataNode node = null; foreach (var item in FileTypeRegistry.RegisteredTypes) { if (item.Value.NamePatternTest(filepath)) node = item.Value.NodeCreate(filepath); } if (node != null) Nodes.Add(node); } } protected override void ReleaseCore () { Nodes.Clear(); } public override bool RefreshNode () { Dictionary expandSet = BuildExpandSet(this); Release(); RestoreExpandSet(this, expandSet); return true; } } }