fixed PY-13597 Create New Project: Create button is too high when creating project in Community Edition from Welcome screen

This commit is contained in:
Ekaterina Tuzova
2014-08-25 19:19:36 +04:00
parent 6e9fd0df1d
commit 34473190ef
6 changed files with 23 additions and 17 deletions
@@ -24,7 +24,7 @@ import org.jetbrains.annotations.Nullable;
public class StudyNewProject extends ProjectSpecificAction {
public StudyNewProject(@NotNull final String name, @Nullable final Runnable runnable) {
super(new GenerateProjectCallback(runnable), new StudyDirectoryProjectGenerator(), name);
super(new GenerateProjectCallback(runnable), new StudyDirectoryProjectGenerator(), name, true);
}
public StudyNewProject() {
@@ -61,6 +61,7 @@ import java.util.List;
abstract public class AbstractProjectSettingsStep extends AbstractActionWithPanel implements DumbAware {
protected final DirectoryProjectGenerator myProjectGenerator;
private final NullableConsumer<AbstractProjectSettingsStep> myCallback;
private final boolean myIsWelcomeScreen;
private PythonSdkChooserCombo mySdkCombo;
private boolean myInstallFramework;
private TextFieldWithBrowseButton myLocationField;
@@ -70,10 +71,13 @@ abstract public class AbstractProjectSettingsStep extends AbstractActionWithPane
private AnAction myCreateAction;
private Sdk mySdk;
public AbstractProjectSettingsStep(DirectoryProjectGenerator projectGenerator, NullableConsumer<AbstractProjectSettingsStep> callback) {
public AbstractProjectSettingsStep(DirectoryProjectGenerator projectGenerator,
NullableConsumer<AbstractProjectSettingsStep> callback,
boolean isWelcomeScreen) {
super();
myProjectGenerator = projectGenerator;
myCallback = callback;
myIsWelcomeScreen = isWelcomeScreen;
myProjectDirectory = FileUtil.findSequentNonexistentFile(new File(ProjectUtil.getBaseDir()), "untitled", "");
if (myProjectGenerator instanceof WebProjectTemplate) {
((WebProjectTemplate)myProjectGenerator).getPeer().addSettingsStateListener(new WebProjectGenerator.SettingsStateListener() {
@@ -114,7 +118,7 @@ abstract public class AbstractProjectSettingsStep extends AbstractActionWithPane
final JPanel scrollPanel = new JPanel(new BorderLayout());
final DirectoryProjectGenerator[] generators = Extensions.getExtensions(DirectoryProjectGenerator.EP_NAME);
final int height = generators.length == 0 ? 150 : 400;
final int height = generators.length == 0 && !myIsWelcomeScreen ? 150 : 400;
mainPanel.setPreferredSize(new Dimension(mainPanel.getPreferredSize().width, height));
myErrorLabel = new JLabel("");
myErrorLabel.setForeground(JBColor.RED);
@@ -27,11 +27,11 @@ import java.util.List;
public class PluginSpecificProjectsStep extends DefaultActionGroup implements DumbAware {
public PluginSpecificProjectsStep(@NotNull final NullableConsumer<AbstractProjectSettingsStep> callback,
@NotNull final List<DirectoryProjectGenerator> projectGenerators) {
@NotNull final List<DirectoryProjectGenerator> projectGenerators, boolean isWelcomeScreen) {
super("Plugin-specific", true);
getTemplatePresentation().setIcon(AllIcons.Nodes.PluginLogo);
for (DirectoryProjectGenerator generator : projectGenerators) {
add(new ProjectSpecificAction(callback, generator));
add(new ProjectSpecificAction(callback, generator, isWelcomeScreen));
}
}
}
@@ -28,16 +28,16 @@ public class ProjectSpecificAction extends DefaultActionGroup implements DumbAwa
private final ProjectSpecificSettingsStep mySettings;
public ProjectSpecificAction(@NotNull final NullableConsumer<AbstractProjectSettingsStep> callback,
@NotNull final DirectoryProjectGenerator projectGenerator) {
this(callback, projectGenerator, projectGenerator.getName());
@NotNull final DirectoryProjectGenerator projectGenerator, boolean isWelcomeScreen) {
this(callback, projectGenerator, projectGenerator.getName(), isWelcomeScreen);
}
public ProjectSpecificAction(@NotNull final NullableConsumer<AbstractProjectSettingsStep> callback,
@NotNull final DirectoryProjectGenerator projectGenerator,
@NotNull final String name) {
@NotNull final String name, boolean isWelcomeScreen) {
super(name, true);
getTemplatePresentation().setIcon(projectGenerator.getLogo());
mySettings = new ProjectSpecificSettingsStep(projectGenerator, callback);
mySettings = new ProjectSpecificSettingsStep(projectGenerator, callback, isWelcomeScreen);
add(mySettings);
}
@@ -31,8 +31,8 @@ import javax.swing.*;
public class ProjectSpecificSettingsStep extends AbstractProjectSettingsStep implements DumbAware {
public ProjectSpecificSettingsStep(@NotNull final DirectoryProjectGenerator projectGenerator,
@NotNull final NullableConsumer<AbstractProjectSettingsStep> callback) {
super(projectGenerator, callback);
@NotNull final NullableConsumer<AbstractProjectSettingsStep> callback, boolean isWelcomeScreen) {
super(projectGenerator, callback, isWelcomeScreen);
}
@Override
@@ -34,11 +34,15 @@ import java.util.List;
public class PyCharmNewProjectStep extends DefaultActionGroup implements DumbAware {
public PyCharmNewProjectStep(@NotNull final String name, @Nullable final Runnable runnable) {
this(name, runnable, false);
}
public PyCharmNewProjectStep(@NotNull final String name, @Nullable final Runnable runnable, boolean isWelcomeScreen) {
super(name, true);
final NullableConsumer<AbstractProjectSettingsStep> callback = new GenerateProjectCallback(runnable);
final ProjectSpecificAction action = new ProjectSpecificAction(callback, new PythonBaseProjectGenerator());
final ProjectSpecificAction action = new ProjectSpecificAction(callback, new PythonBaseProjectGenerator(), isWelcomeScreen);
add(action);
final DirectoryProjectGenerator[] generators = Extensions.getExtensions(DirectoryProjectGenerator.EP_NAME);
@@ -57,19 +61,17 @@ public class PyCharmNewProjectStep extends DefaultActionGroup implements DumbAwa
List<DirectoryProjectGenerator> pluginSpecificGenerators = Lists.newArrayList();
for (DirectoryProjectGenerator generator : generators) {
if (generator instanceof PythonProjectGenerator)
add(new ProjectSpecificAction(callback, generator));
add(new ProjectSpecificAction(callback, generator, isWelcomeScreen));
else
pluginSpecificGenerators.add(generator);
}
if (!pluginSpecificGenerators.isEmpty()) {
add(new PluginSpecificProjectsStep(callback, pluginSpecificGenerators));
add(new PluginSpecificProjectsStep(callback, pluginSpecificGenerators, isWelcomeScreen));
}
}
public PyCharmNewProjectStep() {
this("Select Project Type", null);
this("Select Project Type", null, true);
}
}