DefaultMutableTreeNode () { DefaultMutableTreeNode root = new DefaultMutableTreeNode(new Descriptor()); RunManagerImpl runManager = RunManagerImpl.getInstanceImpl(myProject); for (Map.Entry<ConfigurationType, Map<String, List<RunnerAndConfigurationSettings>>> entry : runManager.getConfigurationsGroupedByTypeAndFolder(false).entrySet()) { ConfigurationType type = entry.getKey(); final Icon icon = type.getIcon(); boolean selectedAll = true; GroupConfigurationDescriptor groupConfigurationDescriptor = new GroupConfigurationDescriptor(type, icon); DefaultMutableTreeNode typeNode = new DefaultMutableTreeNode(groupConfigurationDescriptor); root.add(typeNode); Set<String> addedNames = CollectionFactory.createSmallMemoryFootprintSet(); for (List<RunnerAndConfigurationSettings> list : entry.getValue().values()) { for (RunnerAndConfigurationSettings configuration : list) { final String configurationName = configuration.getName(); if (!addedNames.add(configurationName)) { // add only the first configuration if more than one has the same name continue; } boolean assigned = isConfigurationAssigned(configuration.getConfiguration()); selectedAll = selectedAll && assigned; typeNode.add(new DefaultMutableTreeNode(new ConfigurationDescriptor(configuration.getConfiguration(), assigned))); } groupConfigurationDescriptor.setChecked(selectedAll); } } buildTemplatesNode(root); return root; }