mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-154369 New Module: Gradle: by default "Add as module" shows "none", but works like parent module is selected
This commit is contained in:
+12
-28
@@ -19,10 +19,8 @@ import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
|
||||
import com.intellij.ide.util.projectWizard.WizardContext;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.externalSystem.model.ExternalProjectInfo;
|
||||
import com.intellij.openapi.externalSystem.model.project.ProjectData;
|
||||
import com.intellij.openapi.externalSystem.model.project.ProjectId;
|
||||
import com.intellij.openapi.externalSystem.service.project.manage.ProjectDataManager;
|
||||
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -56,8 +54,6 @@ public class GradleModuleWizardStep extends ModuleWizardStep {
|
||||
private final GradleModuleBuilder myBuilder;
|
||||
@NotNull
|
||||
private final WizardContext myContext;
|
||||
@Nullable
|
||||
private ProjectData myParent;
|
||||
|
||||
private final GradleParentProjectForm myParentProjectForm;
|
||||
|
||||
@@ -79,8 +75,7 @@ public class GradleModuleWizardStep extends ModuleWizardStep {
|
||||
myContext = context;
|
||||
myParentProjectForm = new GradleParentProjectForm(context, new NullableConsumer<ProjectData>() {
|
||||
@Override
|
||||
public void consume(@Nullable ProjectData data) {
|
||||
myParent = data;
|
||||
public void consume(@Nullable ProjectData parentProject) {
|
||||
updateComponents();
|
||||
}
|
||||
});
|
||||
@@ -155,27 +150,15 @@ public class GradleModuleWizardStep extends ModuleWizardStep {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ProjectData findPotentialParentProject(@Nullable Project project) {
|
||||
if (project == null) return null;
|
||||
|
||||
final ExternalProjectInfo projectInfo =
|
||||
ProjectDataManager.getInstance().getExternalProjectData(project, GradleConstants.SYSTEM_ID, myContext.getProjectFileDirectory());
|
||||
return projectInfo != null && projectInfo.getExternalProjectStructure() != null
|
||||
? projectInfo.getExternalProjectStructure().getData()
|
||||
: null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStep() {
|
||||
myParent = findPotentialParentProject(myProjectOrNull);
|
||||
|
||||
ProjectData parentProject = myParentProjectForm.getParentProject();
|
||||
ProjectId projectId = myBuilder.getProjectId();
|
||||
|
||||
if (projectId == null) {
|
||||
setTestIfEmpty(myArtifactIdField, myBuilder.getName());
|
||||
setTestIfEmpty(myGroupIdField, myParent == null ? myBuilder.getName() : myParent.getGroup());
|
||||
setTestIfEmpty(myVersionField, myParent == null ? DEFAULT_VERSION : myParent.getVersion());
|
||||
setTestIfEmpty(myGroupIdField, parentProject == null ? myBuilder.getName() : parentProject.getGroup());
|
||||
setTestIfEmpty(myVersionField, parentProject == null ? DEFAULT_VERSION : parentProject.getVersion());
|
||||
}
|
||||
else {
|
||||
setTestIfEmpty(myArtifactIdField, projectId.getArtifactId());
|
||||
@@ -197,8 +180,8 @@ public class GradleModuleWizardStep extends ModuleWizardStep {
|
||||
myInheritVersionCheckBox.setVisible(isAddToVisible);
|
||||
|
||||
myParentProjectForm.updateComponents();
|
||||
|
||||
if (myParent == null) {
|
||||
ProjectData parentProject = myParentProjectForm.getParentProject();
|
||||
if (parentProject == null) {
|
||||
myContext.putUserData(ExternalModuleSettingsStep.SKIP_STEP_KEY, Boolean.FALSE);
|
||||
myGroupIdField.setEnabled(true);
|
||||
myVersionField.setEnabled(true);
|
||||
@@ -216,11 +199,11 @@ public class GradleModuleWizardStep extends ModuleWizardStep {
|
||||
|
||||
if (myInheritGroupIdCheckBox.isSelected()
|
||||
|| myGroupIdField.getText().equals(myInheritedGroupId)) {
|
||||
myGroupIdField.setText(myParent.getGroup());
|
||||
myGroupIdField.setText(parentProject.getGroup());
|
||||
}
|
||||
if (myInheritVersionCheckBox.isSelected()
|
||||
|| myVersionField.getText().equals(myInheritedVersion)) {
|
||||
myVersionField.setText(myParent.getVersion());
|
||||
myVersionField.setText(parentProject.getVersion());
|
||||
}
|
||||
myInheritedGroupId = myGroupIdField.getText();
|
||||
myInheritedVersion = myVersionField.getText();
|
||||
@@ -240,7 +223,8 @@ public class GradleModuleWizardStep extends ModuleWizardStep {
|
||||
@Override
|
||||
public void updateDataModel() {
|
||||
myContext.setProjectBuilder(myBuilder);
|
||||
myBuilder.setParentProject(myParent);
|
||||
ProjectData parentProject = myParentProjectForm.getParentProject();
|
||||
myBuilder.setParentProject(parentProject);
|
||||
|
||||
myBuilder.setProjectId(new ProjectId(myGroupIdField.getText(),
|
||||
myArtifactIdField.getText(),
|
||||
@@ -251,8 +235,8 @@ public class GradleModuleWizardStep extends ModuleWizardStep {
|
||||
if (StringUtil.isNotEmpty(myBuilder.getProjectId().getArtifactId())) {
|
||||
myContext.setProjectName(myBuilder.getProjectId().getArtifactId());
|
||||
}
|
||||
if (myParent != null) {
|
||||
myContext.setProjectFileDirectory(myParent.getLinkedExternalProjectPath() + '/' + myContext.getProjectName());
|
||||
if (parentProject != null) {
|
||||
myContext.setProjectFileDirectory(parentProject.getLinkedExternalProjectPath() + '/' + myContext.getProjectName());
|
||||
}
|
||||
else {
|
||||
if (myProjectOrNull != null) {
|
||||
|
||||
+24
-2
@@ -27,6 +27,8 @@ import com.intellij.openapi.externalSystem.model.project.ProjectData;
|
||||
import com.intellij.openapi.externalSystem.service.project.manage.ProjectDataManager;
|
||||
import com.intellij.openapi.externalSystem.service.ui.ExternalProjectPathField;
|
||||
import com.intellij.openapi.externalSystem.service.ui.SelectExternalProjectDialog;
|
||||
import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.fileTypes.FileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
@@ -64,10 +66,13 @@ public class GradleParentProjectForm {
|
||||
private JPanel myPanel;
|
||||
private JButton mySelectParent;
|
||||
private EditorTextField myParentPathField;
|
||||
@NotNull
|
||||
private final WizardContext myContext;
|
||||
|
||||
public GradleParentProjectForm(WizardContext context, @Nullable NullableConsumer<ProjectData> consumer) {
|
||||
public GradleParentProjectForm(@NotNull WizardContext context, @Nullable NullableConsumer<ProjectData> consumer) {
|
||||
myProjectOrNull = context.getProject();
|
||||
myConsumer = consumer == null ? EmptyConsumer.<ProjectData>getInstance() : consumer;
|
||||
myContext = context;
|
||||
myConsumer = consumer == null ? EmptyConsumer.getInstance() : consumer;
|
||||
myIsVisible = !context.isCreatingNewProject() && myProjectOrNull != null && isGradleModuleExist(context);
|
||||
initComponents();
|
||||
}
|
||||
@@ -86,6 +91,9 @@ public class GradleParentProjectForm {
|
||||
myConsumer.consume(myParent);
|
||||
}
|
||||
});
|
||||
if (myParent == null) {
|
||||
myParent = findPotentialParentProject(myProjectOrNull);
|
||||
}
|
||||
}
|
||||
|
||||
public JPanel getComponent() {
|
||||
@@ -123,6 +131,20 @@ public class GradleParentProjectForm {
|
||||
return project == null ? ProjectManager.getInstance().getDefaultProject() : project;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private ProjectData findPotentialParentProject(@Nullable Project project) {
|
||||
if (project == null) return null;
|
||||
|
||||
ExternalProjectSettings linkedProjectSettings =
|
||||
ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).getLinkedProjectSettings(myContext.getProjectFileDirectory());
|
||||
if(linkedProjectSettings == null) return null;
|
||||
|
||||
final ExternalProjectInfo projectInfo =
|
||||
ProjectDataManager.getInstance().getExternalProjectData(project, GradleConstants.SYSTEM_ID, linkedProjectSettings.getExternalProjectPath());
|
||||
return projectInfo != null && projectInfo.getExternalProjectStructure() != null
|
||||
? projectInfo.getExternalProjectStructure().getData() : null;
|
||||
}
|
||||
|
||||
private static void collapseIfPossible(@NotNull EditorTextField editorTextField,
|
||||
@NotNull ProjectSystemId systemId,
|
||||
@NotNull Project project) {
|
||||
|
||||
Reference in New Issue
Block a user