private static void addModuleNodes( @NotNull ExternalProjectsView externalProjectsView, @NotNull MultiMap<Key<?>, DataNode<?>> dataNodes, @NotNull List<ExternalSystemNode<?>> result) { final Collection<DataNode<?>> moduleDataNodes = dataNodes.get(ProjectKeys.MODULE); if (!moduleDataNodes.isEmpty()) { final AbstractExternalSystemSettings systemSettings = ExternalSystemApiUtil.getSettings( externalProjectsView.getProject(), externalProjectsView.getSystemId()); for (DataNode<?> dataNode : moduleDataNodes) { final ModuleData data = (ModuleData) dataNode.getData(); final ExternalProjectSettings projectSettings = systemSettings.getLinkedProjectSettings(data.getLinkedExternalProjectPath()); final boolean isRoot = projectSettings != null && data.getLinkedExternalProjectPath() .equals(projectSettings.getExternalProjectPath()); //noinspection unchecked final ModuleNode moduleNode = new ModuleNode(externalProjectsView, (DataNode<ModuleData>) dataNode, isRoot); result.add(moduleNode); } } }
@Override @NotNull public List<ExternalSystemNode<?>> createNodes( final ExternalProjectsView externalProjectsView, final MultiMap<Key<?>, DataNode<?>> dataNodes) { final List<ExternalSystemNode<?>> result = new SmartList<ExternalSystemNode<?>>(); addModuleNodes(externalProjectsView, dataNodes, result); // add tasks TasksNode tasksNode = new TasksNode(externalProjectsView, dataNodes.get(ProjectKeys.TASK)); if (externalProjectsView.useTasksNode()) { result.add(tasksNode); } else { ContainerUtil.addAll(result, tasksNode.getChildren()); } addDependenciesNode(externalProjectsView, dataNodes, result); return result; }