mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Grouping in ExternalProjectDataSelectorDialog
This commit is contained in:
committed by
Vladislav.Soroka
parent
9b48f9a2d9
commit
5874b0d25b
+14
@@ -2,6 +2,7 @@ package com.intellij.openapi.externalSystem.model.project;
|
||||
|
||||
import com.intellij.openapi.externalSystem.model.ProjectSystemId;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -223,6 +224,19 @@ public class ModuleData extends AbstractNamedData implements Named, ExternalConf
|
||||
myProperties.put(key, value);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getIdeGrouping() {
|
||||
String internalName = StringUtil.nullize(getInternalName());
|
||||
String parentGrouping = getIdeParentGrouping();
|
||||
if (parentGrouping == null) return internalName;
|
||||
return StringUtil.join(parentGrouping, ".", internalName);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getIdeParentGrouping() {
|
||||
return StringUtil.nullize(getGroup());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof ModuleData)) return false;
|
||||
|
||||
+13
@@ -288,6 +288,19 @@ public class ExternalSystemApiUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static void visitChildrenFirst(@Nullable DataNode node, @NotNull Consumer<? super DataNode<?>> consumer) {
|
||||
if (node == null) return;
|
||||
|
||||
Queue<DataNode> toProcess = ContainerUtil.newLinkedList(node);
|
||||
while (!toProcess.isEmpty()) {
|
||||
DataNode<?> node0 = toProcess.poll();
|
||||
consumer.consume(node0);
|
||||
for (DataNode<?> child : node0.getChildren()) {
|
||||
toProcess.offer(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <T> Collection<DataNode<T>> findAllRecursively(@Nullable final DataNode<?> node,
|
||||
@NotNull final Key<T> key) {
|
||||
|
||||
+17
-5
@@ -311,6 +311,7 @@ public class ExternalProjectDataSelectorDialog extends DialogWrapper {
|
||||
|
||||
private Couple<CheckedTreeNode> createRoot() {
|
||||
final Map<DataNode, DataNodeCheckedTreeNode> treeNodeMap = ContainerUtil.newIdentityTroveMap();
|
||||
final Map<String, DataNode> ideGroupingMap = ContainerUtil.newHashMap();
|
||||
|
||||
final DataNodeCheckedTreeNode[] preselectedNode = {null};
|
||||
final DataNodeCheckedTreeNode[] rootModuleNode = {null};
|
||||
@@ -328,7 +329,7 @@ public class ExternalProjectDataSelectorDialog extends DialogWrapper {
|
||||
|
||||
final int[] modulesCount = {0};
|
||||
|
||||
ExternalSystemApiUtil.visit(myProjectInfo.getExternalProjectStructure(), node -> {
|
||||
ExternalSystemApiUtil.visitChildrenFirst(myProjectInfo.getExternalProjectStructure(), node -> {
|
||||
final Key key = node.getKey();
|
||||
if (!myPublicKeys.contains(key)) return;
|
||||
|
||||
@@ -353,20 +354,31 @@ public class ExternalProjectDataSelectorDialog extends DialogWrapper {
|
||||
if (myPreselectedNodeObject != null && myPreselectedNodeObject.equals(node.getData())) {
|
||||
preselectedNode[0] = treeNode;
|
||||
}
|
||||
DataNode parent = node.getParent();
|
||||
if (node.getData() instanceof ModuleData) {
|
||||
if (key.equals(ProjectKeys.MODULE) && myProjectInfo.getExternalProjectPath().equals(((ModuleData)node.getData()).getLinkedExternalProjectPath())) {
|
||||
ModuleData moduleData = (ModuleData)node.getData();
|
||||
if (key.equals(ProjectKeys.MODULE) && myProjectInfo.getExternalProjectPath().equals(moduleData.getLinkedExternalProjectPath())) {
|
||||
rootModuleNode[0] = treeNode;
|
||||
}
|
||||
String ideGrouping = moduleData.getIdeGrouping();
|
||||
if (ideGrouping != null) {
|
||||
ideGroupingMap.put(ideGrouping, node);
|
||||
}
|
||||
String ideParentGrouping = moduleData.getIdeParentGrouping();
|
||||
DataNode structuralParent = ideParentGrouping != null ? ideGroupingMap.get(ideParentGrouping) : null;
|
||||
if (structuralParent != null) {
|
||||
parent = structuralParent;
|
||||
}
|
||||
}
|
||||
treeNode.setEnabled(myIgnorableKeys.contains(key));
|
||||
treeNodeMap.put(node, treeNode);
|
||||
final DataNode parent = node.getParent();
|
||||
if (parent != null) {
|
||||
final CheckedTreeNode parentTreeNode = treeNodeMap.get(parent);
|
||||
if (parentTreeNode != null) {
|
||||
parentTreeNode.add(treeNode);
|
||||
}
|
||||
}
|
||||
treeNode.setEnabled(myIgnorableKeys.contains(key));
|
||||
treeNodeMap.put(node, treeNode);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+2
-5
@@ -132,16 +132,13 @@ public class ModuleNode extends ExternalSystemNode<ModuleData> {
|
||||
public String getIdeGrouping() {
|
||||
ModuleData data = getData();
|
||||
if (data == null) return null;
|
||||
String internalName = StringUtil.nullize(data.getInternalName());
|
||||
String parentGrouping = getIdeParentGrouping();
|
||||
if (parentGrouping == null) return internalName;
|
||||
return StringUtil.join(parentGrouping, ".", internalName);
|
||||
return data.getIdeGrouping();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getIdeParentGrouping() {
|
||||
ModuleData data = getData();
|
||||
if (data == null) return null;
|
||||
return StringUtil.nullize(data.getGroup());
|
||||
return data.getIdeParentGrouping();
|
||||
}
|
||||
}
|
||||
|
||||
+8
-2
@@ -19,15 +19,17 @@ import com.intellij.openapi.externalSystem.ExternalSystemUiAware;
|
||||
import com.intellij.openapi.externalSystem.importing.ExternalProjectStructureCustomizer;
|
||||
import com.intellij.openapi.externalSystem.model.DataNode;
|
||||
import com.intellij.openapi.externalSystem.model.Key;
|
||||
import com.intellij.openapi.externalSystem.model.ProjectKeys;
|
||||
import com.intellij.openapi.externalSystem.model.project.Identifiable;
|
||||
import com.intellij.openapi.externalSystem.model.project.ModuleData;
|
||||
import com.intellij.openapi.util.Couple;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -35,7 +37,7 @@ import java.util.Set;
|
||||
*/
|
||||
public class GradleProjectStructureCustomizer extends ExternalProjectStructureCustomizer {
|
||||
|
||||
private final Set<Key<GradleSourceSetData>> myKeys = Collections.singleton(GradleSourceSetData.KEY);
|
||||
private final Set<Key<? extends Identifiable>> myKeys = ContainerUtil.newHashSet(GradleSourceSetData.KEY, ProjectKeys.MODULE);
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
@@ -68,6 +70,10 @@ public class GradleProjectStructureCustomizer extends ExternalProjectStructureCu
|
||||
final GradleSourceSetData data = (GradleSourceSetData)node.getData();
|
||||
return Couple.of("Source Set", StringUtil.substringAfter(data.getExternalName(), ":"));
|
||||
}
|
||||
if (node.getKey().equals(ProjectKeys.MODULE)) {
|
||||
ModuleData moduleData = (ModuleData)node.getData();
|
||||
return Couple.of(moduleData.getExternalName(), null);
|
||||
}
|
||||
return super.getRepresentationName(node);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user