public void SelectItem(ToolboxItem item) { Component master; if (item is ToolboxComponent) { master = ((ToolboxComponent)item).Component; } else if (item is ToolboxModule) { ProjectModule module = ((ToolboxModule)item).Module; if (module == window.CurrentModule) { OnToolboxChanged(ToolboxChangedArgs.ChangeTypes.ItemUnselected, item); master = null; } else { master = new ModuleComponent(module, () => { Transaction xn = new Transaction(); IProjectAccess proj = xn.RequestReadAccess(window.Project); using (xn.Start()) { return(proj.GetModuleName(module)); } }); } } else { master = null; } if (master != null) { window.BeginAdd(master, () => { OnToolboxChanged(ToolboxChangedArgs.ChangeTypes.ItemUnselected, item); }); } }
private void RefreshModules(object src, ProjectModifiedArgs args) { ProjectModule changedModule = args.ChangedModule; ToolboxItem changedItem = null; ProjectModule currentModule = window.CurrentModule; Transaction xn = new Transaction(); IProjectAccess proj = xn.RequestReadAccess(window.Project); using (xn.Start()) { Dictionary <ProjectModule, ToolboxModule> oldItems = new Dictionary <ProjectModule, ToolboxModule>(); List <ToolboxModule> newModules = new List <ToolboxModule>(); foreach (ToolboxModule item in modules) { oldItems[item.Module] = item; if (item.Module == changedModule) { changedItem = item; } } foreach (ProjectModule mod in proj.GetModules()) { string curName = proj.GetModuleName(mod); if (mod == currentModule) { curName = curName + "*"; } ToolboxModule nextItem; if (oldItems.TryGetValue(mod, out nextItem)) { if (nextItem.Name != curName) { nextItem.SetName(curName); } } else { nextItem = new ToolboxModule(mod, curName); } newModules.Add(nextItem); if (nextItem.Module == changedModule) { changedItem = nextItem; } } this.modules.Clear(); foreach (ToolboxModule item in newModules) { this.modules.Add(item); } } if (changedItem != null) { ToolboxChangedArgs.ChangeTypes changeType; bool found = true; switch (args.ChangeType) { case ProjectModifiedArgs.ChangeTypes.ModuleAdded: changeType = ToolboxChangedArgs.ChangeTypes.ItemAdded; break; case ProjectModifiedArgs.ChangeTypes.ModuleRemoved: changeType = ToolboxChangedArgs.ChangeTypes.ItemRemoved; break; case ProjectModifiedArgs.ChangeTypes.ModuleRenamed: changeType = ToolboxChangedArgs.ChangeTypes.ItemRenamed; break; default: changeType = ToolboxChangedArgs.ChangeTypes.ItemAdded; // unused value to trick compiler found = false; break; } if (found) { OnToolboxChanged(changeType, changedItem); } } }