mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-332234 [NPW] new: replaced language multistep by language project generators
GitOrigin-RevId: e7ecdeb6a3e74cf66711c8bc6d8f6fc80324c756
This commit is contained in:
committed by
intellij-monorepo-bot
parent
146a4eeda6
commit
4b102d80f0
@@ -12,6 +12,8 @@ import com.intellij.ide.util.newProjectWizard.*;
|
||||
import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelBase;
|
||||
import com.intellij.ide.util.projectWizard.*;
|
||||
import com.intellij.ide.wizard.*;
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizard;
|
||||
import com.intellij.ide.wizard.language.*;
|
||||
import com.intellij.internal.statistic.eventLog.FeatureUsageData;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUCounterUsageLogger;
|
||||
import com.intellij.internal.statistic.utils.PluginInfoDetectorKt;
|
||||
@@ -131,7 +133,7 @@ public final class ProjectTypeStep extends ModuleWizardStep implements SettingsS
|
||||
myProjectTypeList = new JBList<>();
|
||||
myProjectTypeList.setModel(new CollectionListModel<>(groups));
|
||||
myProjectTypeList.setSelectionModel(new SingleSelectionModel());
|
||||
myProjectTypeList.setCellRenderer(new ProjectTypeListRenderer(groups));
|
||||
myProjectTypeList.setCellRenderer(new ProjectTypeListRenderer(context, groups));
|
||||
|
||||
GridLayoutManager layout = (GridLayoutManager)myPanel.getLayout();
|
||||
layout.setHGap(0);
|
||||
@@ -400,19 +402,30 @@ public final class ProjectTypeStep extends ModuleWizardStep implements SettingsS
|
||||
}
|
||||
}
|
||||
|
||||
var newWizardGroups = new ArrayList<TemplatesGroup>();
|
||||
var generatorNewProjectWizards = new ArrayList<GeneratorNewProjectWizard>();
|
||||
//noinspection deprecation
|
||||
LanguageNewProjectWizard.EP_NAME.forEachExtensionSafe(wizard -> {
|
||||
generatorNewProjectWizards.add(new LegacyLanguageGeneratorNewProjectWizard(context, wizard));
|
||||
});
|
||||
LanguageGeneratorNewProjectWizard.EP_NAME.forEachExtensionSafe(wizard -> {
|
||||
generatorNewProjectWizards.add(new BaseLanguageGeneratorNewProjectWizard(context, wizard));
|
||||
});
|
||||
generatorNewProjectWizards.removeIf(it -> !it.isEnabled());
|
||||
generatorNewProjectWizards.sort(Comparator.comparing(it -> it.getOrdinal()));
|
||||
if (context.isCreatingNewProject()) {
|
||||
generatorNewProjectWizards.add(new EmptyProjectGeneratorNewProjectWizard());
|
||||
}
|
||||
var generatorNewProjectWizardGroups = ContainerUtil.map(generatorNewProjectWizards, it -> {
|
||||
return new TemplatesGroup(new NewProjectModelBuilder(it));
|
||||
});
|
||||
groups.addAll(0, generatorNewProjectWizardGroups);
|
||||
generatorNewProjectWizardGroups.forEach(it -> myTemplatesMap.put(it, new ArrayList<>()));
|
||||
|
||||
var newWizardUserGroups = new ArrayList<TemplatesGroup>();
|
||||
if (context.isCreatingNewProject()) {
|
||||
newWizardGroups.add(new TemplatesGroup(new NewProjectBuilder()));
|
||||
newWizardGroups.add(new TemplatesGroup(new NewEmptyProjectBuilder()));
|
||||
newWizardUserGroups.addAll(getUserTemplatesMap(context));
|
||||
}
|
||||
else {
|
||||
newWizardGroups.add(new TemplatesGroup(new NewModuleBuilder()));
|
||||
}
|
||||
groups.addAll(0, newWizardGroups);
|
||||
groups.addAll(newWizardUserGroups);
|
||||
newWizardGroups.forEach(it -> myTemplatesMap.put(it, new ArrayList<>()));
|
||||
newWizardUserGroups.forEach(it -> myTemplatesMap.put(it, new ArrayList<>()));
|
||||
|
||||
return groups;
|
||||
@@ -794,57 +807,9 @@ public final class ProjectTypeStep extends ModuleWizardStep implements SettingsS
|
||||
}
|
||||
|
||||
private static class ProjectTypeListRenderer extends GroupedItemsListRenderer<TemplatesGroup> {
|
||||
ProjectTypeListRenderer(java.util.List<TemplatesGroup> groups) {
|
||||
super(new ListItemDescriptorAdapter<>() {
|
||||
@Nullable
|
||||
@Override
|
||||
public String getTextFor(TemplatesGroup value) {
|
||||
return value.getName();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getTooltipFor(TemplatesGroup value) {
|
||||
return value.getDescription();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Icon getIconFor(TemplatesGroup value) {
|
||||
return value.getIcon();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCaptionAboveOf(TemplatesGroup value) {
|
||||
var builder = value.getModuleBuilder();
|
||||
if (builder instanceof TemplateModuleBuilder) {
|
||||
return UIBundle.message("list.caption.group.templates");
|
||||
}
|
||||
else if (builder instanceof NewProjectBuilder) {
|
||||
return UIBundle.message("list.caption.group.newProject");
|
||||
}
|
||||
else if (builder instanceof NewModuleBuilder) {
|
||||
return UIBundle.message("list.caption.group.newModule");
|
||||
}
|
||||
else {
|
||||
return UIBundle.message("list.caption.group.generators");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSeparatorAboveOf(TemplatesGroup value) {
|
||||
int index = groups.indexOf(value);
|
||||
if (index < 0) return false;
|
||||
if (index == 0) return true;
|
||||
TemplatesGroup upper = groups.get(index - 1);
|
||||
if (value.getModuleBuilder() instanceof TemplateModuleBuilder && !(upper.getModuleBuilder() instanceof TemplateModuleBuilder)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
ModuleBuilder builder = upper.getModuleBuilder();
|
||||
return builder instanceof NewEmptyProjectBuilder || builder instanceof NewModuleBuilder;
|
||||
}
|
||||
});
|
||||
ProjectTypeListRenderer(@NotNull WizardContext context, @NotNull java.util.List<TemplatesGroup> groups) {
|
||||
super(new ProjectTypeListItemDescriptor(context, groups));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -886,4 +851,71 @@ public final class ProjectTypeStep extends ModuleWizardStep implements SettingsS
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class ProjectTypeListItemDescriptor extends ListItemDescriptorAdapter<TemplatesGroup> {
|
||||
|
||||
private final @NotNull WizardContext myContext;
|
||||
private final @NotNull java.util.List<TemplatesGroup> myGroups;
|
||||
|
||||
ProjectTypeListItemDescriptor(@NotNull WizardContext context, @NotNull java.util.List<TemplatesGroup> groups) {
|
||||
myContext = context;
|
||||
myGroups = groups;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getTextFor(TemplatesGroup value) {
|
||||
return value.getName();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String getTooltipFor(TemplatesGroup value) {
|
||||
return value.getDescription();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Icon getIconFor(TemplatesGroup value) {
|
||||
return value.getIcon();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCaptionAboveOf(TemplatesGroup value) {
|
||||
var builder = value.getModuleBuilder();
|
||||
if (builder instanceof TemplateModuleBuilder) {
|
||||
return UIBundle.message("list.caption.group.templates");
|
||||
}
|
||||
else if (builder instanceof NewProjectModelBuilder) {
|
||||
return UIBundle.message("list.caption.group.newProject", myContext.isCreatingNewProjectInt());
|
||||
}
|
||||
else {
|
||||
return UIBundle.message("list.caption.group.generators");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSeparatorAboveOf(TemplatesGroup value) {
|
||||
int index = myGroups.indexOf(value);
|
||||
if (index < 0) return false;
|
||||
if (index == 0) return true;
|
||||
TemplatesGroup upper = myGroups.get(index - 1);
|
||||
ModuleBuilder moduleBuilder = value.getModuleBuilder();
|
||||
ModuleBuilder upperModuleBuilder = upper.getModuleBuilder();
|
||||
if (!(moduleBuilder instanceof NewProjectModelBuilder) && upperModuleBuilder instanceof NewProjectModelBuilder) {
|
||||
return true;
|
||||
}
|
||||
if (moduleBuilder instanceof TemplateModuleBuilder && !(upperModuleBuilder instanceof TemplateModuleBuilder)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static class NewProjectModelBuilder extends GeneratorNewProjectWizardBuilderAdapter {
|
||||
|
||||
NewProjectModelBuilder(@NotNull GeneratorNewProjectWizard wizard) {
|
||||
super(wizard);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,22 +13,18 @@ import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.search.FilenameIndex;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.testFramework.IdeaTestUtil;
|
||||
import com.intellij.ui.UIBundle;
|
||||
import com.intellij.util.SystemProperties;
|
||||
|
||||
import static com.intellij.ide.projectWizard.NewProjectWizardConstants.Language.JAVA;
|
||||
import static com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizardData.getJavaData;
|
||||
import static com.intellij.ide.wizard.LanguageNewProjectWizardData.getLanguageData;
|
||||
|
||||
/**
|
||||
* @author Dmitry Avdeev
|
||||
*/
|
||||
public class NewProjectWizardTest extends NewProjectWizardTestCase {
|
||||
|
||||
public void testCreateProject() throws Exception {
|
||||
Project project = createProject(step -> {
|
||||
if (step instanceof ProjectTypeStep) {
|
||||
assertTrue(((ProjectTypeStep)step).setSelectedTemplate(UIBundle.message("label.project.wizard.project.generator.name"), null));
|
||||
}
|
||||
});
|
||||
Project project = createProjectFromTemplate(JAVA, step -> {});
|
||||
assertNotNull(project);
|
||||
Sdk sdk = ProjectRootManager.getInstance(project).getProjectSdk();
|
||||
assertNotNull(sdk);
|
||||
@@ -40,7 +36,7 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase {
|
||||
public void testModuleJdk() throws Exception {
|
||||
configureJdk();
|
||||
|
||||
Project project = createProject(step -> {});
|
||||
Project project = createProjectFromTemplate(JAVA, step -> {});
|
||||
final var manager = ModuleManager.getInstance(project);
|
||||
|
||||
// Default module should have null JDK
|
||||
@@ -60,14 +56,13 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase {
|
||||
});
|
||||
|
||||
// Project with default JDK
|
||||
Project project = createProjectFromTemplate(step -> {
|
||||
Project project = createProjectFromTemplate(JAVA, step -> {
|
||||
getJavaData(step).setSdk(defaultSdk);
|
||||
});
|
||||
assertEquals(ProjectRootManager.getInstance(project).getProjectSdk().getName(), defaultSdk.getName());
|
||||
|
||||
// Module with custom JDK
|
||||
createModuleFromTemplate(project, step -> {
|
||||
getLanguageData(step).setLanguage("Java");
|
||||
createModuleFromTemplate(project, JAVA, step -> {
|
||||
getJavaData(step).setSdk(otherSdk);
|
||||
getJavaData(step).setModuleName(moduleName);
|
||||
});
|
||||
@@ -106,7 +101,7 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase {
|
||||
}
|
||||
|
||||
public void testChangeSdk() throws Exception {
|
||||
Project project = createProject(step -> {});
|
||||
Project project = createProjectFromTemplate(JAVA, step -> {});
|
||||
Sdk jdk17 = IdeaTestUtil.getMockJdk17();
|
||||
addSdk(jdk17);
|
||||
setProjectSdk(project, jdk17);
|
||||
@@ -124,7 +119,7 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase {
|
||||
defaultExt.setLanguageLevel(LanguageLevel.JDK_1_4);
|
||||
defaultExt.setDefault(null); // emulate migration from previous build
|
||||
|
||||
Project project = createProject(step -> {});
|
||||
Project project = createProjectFromTemplate(JAVA, step -> {});
|
||||
LanguageLevelProjectExtension extension = LanguageLevelProjectExtension.getInstance(project);
|
||||
Sdk sdk = ProjectRootManager.getInstance(project).getProjectSdk();
|
||||
JavaSdkVersion version = JavaSdk.getInstance().getVersion(sdk);
|
||||
@@ -132,7 +127,7 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase {
|
||||
}
|
||||
|
||||
public void testSampleCode() throws Exception {
|
||||
Project project = createProjectFromTemplate(step -> {
|
||||
Project project = createProjectFromTemplate(JAVA, step -> {
|
||||
getJavaData(step).setAddSampleCode(true);
|
||||
});
|
||||
final var mainSearch = FilenameIndex.getVirtualFilesByName("Main.java", GlobalSearchScope.projectScope(project));
|
||||
@@ -151,7 +146,7 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase {
|
||||
try {
|
||||
LanguageLevelProjectExtension.getInstance(defaultProject).setLanguageLevel(languageLevel);
|
||||
LanguageLevelProjectExtension.getInstance(defaultProject).setDefault(detect);
|
||||
Project project = createProject(step -> {});
|
||||
Project project = createProjectFromTemplate(JAVA, step -> {});
|
||||
assertEquals(languageLevel, LanguageLevelProjectExtension.getInstance(project).getLanguageLevel());
|
||||
return project;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.projectImport.ProjectImportProvider;
|
||||
import com.intellij.testFramework.HeavyPlatformTestCase;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.ui.UIBundle;
|
||||
import com.intellij.util.SystemProperties;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -195,10 +194,6 @@ public abstract class ProjectWizardTestCase<T extends AbstractProjectWizard> ext
|
||||
return createProjectFromWizard();
|
||||
}
|
||||
|
||||
protected Project createProjectFromTemplate(@NotNull Consumer<? super NewProjectWizardStep> adjuster) throws IOException {
|
||||
return createProjectFromTemplate(UIBundle.message("label.project.wizard.project.generator.name"), adjuster);
|
||||
}
|
||||
|
||||
protected Project createProjectFromTemplate(
|
||||
@NotNull String group,
|
||||
@NotNull Consumer<? super NewProjectWizardStep> adjuster
|
||||
@@ -216,10 +211,6 @@ public abstract class ProjectWizardTestCase<T extends AbstractProjectWizard> ext
|
||||
return createModuleFromWizard(project);
|
||||
}
|
||||
|
||||
protected Module createModuleFromTemplate(@NotNull Project project, @NotNull Consumer<? super NewProjectWizardStep> adjuster) throws IOException {
|
||||
return createModuleFromTemplate(project, UIBundle.message("label.project.wizard.module.generator.name"), adjuster);
|
||||
}
|
||||
|
||||
protected Module createModuleFromTemplate(
|
||||
@NotNull Project project,
|
||||
@NotNull String group,
|
||||
|
||||
@@ -303,10 +303,7 @@ label.project.wizard.new.project.file.not.directory.error={0} is not a directory
|
||||
label.project.wizard.new.project.directory.already.taken.error=Project {0} already exists in this location
|
||||
label.project.wizard.new.module.name.exists.error=Module ''{0}'' already exists
|
||||
label.project.wizard.new.module.directory.already.taken.error=Module {0} already exists in this location
|
||||
label.project.wizard.project.generator.name=New Project
|
||||
label.project.wizard.project.generator.description=Create new project with predefined language and build system
|
||||
label.project.wizard.module.generator.name=New Module
|
||||
label.project.wizard.module.generator.description=Create new module with predefined language and build system
|
||||
label.project.wizard.project.generator.description=Create a new {0,choice,0#module|1#project} with {1} language and a predefined build system
|
||||
label.project.wizard.empty.project.generator.name=Empty Project
|
||||
label.project.wizard.empty.project.generator.description=Create Empty Project
|
||||
label.project.wizard.empty.project.generator.full.description=A basic project with free structure.
|
||||
@@ -326,8 +323,7 @@ kotlin.dsl.validation.groupId.part.allowed.symbols=Part ''{0}'' is incorrect, it
|
||||
|
||||
list.caption.group.generators=Generators
|
||||
list.caption.group.templates=Templates
|
||||
list.caption.group.newProject=New Project
|
||||
list.caption.group.newModule=New Module
|
||||
list.caption.group.newProject=New {0,choice,0#Module|1#Project}
|
||||
|
||||
new.project.wizard.popup.title.install.plugin=Install Plugin
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.intellij.ide.wizard
|
||||
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.openapi.util.NlsContexts
|
||||
import com.intellij.util.PlatformUtils
|
||||
import org.jetbrains.annotations.Nls
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import javax.swing.Icon
|
||||
@@ -15,6 +16,7 @@ import javax.swing.Icon
|
||||
* project generators in PyCharm.
|
||||
*/
|
||||
interface GeneratorNewProjectWizard {
|
||||
|
||||
/**
|
||||
* The unique identifier to distinguish this generator from others in the new project wizard.
|
||||
*/
|
||||
@@ -30,6 +32,12 @@ interface GeneratorNewProjectWizard {
|
||||
*/
|
||||
val icon: Icon
|
||||
|
||||
/**
|
||||
* The ordinal number by which all generators are sorted in the generator tray (on the left).
|
||||
*/
|
||||
val ordinal: Int
|
||||
get() = Int.MAX_VALUE
|
||||
|
||||
/**
|
||||
* The description of the generator.
|
||||
*/
|
||||
@@ -42,6 +50,12 @@ interface GeneratorNewProjectWizard {
|
||||
val groupName: @Nls String?
|
||||
get() = null
|
||||
|
||||
/**
|
||||
* Disabled generators will be excluded from the new project wizard.
|
||||
* For example, you can use [PlatformUtils.isIdeaCommunity] or [PlatformUtils.isIdeaUltimate], etc.
|
||||
*/
|
||||
fun isEnabled(): Boolean = true
|
||||
|
||||
/**
|
||||
* Create the main new project wizard step for this generator.
|
||||
*/
|
||||
|
||||
+3
@@ -10,11 +10,14 @@ import javax.swing.Icon
|
||||
* [com.intellij.ide.util.projectWizard.ModuleBuilder] and register as an extension point.
|
||||
*/
|
||||
abstract class GeneratorNewProjectWizardBuilderAdapter(val wizard: GeneratorNewProjectWizard) : AbstractNewProjectWizardBuilder() {
|
||||
|
||||
override fun getWeight(): Int = wizard.ordinal
|
||||
override fun getBuilderId(): String = NPW_PREFIX + wizard.id
|
||||
override fun getPresentableName(): String = wizard.name
|
||||
override fun getDescription(): String = wizard.description ?: ""
|
||||
override fun getGroupName(): String = wizard.groupName ?: super.getGroupName()
|
||||
override fun getNodeIcon(): Icon = wizard.icon
|
||||
override fun isAvailable(): Boolean = wizard.isEnabled()
|
||||
override fun createStep(context: WizardContext): NewProjectWizardStep = wizard.createStep(context)
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -3,9 +3,14 @@ package com.intellij.ide.wizard
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@JvmDefaultWithCompatibility
|
||||
@Deprecated("Use LanguageGeneratorNewProjectWizard instead")
|
||||
interface LanguageNewProjectWizard : NewProjectWizardMultiStepFactory<NewProjectWizardLanguageStep> {
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmField
|
||||
val EP_NAME: ExtensionPointName<LanguageNewProjectWizard> = ExtensionPointName("com.intellij.newProjectWizard.language")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,17 +4,36 @@ package com.intellij.ide.wizard
|
||||
import com.intellij.openapi.observable.properties.GraphProperty
|
||||
import com.intellij.openapi.util.Key
|
||||
|
||||
/**
|
||||
* Deprecated
|
||||
*
|
||||
* The language new project wizard step was replaced by new project wizard generators.
|
||||
* The language selector was moved from the right side of the wizard to the left tray.
|
||||
*
|
||||
* Please, use [com.intellij.ide.wizard.comment.LinkNewProjectWizardStep] instead of it for navigation between languages.
|
||||
*
|
||||
* @see GeneratorNewProjectWizard
|
||||
* @see com.intellij.ide.wizard.comment.LinkNewProjectWizardStep
|
||||
* @see com.intellij.ide.wizard.language.BaseLanguageGeneratorNewProjectWizard.getLanguageModelBuilderId
|
||||
* @see NewProjectWizardLanguageStep
|
||||
*/
|
||||
@Suppress("DeprecatedCallableAddReplaceWith", "DEPRECATION")
|
||||
@Deprecated("See LanguageNewProjectWizardData documentation for details")
|
||||
interface LanguageNewProjectWizardData : NewProjectWizardBaseData {
|
||||
|
||||
@Deprecated("See LanguageNewProjectWizardData documentation for details")
|
||||
val languageProperty: GraphProperty<String>
|
||||
|
||||
@Deprecated("See LanguageNewProjectWizardData documentation for details")
|
||||
var language: String
|
||||
|
||||
companion object {
|
||||
|
||||
@Deprecated("See LanguageNewProjectWizardData documentation for details")
|
||||
val KEY: Key<LanguageNewProjectWizardData> = Key.create(LanguageNewProjectWizardData::class.java.name)
|
||||
|
||||
@JvmStatic
|
||||
@Deprecated("See LanguageNewProjectWizardData documentation for details")
|
||||
val NewProjectWizardStep.languageData: LanguageNewProjectWizardData?
|
||||
get() = data.getUserData(KEY)
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.wizard
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Generators
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ide.wizard.comment.CommentNewProjectWizardStep
|
||||
import com.intellij.openapi.module.GeneralModuleType
|
||||
import com.intellij.openapi.module.ModuleTypeManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.UIBundle
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import javax.swing.Icon
|
||||
|
||||
class NewEmptyProjectBuilder : GeneratorNewProjectWizardBuilderAdapter(EmptyNewProjectWizard()) {
|
||||
class EmptyNewProjectWizard : GeneratorNewProjectWizard {
|
||||
override val id: String = Generators.EMPTY_PROJECT
|
||||
override val name: String = UIBundle.message("label.project.wizard.empty.project.generator.name")
|
||||
override val description: String = UIBundle.message("label.project.wizard.empty.project.generator.description")
|
||||
override val icon: Icon = EmptyIcon.ICON_0
|
||||
|
||||
override fun createStep(context: WizardContext): NewProjectWizardStep =
|
||||
RootNewProjectWizardStep(context)
|
||||
.nextStep(::CommentStep)
|
||||
.nextStep(::newProjectWizardBaseStepWithoutGap)
|
||||
.nextStep(::GitNewProjectWizardStep)
|
||||
.nextStep(::Step)
|
||||
}
|
||||
|
||||
private class CommentStep(parent: NewProjectWizardStep) : CommentNewProjectWizardStep(parent) {
|
||||
override val comment: String = UIBundle.message("label.project.wizard.empty.project.generator.full.description")
|
||||
}
|
||||
|
||||
private class Step(parent: NewProjectWizardStep) : AbstractNewProjectWizardStep(parent) {
|
||||
override fun setupProject(project: Project) {
|
||||
val moduleType = ModuleTypeManager.getInstance().findByID(GeneralModuleType.TYPE_ID)
|
||||
val builder = moduleType.createModuleBuilder()
|
||||
setupProjectFromBuilder(project, builder)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.wizard
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Generators
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ui.UIBundle
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import javax.swing.Icon
|
||||
|
||||
class NewModuleBuilder : GeneratorNewProjectWizardBuilderAdapter(SimpleNewModuleWizard()) {
|
||||
class SimpleNewModuleWizard : GeneratorNewProjectWizard {
|
||||
override val id: String = Generators.SIMPLE_MODULE
|
||||
override val name: String = UIBundle.message("label.project.wizard.module.generator.name")
|
||||
override val description: String = UIBundle.message("label.project.wizard.module.generator.description")
|
||||
override val icon: Icon = EmptyIcon.ICON_0
|
||||
|
||||
override fun createStep(context: WizardContext): NewProjectWizardStep =
|
||||
RootNewProjectWizardStep(context)
|
||||
.nextStep(::NewProjectWizardBaseStep)
|
||||
.nextStep(::NewProjectWizardLanguageStep)
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.wizard
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Generators
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ui.UIBundle
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import javax.swing.Icon
|
||||
|
||||
class NewProjectBuilder : GeneratorNewProjectWizardBuilderAdapter(SimpleNewProjectWizard()) {
|
||||
class SimpleNewProjectWizard : GeneratorNewProjectWizard {
|
||||
override val id: String = Generators.SIMPLE_PROJECT
|
||||
override val name: String = UIBundle.message("label.project.wizard.project.generator.name")
|
||||
override val description: String = UIBundle.message("label.project.wizard.project.generator.description")
|
||||
override val icon: Icon = EmptyIcon.ICON_0
|
||||
|
||||
override fun createStep(context: WizardContext): NewProjectWizardStep =
|
||||
RootNewProjectWizardStep(context)
|
||||
.nextStep(::newProjectWizardBaseStepWithoutGap)
|
||||
.nextStep(::GitNewProjectWizardStep)
|
||||
.nextStep(::NewProjectWizardLanguageStep)
|
||||
}
|
||||
}
|
||||
+53
-106
@@ -1,128 +1,75 @@
|
||||
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.wizard
|
||||
|
||||
import com.intellij.icons.AllIcons
|
||||
import com.intellij.ide.plugins.PluginManagerConfigurable
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardCollector.Base.logLanguageAddAction
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardCollector.Base.logLanguageChanged
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardCollector.Base.logLanguageFinished
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardCollector.Base.logLanguageLoadAction
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Language
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
|
||||
import com.intellij.openapi.actionSystem.*
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
import com.intellij.openapi.actionSystem.impl.IdeaActionButtonLook
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.extensions.PluginId
|
||||
import com.intellij.ide.wizard.language.BaseLanguageGeneratorNewProjectWizard
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.observable.properties.AbstractObservableProperty
|
||||
import com.intellij.openapi.observable.properties.GraphProperty
|
||||
import com.intellij.openapi.options.ShowSettingsUtil
|
||||
import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.project.DumbAwareAction
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||
import com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.InstallPluginTask
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.ui.UIBundle
|
||||
import com.intellij.ui.awt.RelativePoint
|
||||
import com.intellij.ui.dsl.builder.BottomGap
|
||||
import com.intellij.openapi.observable.properties.ObservableProperty
|
||||
import com.intellij.openapi.observable.properties.PropertyGraph
|
||||
import com.intellij.ui.dsl.builder.Panel
|
||||
import com.intellij.ui.dsl.builder.Row
|
||||
import com.intellij.ui.dsl.builder.SegmentedButton
|
||||
import com.intellij.ui.dsl.builder.components.SegmentedButtonBorder
|
||||
import com.intellij.util.PlatformUtils
|
||||
import org.jetbrains.annotations.Nls
|
||||
import javax.swing.JComponent
|
||||
|
||||
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION")
|
||||
@Deprecated("See LanguageNewProjectWizardData documentation for details")
|
||||
class NewProjectWizardLanguageStep(
|
||||
parent: NewProjectWizardStep
|
||||
) : AbstractNewProjectWizardMultiStep<NewProjectWizardLanguageStep, LanguageNewProjectWizard>(parent, LanguageNewProjectWizard.EP_NAME),
|
||||
parent: NewProjectWizardStep,
|
||||
languageName: String
|
||||
) : AbstractNewProjectWizardStep(parent),
|
||||
LanguageNewProjectWizardData,
|
||||
NewProjectWizardBaseData by parent.baseData!! {
|
||||
|
||||
override val self: NewProjectWizardLanguageStep = this
|
||||
private val languagePropertyBridge = LanguagePropertyBridge(context, propertyGraph, languageName)
|
||||
|
||||
override val label: @Nls String = UIBundle.message("label.project.wizard.new.project.language")
|
||||
|
||||
override val languageProperty: GraphProperty<String> by ::stepProperty
|
||||
override var language: String by ::step
|
||||
|
||||
private var additionalStepPlugins =
|
||||
if (PlatformUtils.isIdeaCommunity())
|
||||
mapOf(
|
||||
Language.PYTHON to "PythonCore",
|
||||
Language.SCALA to "org.intellij.scala"
|
||||
)
|
||||
else
|
||||
mapOf(
|
||||
Language.GO to "org.jetbrains.plugins.go",
|
||||
Language.RUBY to "org.jetbrains.plugins.ruby",
|
||||
Language.PHP to "com.jetbrains.php",
|
||||
Language.PYTHON to "Pythonid",
|
||||
Language.SCALA to "org.intellij.scala",
|
||||
Language.RUST to "com.jetbrains.rust"
|
||||
)
|
||||
|
||||
override fun createAndSetupSwitcher(builder: Row): SegmentedButton<String> {
|
||||
return super.createAndSetupSwitcher(builder)
|
||||
.whenItemSelectedFromUi { logLanguageChanged() }
|
||||
}
|
||||
|
||||
override fun setupSwitcherUi(builder: Panel) {
|
||||
with(builder) {
|
||||
row(label) {
|
||||
createAndSetupSwitcher(this@row)
|
||||
|
||||
if (additionalStepPlugins.isNotEmpty()) {
|
||||
val plus = AdditionalStepsAction()
|
||||
val actionButton = ActionButton(
|
||||
plus,
|
||||
null,
|
||||
ActionPlaces.getPopupPlace("NEW_PROJECT_WIZARD"),
|
||||
ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE
|
||||
)
|
||||
actionButton.setLook(IdeaActionButtonLook())
|
||||
actionButton.border = SegmentedButtonBorder()
|
||||
cell(actionButton)
|
||||
}
|
||||
}.bottomGap(BottomGap.SMALL)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setupProject(project: Project) {
|
||||
super.setupProject(project)
|
||||
|
||||
logLanguageFinished()
|
||||
}
|
||||
override val languageProperty: GraphProperty<String> = languagePropertyBridge
|
||||
override var language: String by languagePropertyBridge
|
||||
|
||||
init {
|
||||
data.putUserData(LanguageNewProjectWizardData.KEY, this)
|
||||
}
|
||||
|
||||
private inner class AdditionalStepsAction : DumbAwareAction(null, null, AllIcons.General.Add) {
|
||||
override fun actionPerformed(e: AnActionEvent) {
|
||||
logLanguageAddAction()
|
||||
val additionalSteps = (additionalStepPlugins.keys - steps.keys).sorted().map { OpenMarketPlaceAction(it) }
|
||||
JBPopupFactory.getInstance().createActionGroupPopup(
|
||||
UIBundle.message("new.project.wizard.popup.title.install.plugin"), DefaultActionGroup(additionalSteps),
|
||||
e.dataContext,
|
||||
JBPopupFactory.ActionSelectionAid.SPEEDSEARCH, false
|
||||
).show(RelativePoint.getSouthOf(e.getData(PlatformCoreDataKeys.CONTEXT_COMPONENT) as JComponent))
|
||||
}
|
||||
override fun setupUI(builder: Panel) {
|
||||
languagePropertyBridge.fireInitEvent()
|
||||
}
|
||||
|
||||
private inner class OpenMarketPlaceAction(private val step: String) : DumbAwareAction({ step }) {
|
||||
override fun actionPerformed(e: AnActionEvent) {
|
||||
logLanguageLoadAction(step)
|
||||
val pluginId = PluginId.getId(additionalStepPlugins[step]!!)
|
||||
val component = e.dataContext.getData(PlatformCoreDataKeys.CONTEXT_COMPONENT)!!
|
||||
if (Registry.`is`("new.project.wizard.modal.plugin.install", false)) {
|
||||
ProgressManager.getInstance().run(InstallPluginTask(setOf(pluginId), ModalityState.stateForComponent(component)))
|
||||
}
|
||||
else {
|
||||
ShowSettingsUtil.getInstance().editConfigurable(context.project, PluginManagerConfigurable()) { it ->
|
||||
it.openMarketplaceTab("/tag: \"Programming Language\" $step")
|
||||
}
|
||||
}
|
||||
private class LanguagePropertyBridge(
|
||||
private val context: WizardContext,
|
||||
private val propertyGraph: PropertyGraph,
|
||||
private val languageName: String
|
||||
) : GraphProperty<String>, AbstractObservableProperty<String>() {
|
||||
|
||||
override fun get(): String {
|
||||
return languageName
|
||||
}
|
||||
|
||||
/**
|
||||
* This method needed to support legacy feature.
|
||||
* It selects language in the left tray [com.intellij.ide.projectWizard.ProjectTypeStep] with [GeneratorNewProjectWizard].
|
||||
* Use [com.intellij.ide.wizard.comment.LinkNewProjectWizardStep] for navigation between languages.
|
||||
*/
|
||||
override fun set(value: String) {
|
||||
val languageModelBuilderId = BaseLanguageGeneratorNewProjectWizard.getLanguageModelBuilderId(context, value)
|
||||
context.requestSwitchTo(languageModelBuilderId)
|
||||
}
|
||||
|
||||
/**
|
||||
* This method needed to support legacy feature.
|
||||
* It submits all change events to consumers who initialize background tasks when their language is selected.
|
||||
*/
|
||||
fun fireInitEvent() {
|
||||
fireChangeEvent(languageName)
|
||||
}
|
||||
|
||||
//@formatter:off
|
||||
override fun dependsOn(parent: ObservableProperty<*>, update: () -> String) =
|
||||
propertyGraph.dependsOn(this, parent, update = update)
|
||||
override fun dependsOn(parent: ObservableProperty<*>, deleteWhenModified: Boolean, update: () -> String) =
|
||||
propertyGraph.dependsOn(this, parent, deleteWhenModified, update = update)
|
||||
override fun afterPropagation(listener: () -> Unit) =
|
||||
propertyGraph.afterPropagation(listener = listener)
|
||||
override fun afterPropagation(parentDisposable: Disposable?, listener: () -> Unit) =
|
||||
propertyGraph.afterPropagation(parentDisposable, listener = listener)
|
||||
//@formatter:on
|
||||
}
|
||||
}
|
||||
|
||||
+11
-7
@@ -3,19 +3,21 @@ package com.intellij.ide.wizard
|
||||
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.openapi.util.NlsContexts
|
||||
import com.intellij.util.PlatformUtils
|
||||
|
||||
/**
|
||||
* Describes fork in steps' tree in new project wizard.
|
||||
* Appends control and logic to switch UI from different vertical wizard steps,
|
||||
* and applies data from steps which are selected when wizard's finish button is pressed.
|
||||
* Steps can form tree structure, i.e. direct or indirect child of multistep can be multistep.
|
||||
* and applies data from steps which are selected when the wizard's finish button is pressed.
|
||||
* Steps can form tree structure, i.e., direct or indirect child of multistep can be multistep.
|
||||
*
|
||||
* @see NewProjectWizardStep
|
||||
*/
|
||||
@JvmDefaultWithCompatibility
|
||||
interface NewProjectWizardMultiStepFactory<P : NewProjectWizardStep> {
|
||||
|
||||
/**
|
||||
* Name of step and label that should be used in multistep switcher.
|
||||
* Name of the created step and label that should be used in multistep switcher.
|
||||
*/
|
||||
val name: @NlsContexts.Label String
|
||||
|
||||
@@ -27,15 +29,17 @@ interface NewProjectWizardMultiStepFactory<P : NewProjectWizardStep> {
|
||||
|
||||
/**
|
||||
* Disabled steps will be excluded from multistep switcher.
|
||||
* For example, you can use [WizardContext.isCreatingNewProject] to filter factory if that factory cannot create new module.
|
||||
* Or [PlatformUtils.isIdeaCommunity] or [PlatformUtils.isIdeaUltimate], etc.
|
||||
*
|
||||
* @param context is context of wizard where created step will be displayed
|
||||
* Use [WizardContext.isCreatingNewProject] to filter factory if that cannot create new module.
|
||||
* @param context is context of wizard where the created step will be displayed.
|
||||
*/
|
||||
fun isEnabled(context: WizardContext): Boolean = true
|
||||
|
||||
/**
|
||||
* Creates new project wizard step with parent step.
|
||||
* Parent is needed to transfer data from parents into children steps.
|
||||
* Creates the new project wizard step with the [parent] step.
|
||||
*
|
||||
* @param parent is needed to transfer data from parents into children steps.
|
||||
*/
|
||||
fun createStep(parent: P): NewProjectWizardStep
|
||||
}
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.wizard.comment
|
||||
|
||||
import com.intellij.ide.wizard.NewModuleBuilder
|
||||
import com.intellij.ide.wizard.NewProjectBuilder
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep
|
||||
import org.jetbrains.annotations.Nls
|
||||
|
||||
abstract class NewProjectLinkNewProjectWizardStep(parent: NewProjectWizardStep) : LinkNewProjectWizardStep(parent) {
|
||||
|
||||
private val builder = if (context.isCreatingNewProject) NewProjectBuilder() else NewModuleBuilder()
|
||||
|
||||
override val builderId: String = builder.builderId
|
||||
|
||||
override val comment: String by lazy { getComment(builder.presentableName) }
|
||||
|
||||
abstract fun getComment(
|
||||
name: @Nls(capitalization = Nls.Capitalization.Title) String
|
||||
): @Nls(capitalization = Nls.Capitalization.Sentence) String
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.wizard.language
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Generators.SIMPLE_MODULE
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Generators.SIMPLE_PROJECT
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.*
|
||||
import com.intellij.ide.wizard.GeneratorNewProjectWizardBuilderAdapter.Companion.NPW_PREFIX
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ui.UIBundle
|
||||
import javax.swing.Icon
|
||||
|
||||
class BaseLanguageGeneratorNewProjectWizard(
|
||||
private val context: WizardContext,
|
||||
private val wizard: LanguageGeneratorNewProjectWizard
|
||||
) : GeneratorNewProjectWizard {
|
||||
|
||||
override val id: String = getLanguageGeneratorId(context, wizard.name)
|
||||
|
||||
override val name: String = wizard.name
|
||||
|
||||
override val icon: Icon = wizard.icon
|
||||
|
||||
override val ordinal: Int = wizard.ordinal
|
||||
|
||||
override val description: String =
|
||||
UIBundle.message("label.project.wizard.project.generator.description", context.isCreatingNewProjectInt, wizard.name)
|
||||
|
||||
override fun isEnabled(): Boolean = wizard.isEnabled(context)
|
||||
|
||||
override fun createStep(context: WizardContext): NewProjectWizardStep =
|
||||
RootNewProjectWizardStep(context)
|
||||
.nextStep(::newProjectWizardBaseStepWithoutGap)
|
||||
.nextStep(::GitNewProjectWizardStep)
|
||||
.nextStep { @Suppress("DEPRECATION") NewProjectWizardLanguageStep(it, wizard.name) }
|
||||
.nextStep(wizard::createStep)
|
||||
|
||||
companion object {
|
||||
|
||||
fun getLanguageGeneratorId(context: WizardContext, language: String): String {
|
||||
val generator = if (context.isCreatingNewProject) SIMPLE_PROJECT else SIMPLE_MODULE
|
||||
return "$generator.$language"
|
||||
}
|
||||
|
||||
fun getLanguageModelBuilderId(context: WizardContext, language: String): String {
|
||||
return NPW_PREFIX + getLanguageGeneratorId(context, language)
|
||||
}
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.wizard.language
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.*
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ide.wizard.comment.CommentNewProjectWizardStep
|
||||
import com.intellij.openapi.module.GeneralModuleType
|
||||
import com.intellij.openapi.module.ModuleTypeManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.UIBundle
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import javax.swing.Icon
|
||||
|
||||
class EmptyProjectGeneratorNewProjectWizard : GeneratorNewProjectWizard {
|
||||
override val id: String = NewProjectWizardConstants.Generators.EMPTY_PROJECT
|
||||
override val name: String = UIBundle.message("label.project.wizard.empty.project.generator.name")
|
||||
override val description: String = UIBundle.message("label.project.wizard.empty.project.generator.description")
|
||||
override val icon: Icon = EmptyIcon.ICON_16
|
||||
|
||||
override fun createStep(context: WizardContext): NewProjectWizardStep =
|
||||
RootNewProjectWizardStep(context)
|
||||
.nextStep(::CommentStep)
|
||||
.nextStep(::newProjectWizardBaseStepWithoutGap)
|
||||
.nextStep(::GitNewProjectWizardStep)
|
||||
.nextStep(::Step)
|
||||
|
||||
private class CommentStep(parent: NewProjectWizardStep) : CommentNewProjectWizardStep(parent) {
|
||||
override val comment: String = UIBundle.message("label.project.wizard.empty.project.generator.full.description")
|
||||
}
|
||||
|
||||
private class Step(parent: NewProjectWizardStep) : AbstractNewProjectWizardStep(parent) {
|
||||
override fun setupProject(project: Project) {
|
||||
val moduleType = ModuleTypeManager.getInstance().findByID(GeneralModuleType.TYPE_ID)
|
||||
val builder = moduleType.createModuleBuilder()
|
||||
setupProjectFromBuilder(project, builder)
|
||||
}
|
||||
}
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.wizard.language
|
||||
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
import com.intellij.util.PlatformUtils
|
||||
import org.jetbrains.annotations.Nls
|
||||
import javax.swing.Icon
|
||||
|
||||
/**
|
||||
* A generator-based project wizard for specific language.
|
||||
* These generators are present in the first part of the generator tray (on the left).
|
||||
*
|
||||
* @see com.intellij.ide.wizard.GeneratorNewProjectWizard
|
||||
*/
|
||||
interface LanguageGeneratorNewProjectWizard {
|
||||
|
||||
/**
|
||||
* The user-visible name of the generator.
|
||||
*
|
||||
* @see com.intellij.ide.wizard.GeneratorNewProjectWizard.name
|
||||
*/
|
||||
val name: @Nls(capitalization = Nls.Capitalization.Title) String
|
||||
|
||||
/**
|
||||
* The icon of the generator.
|
||||
*
|
||||
* @see com.intellij.ide.wizard.GeneratorNewProjectWizard.icon
|
||||
*/
|
||||
val icon: Icon
|
||||
|
||||
/**
|
||||
* The ordinal number by which all languages are sorted in the generator tray (on the left).
|
||||
*
|
||||
* @see com.intellij.ide.wizard.GeneratorNewProjectWizard.ordinal
|
||||
*/
|
||||
val ordinal: Int
|
||||
get() = Int.MAX_VALUE
|
||||
|
||||
/**
|
||||
* Disabled generators will be excluded from the new project wizard.
|
||||
* For example, you can use [WizardContext.isCreatingNewProject] to filter factory if that factory cannot create new module.
|
||||
* Or [PlatformUtils.isIdeaCommunity] or [PlatformUtils.isIdeaUltimate], etc.
|
||||
*
|
||||
* @param context is context of wizard where the created step will be displayed.
|
||||
*
|
||||
* @see com.intellij.ide.wizard.GeneratorNewProjectWizard.isEnabled
|
||||
*/
|
||||
fun isEnabled(context: WizardContext): Boolean = true
|
||||
|
||||
/**
|
||||
* Creates the new project wizard step with the [parent] step.
|
||||
*
|
||||
* @param parent is needed to transfer data from parents into children steps.
|
||||
*
|
||||
* @see com.intellij.ide.wizard.GeneratorNewProjectWizard.createStep
|
||||
*/
|
||||
fun createStep(parent: NewProjectWizardStep): NewProjectWizardStep
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmField
|
||||
val EP_NAME = ExtensionPointName<LanguageGeneratorNewProjectWizard>("com.intellij.newProjectWizard.languageGenerator")
|
||||
}
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
@file:Suppress("DEPRECATION")
|
||||
|
||||
package com.intellij.ide.wizard.language
|
||||
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.*
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizard
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ide.wizard.language.BaseLanguageGeneratorNewProjectWizard.Companion.getLanguageGeneratorId
|
||||
import com.intellij.ui.UIBundle
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import javax.swing.Icon
|
||||
|
||||
@ApiStatus.Internal
|
||||
class LegacyLanguageGeneratorNewProjectWizard(
|
||||
private val context: WizardContext,
|
||||
private val wizard: LanguageNewProjectWizard
|
||||
) : GeneratorNewProjectWizard {
|
||||
|
||||
override val id: String = getLanguageGeneratorId(context, wizard.name)
|
||||
|
||||
override val name: String = wizard.name
|
||||
|
||||
override val icon: Icon = EmptyIcon.ICON_16
|
||||
|
||||
override val ordinal: Int = wizard.ordinal
|
||||
|
||||
override val description: String =
|
||||
UIBundle.message("label.project.wizard.project.generator.description", context.isCreatingNewProjectInt, wizard.name)
|
||||
|
||||
override fun isEnabled(): Boolean = wizard.isEnabled(context)
|
||||
|
||||
override fun createStep(context: WizardContext): NewProjectWizardStep =
|
||||
RootNewProjectWizardStep(context)
|
||||
.nextStep(::newProjectWizardBaseStepWithoutGap)
|
||||
.nextStep(::GitNewProjectWizardStep)
|
||||
.nextStep { NewProjectWizardLanguageStep(it, wizard.name) }
|
||||
.nextStep(wizard::createStep)
|
||||
}
|
||||
@@ -470,6 +470,7 @@
|
||||
<extensionPoint name="documentationActionProvider" interface="com.intellij.codeInsight.documentation.DocumentationActionProvider" dynamic="true"/>
|
||||
|
||||
<extensionPoint name="newProjectWizard.language" interface="com.intellij.ide.wizard.LanguageNewProjectWizard" dynamic="true"/>
|
||||
<extensionPoint name="newProjectWizard.languageGenerator" interface="com.intellij.ide.wizard.language.LanguageGeneratorNewProjectWizard" dynamic="true"/>
|
||||
|
||||
<extensionPoint name="newProject.onboarding.tips" interface="com.intellij.ide.wizard.NewProjectOnboardingTips" dynamic="true"/>
|
||||
|
||||
|
||||
@@ -1605,8 +1605,6 @@
|
||||
<persistentFsConnectionListener implementation="com.intellij.openapi.vfs.impl.jar.ArchiveCachesCleaner"/>
|
||||
<applicationService serviceInterface="com.intellij.platform.ide.progress.TaskSupport"
|
||||
serviceImplementation="com.intellij.openapi.progress.impl.PlatformTaskSupport" preload="true"/>
|
||||
<registryKey key="new.project.wizard.modal.plugin.install" description="Enables modal lanungage plugins installing"
|
||||
defaultValue="false"/>
|
||||
<searchEverywhereContributor implementation="com.intellij.find.impl.TextSearchContributor$Companion$Factory"/>
|
||||
|
||||
<applicationService serviceInterface="com.intellij.openapi.vfs.newvfs.persistent.FsRootDataLoader"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.setup
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Language.JAVA
|
||||
import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.javaBuildSystemData
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.languageData
|
||||
import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.testFramework.useProjectAsync
|
||||
@@ -139,9 +139,8 @@ class GradleCreateProjectTest : GradleCreateProjectTestCase() {
|
||||
baseData!!.path = testRoot.path
|
||||
}.withProjectAsync { project ->
|
||||
assertModules(project, "project")
|
||||
createModuleByWizard(project) {
|
||||
createModuleByWizard(project, JAVA) {
|
||||
baseData!!.path = testRoot.path + "/project"
|
||||
languageData!!.language = "Java"
|
||||
javaBuildSystemData!!.buildSystem = "Gradle"
|
||||
javaGradleData!!.addSampleCode = false
|
||||
|
||||
@@ -149,9 +148,8 @@ class GradleCreateProjectTest : GradleCreateProjectTestCase() {
|
||||
Assertions.assertEquals(GradleDsl.KOTLIN, javaGradleData!!.gradleDsl)
|
||||
Assertions.assertNull(javaGradleData!!.parentData)
|
||||
}
|
||||
createModuleByWizard(project) {
|
||||
createModuleByWizard(project, JAVA) {
|
||||
baseData!!.path = testRoot.path + "/project"
|
||||
languageData!!.language = "Java"
|
||||
javaBuildSystemData!!.buildSystem = "Gradle"
|
||||
javaGradleData!!.addSampleCode = false
|
||||
|
||||
@@ -167,8 +165,7 @@ class GradleCreateProjectTest : GradleCreateProjectTestCase() {
|
||||
}.useProjectAsync { project ->
|
||||
val projectNode1 = ExternalSystemApiUtil.findProjectNode(project, SYSTEM_ID, testRoot.path + "/project/untitled")!!
|
||||
val projectNode2 = ExternalSystemApiUtil.findProjectNode(project, SYSTEM_ID, testRoot.path + "/project/untitled1")!!
|
||||
createModuleByWizard(project) {
|
||||
languageData!!.language = "Java"
|
||||
createModuleByWizard(project, JAVA) {
|
||||
javaBuildSystemData!!.buildSystem = "Gradle"
|
||||
javaGradleData!!.parentData = projectNode1.data
|
||||
javaGradleData!!.addSampleCode = false
|
||||
@@ -177,8 +174,7 @@ class GradleCreateProjectTest : GradleCreateProjectTestCase() {
|
||||
Assertions.assertEquals(testRoot.path + "/project/untitled", baseData!!.path)
|
||||
Assertions.assertEquals(GradleDsl.KOTLIN, javaGradleData!!.gradleDsl)
|
||||
}
|
||||
createModuleByWizard(project) {
|
||||
languageData!!.language = "Java"
|
||||
createModuleByWizard(project, JAVA) {
|
||||
javaBuildSystemData!!.buildSystem = "Gradle"
|
||||
javaGradleData!!.parentData = projectNode2.data
|
||||
javaGradleData!!.addSampleCode = false
|
||||
|
||||
@@ -3,11 +3,12 @@ package org.jetbrains.plugins.gradle.setup
|
||||
|
||||
import com.intellij.ide.impl.NewProjectUtil
|
||||
import com.intellij.ide.projectWizard.NewProjectWizard
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.GRADLE
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Language.JAVA
|
||||
import com.intellij.ide.projectWizard.ProjectTypeStep
|
||||
import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.javaBuildSystemData
|
||||
import com.intellij.ide.util.PropertiesComponent
|
||||
import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.languageData
|
||||
import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME
|
||||
@@ -54,7 +55,7 @@ abstract class GradleCreateProjectTestCase : GradleTestCase() {
|
||||
suspend fun createProjectByWizard(projectInfo: ProjectInfo): Project {
|
||||
Assertions.assertTrue(projectInfo.composites.isEmpty(), "NPW cannot create composite projects please use initProject instead.")
|
||||
val rootModuleInfo = projectInfo.rootModule
|
||||
return createProjectByWizard {
|
||||
return createProjectByWizard(JAVA) {
|
||||
configureWizardStepSettings(this, rootModuleInfo, null)
|
||||
}.withProjectAsync { project ->
|
||||
val projectRoot = testRoot.getDirectory(projectInfo.relativePath)
|
||||
@@ -65,7 +66,7 @@ abstract class GradleCreateProjectTestCase : GradleTestCase() {
|
||||
)!!
|
||||
for (moduleInfo in projectInfo.modules) {
|
||||
if (moduleInfo != rootModuleInfo) {
|
||||
createModuleByWizard(project) {
|
||||
createModuleByWizard(project, JAVA) {
|
||||
configureWizardStepSettings(this, moduleInfo, parentData.data)
|
||||
}
|
||||
}
|
||||
@@ -74,10 +75,9 @@ abstract class GradleCreateProjectTestCase : GradleTestCase() {
|
||||
}
|
||||
|
||||
private fun configureWizardStepSettings(step: NewProjectWizardStep, moduleInfo: ModuleInfo, parentData: ProjectData?) {
|
||||
step.languageData!!.language = "Java"
|
||||
step.javaBuildSystemData!!.buildSystem = "Gradle"
|
||||
step.baseData!!.name = moduleInfo.name
|
||||
step.baseData!!.path = testRoot.toNioPath().getResolvedPath(moduleInfo.relativePath).parent.toCanonicalPath()
|
||||
step.javaBuildSystemData!!.buildSystem = GRADLE
|
||||
step.javaGradleData!!.gradleDsl = when (moduleInfo.useKotlinDsl) {
|
||||
true -> GradleNewProjectWizardStep.GradleDsl.KOTLIN
|
||||
else -> GradleNewProjectWizardStep.GradleDsl.GROOVY
|
||||
@@ -90,7 +90,7 @@ abstract class GradleCreateProjectTestCase : GradleTestCase() {
|
||||
}
|
||||
|
||||
suspend fun createProjectByWizard(
|
||||
group: String = NEW_PROJECT,
|
||||
group: String,
|
||||
wait: Boolean = true,
|
||||
configure: NewProjectWizardStep.() -> Unit
|
||||
): Project {
|
||||
@@ -110,7 +110,7 @@ abstract class GradleCreateProjectTestCase : GradleTestCase() {
|
||||
|
||||
suspend fun createModuleByWizard(
|
||||
project: Project,
|
||||
group: String = NEW_MODULE,
|
||||
group: String,
|
||||
wait: Boolean = true,
|
||||
configure: NewProjectWizardStep.() -> Unit
|
||||
): Module? {
|
||||
@@ -180,8 +180,6 @@ abstract class GradleCreateProjectTestCase : GradleTestCase() {
|
||||
|
||||
companion object {
|
||||
|
||||
val NEW_PROJECT = UIBundle.message("label.project.wizard.project.generator.name")
|
||||
val NEW_MODULE = UIBundle.message("label.project.wizard.module.generator.name")
|
||||
val NEW_EMPTY_PROJECT = UIBundle.message("label.project.wizard.empty.project.generator.name")
|
||||
}
|
||||
}
|
||||
+8
-8
@@ -1,7 +1,9 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard
|
||||
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.languageData
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.GRADLE
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Language.KOTLIN
|
||||
import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep
|
||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
@@ -164,12 +166,10 @@ class GradleKotlinNewProjectWizardTest : GradleCreateProjectTestCase() {
|
||||
generateOnboardingTips: Boolean = false,
|
||||
parentData: ProjectData? = null
|
||||
) {
|
||||
languageData!!.language = "Kotlin"
|
||||
kotlinBuildSystemData!!.buildSystem = "Gradle"
|
||||
kotlinBuildSystemData!!.path = testRoot.toNioPath().getResolvedPath(path).parent.toCanonicalPath()
|
||||
baseData!!.name = name
|
||||
baseData!!.path = testRoot.toNioPath().getResolvedPath(path).parent.toCanonicalPath()
|
||||
kotlinBuildSystemData!!.buildSystem = GRADLE
|
||||
kotlinGradleData!!.parentData = parentData
|
||||
kotlinBuildSystemData!!.name = name
|
||||
kotlinBuildSystemData!!.language = "Kotlin"
|
||||
kotlinGradleData!!.gradleDsl = if (useKotlinDsl) GradleDsl.KOTLIN else GradleDsl.GROOVY
|
||||
kotlinGradleData!!.groupId = groupId
|
||||
kotlinGradleData!!.artifactId = name
|
||||
@@ -190,7 +190,7 @@ class GradleKotlinNewProjectWizardTest : GradleCreateProjectTestCase() {
|
||||
) {
|
||||
|
||||
runBlocking {
|
||||
createProjectByWizard {
|
||||
createProjectByWizard(KOTLIN) {
|
||||
setGradleWizardData(
|
||||
useKotlinDsl = useKotlinDsl,
|
||||
name = name,
|
||||
@@ -321,7 +321,7 @@ class GradleKotlinNewProjectWizardTest : GradleCreateProjectTestCase() {
|
||||
openProject("project").useProjectAsync { project ->
|
||||
val parentData = ExternalSystemApiUtil.findProjectNode(project, SYSTEM_ID, testRoot.path + "/$parentPath")!!
|
||||
val existingModules = project.modules.map { it.name }
|
||||
createModuleByWizard(project) {
|
||||
createModuleByWizard(project, KOTLIN) {
|
||||
setGradleWizardData(
|
||||
useKotlinDsl = useKotlinDsl,
|
||||
name = name,
|
||||
|
||||
+9
-7
@@ -12,9 +12,9 @@ import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizard
|
||||
import com.intellij.ide.starters.local.StandardAssetsProvider
|
||||
import com.intellij.ide.util.projectWizard.WizardContext
|
||||
import com.intellij.ide.wizard.*
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.languageData
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ide.wizard.comment.NewProjectLinkNewProjectWizardStep
|
||||
import com.intellij.ide.wizard.comment.LinkNewProjectWizardStep
|
||||
import com.intellij.ide.wizard.language.BaseLanguageGeneratorNewProjectWizard
|
||||
import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionComboBox
|
||||
import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionComboBoxConverter
|
||||
import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionField
|
||||
@@ -63,13 +63,15 @@ class MavenArchetypeNewProjectWizard : GeneratorNewProjectWizard {
|
||||
.nextStep(::Step)
|
||||
.nextStep(::AssetsStep)
|
||||
|
||||
private class CommentStep(parent: NewProjectWizardStep) : NewProjectLinkNewProjectWizardStep(parent) {
|
||||
override fun getComment(name: String): String {
|
||||
return MavenWizardBundle.message("maven.new.project.wizard.archetype.generator.comment", context.isCreatingNewProjectInt, name)
|
||||
}
|
||||
private class CommentStep(parent: NewProjectWizardStep) : LinkNewProjectWizardStep(parent) {
|
||||
|
||||
override val builderId: String =
|
||||
BaseLanguageGeneratorNewProjectWizard.getLanguageModelBuilderId(context, JAVA)
|
||||
|
||||
override val comment: String =
|
||||
MavenWizardBundle.message("maven.new.project.wizard.archetype.generator.comment", context.isCreatingNewProjectInt, JAVA)
|
||||
|
||||
override fun onStepSelected(step: NewProjectWizardStep) {
|
||||
step.languageData!!.language = JAVA
|
||||
step.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,8 +1,9 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.idea.maven.server
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.MAVEN
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Language.JAVA
|
||||
import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.javaBuildSystemData
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.languageData
|
||||
import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
|
||||
import com.intellij.maven.testFramework.assertWithinTimeout
|
||||
import com.intellij.openapi.util.Ref
|
||||
@@ -20,10 +21,9 @@ class MavenServerConnectorShutdownTest : MavenNewProjectWizardTestCase() {
|
||||
val connectorRef = Ref<MavenServerConnector>()
|
||||
// create project
|
||||
waitForProjectCreation {
|
||||
createProjectFromTemplate {
|
||||
createProjectFromTemplate(JAVA) {
|
||||
it.baseData!!.name = "project"
|
||||
it.languageData!!.language = "Java"
|
||||
it.javaBuildSystemData!!.buildSystem = "Maven"
|
||||
it.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
it.javaMavenData!!.sdk = mySdk
|
||||
}
|
||||
}.withProjectAsync {
|
||||
|
||||
+14
-20
@@ -1,9 +1,10 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.idea.maven.wizards
|
||||
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.MAVEN
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.Language.JAVA
|
||||
import com.intellij.ide.projectWizard.ProjectTypeStep
|
||||
import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.javaBuildSystemData
|
||||
import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.languageData
|
||||
import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep
|
||||
import com.intellij.openapi.application.EDT
|
||||
@@ -15,7 +16,6 @@ import com.intellij.testFramework.closeProjectAsync
|
||||
import com.intellij.testFramework.useProjectAsync
|
||||
import com.intellij.testFramework.utils.module.assertModules
|
||||
import com.intellij.testFramework.withProjectAsync
|
||||
import com.intellij.ui.UIBundle
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -35,10 +35,9 @@ class MavenProjectWizardTest : MavenNewProjectWizardTestCase() {
|
||||
assumeTrue(isWorkspaceImport())
|
||||
// create project
|
||||
waitForProjectCreation {
|
||||
createProjectFromTemplate {
|
||||
createProjectFromTemplate(JAVA) {
|
||||
it.baseData!!.name = "project"
|
||||
it.languageData!!.language = "Java"
|
||||
it.javaBuildSystemData!!.buildSystem = "Maven"
|
||||
it.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
it.javaMavenData!!.sdk = mySdk
|
||||
}
|
||||
}.withProjectAsync { project ->
|
||||
@@ -56,10 +55,9 @@ class MavenProjectWizardTest : MavenNewProjectWizardTestCase() {
|
||||
|
||||
// create module
|
||||
waitForModuleCreation {
|
||||
createModuleFromTemplate(project) {
|
||||
createModuleFromTemplate(project, JAVA) {
|
||||
it.baseData!!.name = "untitled"
|
||||
it.languageData!!.language = "Java"
|
||||
it.javaBuildSystemData!!.buildSystem = "Maven"
|
||||
it.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
it.javaMavenData!!.sdk = mySdk
|
||||
it.javaMavenData!!.parentData = mavenProjectsManager.findProject(module)
|
||||
}
|
||||
@@ -76,10 +74,9 @@ class MavenProjectWizardTest : MavenNewProjectWizardTestCase() {
|
||||
assumeTrue(isWorkspaceImport())
|
||||
// create project
|
||||
waitForProjectCreation {
|
||||
createProjectFromTemplate {
|
||||
createProjectFromTemplate(JAVA) {
|
||||
it.baseData!!.name = "project"
|
||||
it.languageData!!.language = "Java"
|
||||
it.javaBuildSystemData!!.buildSystem = "Maven"
|
||||
it.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
it.javaMavenData!!.sdk = mySdk
|
||||
}
|
||||
}.useProjectAsync { project ->
|
||||
@@ -91,10 +88,9 @@ class MavenProjectWizardTest : MavenNewProjectWizardTestCase() {
|
||||
|
||||
// create
|
||||
waitForModuleCreation {
|
||||
createModuleFromTemplate(project) {
|
||||
createModuleFromTemplate(project, JAVA) {
|
||||
it.baseData!!.name = "untitled"
|
||||
it.languageData!!.language = "Java"
|
||||
it.javaBuildSystemData!!.buildSystem = "Maven"
|
||||
it.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
it.javaMavenData!!.sdk = mySdk
|
||||
it.javaMavenData!!.parentData = mavenProjectsManager.findProject(module)
|
||||
}
|
||||
@@ -112,10 +108,9 @@ class MavenProjectWizardTest : MavenNewProjectWizardTestCase() {
|
||||
fun `test configurator creates module in project structure modifiable model`() = runBlocking {
|
||||
assumeTrue(isWorkspaceImport())
|
||||
waitForProjectCreation {
|
||||
createProjectFromTemplate {
|
||||
createProjectFromTemplate(JAVA) {
|
||||
it.baseData!!.name = "project"
|
||||
it.languageData!!.language = "Java"
|
||||
it.javaBuildSystemData!!.buildSystem = "Maven"
|
||||
it.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
it.javaMavenData!!.sdk = mySdk
|
||||
}
|
||||
}.useProjectAsync { project ->
|
||||
@@ -128,11 +123,10 @@ class MavenProjectWizardTest : MavenNewProjectWizardTestCase() {
|
||||
val module = waitForModuleCreation {
|
||||
withWizard({ modulesConfigurator.addNewModule(null)!! }) {
|
||||
this as ProjectTypeStep
|
||||
assertTrue(setSelectedTemplate(UIBundle.message("label.project.wizard.module.generator.name"), null))
|
||||
assertTrue(setSelectedTemplate(JAVA, null))
|
||||
val step = customStep as NewProjectWizardStep
|
||||
step.baseData!!.name = "untitled"
|
||||
step.languageData!!.language = "Java"
|
||||
step.javaBuildSystemData!!.buildSystem = "Maven"
|
||||
step.javaBuildSystemData!!.buildSystem = MAVEN
|
||||
step.javaMavenData!!.sdk = mySdk
|
||||
}.single()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user