public DirEntryNode(VirtualDirectory nodeDir) : base(nodeDir) { foreach (VirtualDirectory dir in nodeDir.Subdirectories) { Nodes.Add(new DirEntryNode(dir)); } foreach (PackedFile file in nodeDir.Files) { PackEntryNode node = new PackedFileNode(file); Nodes.Add(node); node.ChangeColor(); } nodeDir.DirectoryAdded += InsertNew; nodeDir.FileAdded += InsertNew; nodeDir.FileRemoved += RemoveEntry; }
private void InsertNew(PackEntry entry) { PackEntryNode node = null; if (entry is PackedFile) { node = new PackedFileNode(entry as PackedFile); } else { node = new DirEntryNode(entry as VirtualDirectory); } node.Added = true; int index = 0; List <PackEntry> entries = (Tag as VirtualDirectory).Entries; for (index = 0; index < entries.Count; index++) { if (entries[index] == entry) { break; } } Nodes.Insert(index, node); node.ChangeColor(); ChangeColor(); PackEntryNode parent = Parent as PackEntryNode; while (parent != null) { parent.ChangeColor(); parent = parent.Parent as PackEntryNode; } Expand(); }