Beispiel #1
0
        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);
                });
            }
        }
Beispiel #2
0
        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);
                }
            }
        }