From 38c8defad445eb445cbac2c5a5b745ef49eae610 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Thu, 12 Jun 2014 13:14:48 +0400 Subject: [PATCH] moved getSettingsPanel and getSettings from DirectoryProjectGenerator to PythonProjectGenerator. We don't push other projects to change new project dialog. --- .../util/projectWizard/WebProjectTemplate.java | 13 ------------- .../platform/DirectoryProjectGenerator.java | 7 ------- .../newProject/PythonBaseProjectGenerator.java | 4 ++-- .../PythonNewDirectoryProjectDialog.java | 13 ------------- .../actions/ProjectSpecificSettingsStep.java | 9 ++++++++- .../actions/PyCharmNewProjectStep.java | 9 ++++++++- .../newProject/PythonProjectGenerator.java | 18 ++++++++++++++++++ 7 files changed, 36 insertions(+), 37 deletions(-) create mode 100644 python/openapi/src/com/jetbrains/python/newProject/PythonProjectGenerator.java diff --git a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/WebProjectTemplate.java b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/WebProjectTemplate.java index 988183e9cbe9..d6da688c82f7 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/WebProjectTemplate.java +++ b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/WebProjectTemplate.java @@ -17,7 +17,6 @@ package com.intellij.ide.util.projectWizard; import com.intellij.openapi.module.WebModuleBuilder; import com.intellij.openapi.module.WebModuleType; -import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.platform.ProjectTemplate; @@ -26,7 +25,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import java.io.File; /** * @author Dmitry Avdeev @@ -67,15 +65,4 @@ public abstract class WebProjectTemplate extends WebProjectGenerator imple return myPeerHolder.getValue(); } - @Override - @Nullable - public JComponent getSettingsPanel(File baseDir) throws ProcessCanceledException { - return getPeer().getComponent(); - } - - @Override - public T getProjectSettings() throws ProcessCanceledException { - return getPeer().getSettings(); - } - } diff --git a/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java b/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java index 545d01a43582..d123f9e94b53 100644 --- a/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java +++ b/platform/platform-impl/src/com/intellij/platform/DirectoryProjectGenerator.java @@ -26,7 +26,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import java.io.File; /** * @author yole @@ -41,12 +40,6 @@ public interface DirectoryProjectGenerator { @Nullable T showGenerationSettings(final VirtualFile baseDir) throws ProcessCanceledException; - @Nullable - JComponent getSettingsPanel(final File baseDir) throws ProcessCanceledException; - - @Nullable - T getProjectSettings() throws ProcessCanceledException; - @Nullable Icon getLogo(); diff --git a/python/ide/src/com/jetbrains/python/newProject/PythonBaseProjectGenerator.java b/python/ide/src/com/jetbrains/python/newProject/PythonBaseProjectGenerator.java index 63784335db40..36ae0d1cc05a 100644 --- a/python/ide/src/com/jetbrains/python/newProject/PythonBaseProjectGenerator.java +++ b/python/ide/src/com/jetbrains/python/newProject/PythonBaseProjectGenerator.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.io.File; -public class PythonBaseProjectGenerator implements DirectoryProjectGenerator { +public class PythonBaseProjectGenerator extends PythonProjectGenerator implements DirectoryProjectGenerator { @NotNull @Nls @Override @@ -37,7 +37,7 @@ public class PythonBaseProjectGenerator implements DirectoryProjectGenerator { } @Override - public Object getProjectSettings() throws ProcessCanceledException { + public Object getProjectSettings() { return new PyNewProjectSettings(); } diff --git a/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java b/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java index 13f22f8c50b2..8080901ac012 100644 --- a/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java +++ b/python/ide/src/com/jetbrains/python/newProject/PythonNewDirectoryProjectDialog.java @@ -54,7 +54,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.io.File; import java.util.List; /** @@ -180,18 +179,6 @@ public class PythonNewDirectoryProjectDialog extends NewDirectoryProjectDialog { } } - @Nullable - @Override - public JComponent getSettingsPanel(File baseDir) throws ProcessCanceledException { - return null; - } - - @Nullable - @Override - public Object getProjectSettings() throws ProcessCanceledException { - return null; - } - @Nullable @Override public Icon getLogo() { diff --git a/python/ide/src/com/jetbrains/python/newProject/actions/ProjectSpecificSettingsStep.java b/python/ide/src/com/jetbrains/python/newProject/actions/ProjectSpecificSettingsStep.java index 2bbbe9e6ac2f..ebd0658b072c 100644 --- a/python/ide/src/com/jetbrains/python/newProject/actions/ProjectSpecificSettingsStep.java +++ b/python/ide/src/com/jetbrains/python/newProject/actions/ProjectSpecificSettingsStep.java @@ -15,11 +15,13 @@ */ package com.jetbrains.python.newProject.actions; +import com.intellij.ide.util.projectWizard.WebProjectTemplate; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.platform.DirectoryProjectGenerator; import com.intellij.ui.HideableDecorator; import com.intellij.util.NullableConsumer; +import com.jetbrains.python.newProject.PythonProjectGenerator; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -35,7 +37,12 @@ public class ProjectSpecificSettingsStep extends AbstractProjectSettingsStep imp @Override @Nullable protected JPanel createAdvancedSettings() { - final JComponent advancedSettings = myProjectGenerator.getSettingsPanel(myProjectDirectory); + JComponent advancedSettings = null; + if (myProjectGenerator instanceof PythonProjectGenerator) + advancedSettings = ((PythonProjectGenerator)myProjectGenerator).getSettingsPanel(myProjectDirectory); + else if (myProjectGenerator instanceof WebProjectTemplate) { + advancedSettings = ((WebProjectTemplate)myProjectGenerator).getPeer().getComponent(); + } if (advancedSettings != null) { final JPanel jPanel = new JPanel(new VerticalFlowLayout()); final HideableDecorator deco = new HideableDecorator(jPanel, "Mor&e Settings", false); diff --git a/python/ide/src/com/jetbrains/python/newProject/actions/PyCharmNewProjectStep.java b/python/ide/src/com/jetbrains/python/newProject/actions/PyCharmNewProjectStep.java index 4b37439f82ad..acdb46cc7d07 100644 --- a/python/ide/src/com/jetbrains/python/newProject/actions/PyCharmNewProjectStep.java +++ b/python/ide/src/com/jetbrains/python/newProject/actions/PyCharmNewProjectStep.java @@ -16,6 +16,7 @@ package com.jetbrains.python.newProject.actions; import com.intellij.ide.GeneralSettings; +import com.intellij.ide.util.projectWizard.WebProjectTemplate; import com.intellij.internal.statistic.UsageTrigger; import com.intellij.internal.statistic.beans.ConvertUsagesUtil; import com.intellij.openapi.actionSystem.DefaultActionGroup; @@ -44,6 +45,7 @@ import com.jetbrains.python.configuration.PyConfigurableInterpreterList; import com.jetbrains.python.newProject.PyFrameworkProjectGenerator; import com.jetbrains.python.newProject.PyNewProjectSettings; import com.jetbrains.python.newProject.PythonBaseProjectGenerator; +import com.jetbrains.python.newProject.PythonProjectGenerator; import com.jetbrains.python.sdk.PyDetectedSdk; import com.jetbrains.python.sdk.PySdkService; import com.jetbrains.python.sdk.PythonSdkAdditionalData; @@ -140,7 +142,12 @@ public class PyCharmNewProjectStep extends DefaultActionGroup implements DumbAwa @Override public void projectOpened(Project project, Module module) { if (generator != null) { - final Object projectSettings = generator.getProjectSettings(); + Object projectSettings = null; + if (generator instanceof PythonProjectGenerator) + projectSettings = ((PythonProjectGenerator)generator).getProjectSettings(); + else if (generator instanceof WebProjectTemplate) { + projectSettings = ((WebProjectTemplate)generator).getPeer().getSettings(); + } if (projectSettings instanceof PyNewProjectSettings) { ((PyNewProjectSettings)projectSettings).setSdk(settings.getSdk()); ((PyNewProjectSettings)projectSettings).setInstallFramework(settings.installFramework()); diff --git a/python/openapi/src/com/jetbrains/python/newProject/PythonProjectGenerator.java b/python/openapi/src/com/jetbrains/python/newProject/PythonProjectGenerator.java new file mode 100644 index 000000000000..224fe71317d0 --- /dev/null +++ b/python/openapi/src/com/jetbrains/python/newProject/PythonProjectGenerator.java @@ -0,0 +1,18 @@ +package com.jetbrains.python.newProject; + +import com.intellij.openapi.progress.ProcessCanceledException; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.io.File; + +public abstract class PythonProjectGenerator { + @Nullable + public JComponent getSettingsPanel(File baseDir) throws ProcessCanceledException { + return null; + } + + public Object getProjectSettings() { + return new PyNewProjectSettings(); + } +}