public void Refresh() { HashSet <string> currentDocs = new HashSet <string>(); foreach (Document document in Application.DocumentManager) { sheets.Refill(sheetExtractor.SheetsFrom(document)); destinations.Fill(destinationsExtractor.DestinationsFrom(document)); currentDocs.Add(document.Name); } List <Sheet> sheetToRemove = new List <Sheet>(); foreach (var sheet in sheets.Values) { if (!currentDocs.Contains(sheet.FileName)) { sheetToRemove.Add(sheet); } } foreach (var sheet in sheetToRemove) { sheets.Remove(sheet.Id); } knownFormats.UnionWith(sorter.Group(sheets.Values).Keys); }
public void Refill() { Dictionary <string, List <SheetTreeNode> > newGroups = sorter.Group(nodeCache.Values); foreach (var groupId in groupById.Keys) { if (!newGroups.ContainsKey(groupId)) { groups.Remove(groupById[groupId]); groupById.Remove(groupId); } } foreach (var groupId in newGroups.Keys) { if (!groupById.ContainsKey(groupId)) { SheetsGroupTreeNode newGroup = new SheetsGroupTreeNode(groupId); groups.Add(newGroup); groupById.Add(groupId, newGroup); } groupById[groupId].Refill(newGroups[groupId]); } }