From 41cbc844b07cc855bf59897bd0129a75a0e422bb Mon Sep 17 00:00:00 2001 From: Andrey Starovoyt Date: Mon, 4 Oct 2021 16:35:53 +0300 Subject: [PATCH] platform: add some docs, disable "web" for the new UI IDEA-270273 GitOrigin-RevId: a2f987489767467d4eef38f26b397c85acbac84b --- .../util/projectWizard/AbstractNewProjectStep.java | 14 +++++++++----- .../projectWizard/ProjectSettingsStepBase.java | 10 +++++++--- .../intellij/openapi/module/WebModuleBuilder.java | 8 +++++++- .../platform/DirectoryProjectGenerator.java | 9 ++++++++- .../platform/HideableProjectGenerator.java | 3 ++- 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/AbstractNewProjectStep.java b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/AbstractNewProjectStep.java index 33a2ef2bdc76..46bbdce0c799 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/AbstractNewProjectStep.java +++ b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/AbstractNewProjectStep.java @@ -50,8 +50,12 @@ import java.util.List; import static com.intellij.platform.ProjectTemplatesFactory.CUSTOM_GROUP; +/** + * Defines the new project wizard, which is used in small IDEs where we don't need to work with modules directly + */ public abstract class AbstractNewProjectStep extends DefaultActionGroup implements DumbAware, ActionsWithPanelProvider { - static final ExtensionPointName> EP_NAME = new ExtensionPointName<>("com.intellij.directoryProjectGenerator"); + static final ExtensionPointName> EP_NAME = + new ExtensionPointName<>("com.intellij.directoryProjectGenerator"); private static final Logger LOG = Logger.getInstance(AbstractNewProjectStep.class); private static final Key CREATED_KEY = new Key<>("abstract.new.project.step.created"); @@ -145,11 +149,10 @@ public abstract class AbstractNewProjectStep extends DefaultActionGroup imple ProjectSettingsStepBase step; if (generator instanceof CustomStepProjectGenerator) { - //noinspection unchecked,CastConflictsWithInstanceof + //noinspection unchecked step = (ProjectSettingsStepBase)((CustomStepProjectGenerator)generator).createStep(generator, callback); } else { - //noinspection unchecked step = createProjectSpecificSettingsStep(generator, callback); } @@ -178,7 +181,7 @@ public abstract class AbstractNewProjectStep extends DefaultActionGroup imple Project projectToClose = frame != null ? frame.getProject() : null; DirectoryProjectGenerator generator = settings.getProjectGenerator(); T actualSettings = projectGeneratorPeer.getSettings(); - Project project = doGenerateProject(projectToClose, settings.getProjectLocation(), generator, actualSettings); + doGenerateProject(projectToClose, settings.getProjectLocation(), generator, actualSettings); } } @@ -197,7 +200,8 @@ public abstract class AbstractNewProjectStep extends DefaultActionGroup imple return null; } - VirtualFile baseDir = WriteAction.compute(() -> LocalFileSystem.getInstance().refreshAndFindFileByPath(FileUtil.toSystemIndependentName(location.toString()))); + VirtualFile baseDir = WriteAction.compute( + () -> LocalFileSystem.getInstance().refreshAndFindFileByPath(FileUtil.toSystemIndependentName(location.toString()))); if (baseDir == null) { LOG.error("Couldn't find '" + location + "' in VFS"); return null; diff --git a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java index dbd96be939bc..4b1a647c7b2d 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java @@ -44,7 +44,9 @@ import java.util.List; import static com.intellij.openapi.wm.impl.welcomeScreen.FlatWelcomeFrame.BOTTOM_PANEL; -@SuppressWarnings("ComponentNotRegistered") +/** + * {@link AbstractNewProjectStep} + */ public class ProjectSettingsStepBase extends AbstractActionWithPanel implements DumbAware, Disposable { protected DirectoryProjectGenerator myProjectGenerator; protected AbstractNewProjectStep.AbstractCallback myCallback; @@ -318,7 +320,9 @@ public class ProjectSettingsStepBase extends AbstractActionWithPanel implemen final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); myLocationField.addBrowseFolderListener(IdeBundle.message("directory.project.location.title"), IdeBundle.message("directory.project.location.description"), null, descriptor); - return LabeledComponent.create(myLocationField, BundleBase.replaceMnemonicAmpersand(IdeBundle.message("directory.project.location.label")), BorderLayout.WEST); + return LabeledComponent.create(myLocationField, + BundleBase.replaceMnemonicAmpersand(IdeBundle.message("directory.project.location.label")), + BorderLayout.WEST); } @NotNull @@ -327,5 +331,5 @@ public class ProjectSettingsStepBase extends AbstractActionWithPanel implemen } @Override - public void dispose() {} + public void dispose() { } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/openapi/module/WebModuleBuilder.java b/platform/lang-impl/src/com/intellij/openapi/module/WebModuleBuilder.java index 8cb6b99700b6..0f8735e62fcd 100644 --- a/platform/lang-impl/src/com/intellij/openapi/module/WebModuleBuilder.java +++ b/platform/lang-impl/src/com/intellij/openapi/module/WebModuleBuilder.java @@ -2,6 +2,7 @@ package com.intellij.openapi.module; import com.intellij.icons.AllIcons; +import com.intellij.ide.NewProjectWizardLegacy; import com.intellij.ide.util.projectWizard.ModuleBuilder; import com.intellij.ide.util.projectWizard.ModuleWizardStep; import com.intellij.ide.util.projectWizard.SettingsStep; @@ -28,7 +29,7 @@ public class WebModuleBuilder extends ModuleBuilder { public static final String GROUP_NAME = "JavaScript"; public static final Icon ICON = AllIcons.Nodes.PpWeb; - private final WebProjectTemplate myTemplate; + protected final WebProjectTemplate myTemplate; protected final NotNullLazyValue> myGeneratorPeerLazyValue; public WebModuleBuilder(@NotNull WebProjectTemplate template) { @@ -61,6 +62,11 @@ public class WebModuleBuilder extends ModuleBuilder { return GROUP_NAME; } + @Override + public boolean isAvailable() { + return NewProjectWizardLegacy.isAvailable(); + } + @Override public Icon getNodeIcon() { return myTemplate != null ? myTemplate.getIcon() : ICON; diff --git a/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java b/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java index f5e9b02d1c8e..2d4950aacd61 100644 --- a/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java +++ b/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java @@ -14,7 +14,14 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; - +/** + * Provides simple directory-oriented generators, which usually used in small IDEs, where there is only one module + * {@link com.intellij.ide.util.projectWizard.AbstractNewProjectStep} + * {@link com.intellij.ide.util.projectWizard.ProjectSettingsStepBase} + * {@link com.intellij.ide.util.projectWizard.CustomStepProjectGenerator} + * {@link HideableProjectGenerator} + * + */ public interface DirectoryProjectGenerator { @Nullable @Nls(capitalization = Nls.Capitalization.Sentence) diff --git a/platform/platform-impl/src/com/intellij/platform/HideableProjectGenerator.java b/platform/platform-impl/src/com/intellij/platform/HideableProjectGenerator.java index 79ee56808839..fd5d25501a9c 100644 --- a/platform/platform-impl/src/com/intellij/platform/HideableProjectGenerator.java +++ b/platform/platform-impl/src/com/intellij/platform/HideableProjectGenerator.java @@ -16,7 +16,8 @@ package com.intellij.platform; /** - * @author Dennis.Ushakov + * Provides a way to hide {@link DirectoryProjectGenerator} based on internal state + * (e.g. if the generator has sub-steps, that are registered separately, and we want to hide the generator if there are no nested steps) */ public interface HideableProjectGenerator { boolean isHidden();