selecting module type with specific steps

This commit is contained in:
Dmitry Avdeev
2012-10-15 14:25:36 +04:00
parent 90e6edb6dd
commit 8bc1f6e399
4 changed files with 35 additions and 21 deletions
@@ -356,17 +356,23 @@ public class ProjectNameWithTypeStep extends ProjectNameStep {
public void updateStep() {
super.updateStep();
if (myCreateModuleCb.isSelected()) {
mySequence.setType(getSelectedBuilderId());
} else {
mySequence.setType(null);
if (myHeader.isVisible()) {
if (myCreateModuleCb.isSelected()) {
mySequence.setType(getSelectedBuilderId());
} else {
mySequence.setType(null);
}
}
}
public void updateDataModel() {
if (myCreateModuleCb.isSelected()) {
mySequence.setType(getSelectedBuilderId());
super.updateDataModel();
if (myHeader.isVisible()) {
mySequence.setType(myCreateModuleCb.isSelected() ? getSelectedBuilderId() : null);
}
super.updateDataModel();
if (myHeader.isVisible() && myCreateModuleCb.isSelected()) {
final ModuleBuilder builder = (ModuleBuilder)myMode.getModuleBuilder();
assert builder != null;
final String moduleName = getModuleName();
@@ -374,9 +380,6 @@ public class ProjectNameWithTypeStep extends ProjectNameStep {
builder.setModuleFilePath(
FileUtil.toSystemIndependentName(myModuleFileLocation.getText()) + "/" + moduleName + ModuleFileType.DOT_DEFAULT_EXTENSION);
builder.setContentEntryPath(FileUtil.toSystemIndependentName(myModuleContentRoot.getText()));
} else {
mySequence.setType(null);
super.updateDataModel();
}
}
@@ -76,13 +76,16 @@ public class SelectTemplateStep extends ModuleWizardStep {
private JPanel myDescriptionPanel;
private final WizardContext myContext;
private final StepSequence mySequence;
private final ElementFilter.Active.Impl<SimpleNode> myFilter;
private final FilteringTreeBuilder myBuilder;
private MinusculeMatcher[] myMatchers;
public SelectTemplateStep(WizardContext context) {
public SelectTemplateStep(WizardContext context, StepSequence sequence) {
myContext = context;
mySequence = sequence;
Messages.installHyperlinkSupport(myDescriptionPane);
ProjectTemplatesFactory[] factories = ProjectTemplatesFactory.EP_NAME.getExtensions();
@@ -242,6 +245,12 @@ public class SelectTemplateStep extends ModuleWizardStep {
@Override
public void updateStep() {
myBuilder.queueUpdate();
setModuleType();
}
private void setModuleType() {
ProjectTemplate template = getSelectedTemplate();
mySequence.setType(template == null ? null : template.createModuleBuilder().getBuilderId());
}
@Override
@@ -342,6 +351,7 @@ public class SelectTemplateStep extends ModuleWizardStep {
@Override
public void updateDataModel() {
setModuleType();
}
@Override
@@ -57,14 +57,13 @@ public class CreateFromScratchMode extends WizardMode {
myBuildersMap.put(builder.getBuilderId(), builder);
}
myBuildersMap.put(ModuleType.EMPTY.getId(), new EmptyModuleBuilder());
return createSequence(context, modulesProvider, this);
return addSteps(context, modulesProvider, this, new StepSequence());
}
static StepSequence createSequence(WizardContext context,
ModulesProvider modulesProvider,
WizardMode mode,
ModuleWizardStep... firstSteps) {
final StepSequence sequence = new StepSequence(firstSteps);
static StepSequence addSteps(WizardContext context,
ModulesProvider modulesProvider,
WizardMode mode,
StepSequence sequence) {
sequence.addCommonStep(new ProjectNameWithTypeStep(context, sequence, mode));
for (ModuleBuilder builder : ModuleBuilder.getAllBuilders()) {
addModuleBuilder(builder, context, modulesProvider, sequence);
@@ -17,7 +17,7 @@ package com.intellij.ide.util.newProjectWizard.modes;
import com.intellij.ide.util.newProjectWizard.SelectTemplateStep;
import com.intellij.ide.util.newProjectWizard.StepSequence;
import com.intellij.ide.util.projectWizard.ProjectBuilder;
import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
@@ -53,13 +53,15 @@ public class CreateFromTemplateMode extends WizardMode {
@Nullable
@Override
protected StepSequence createSteps(WizardContext context, @NotNull ModulesProvider modulesProvider) {
mySelectTemplateStep = new SelectTemplateStep(context);
return CreateFromScratchMode.createSequence(context, modulesProvider, this, mySelectTemplateStep);
StepSequence sequence = new StepSequence();
mySelectTemplateStep = new SelectTemplateStep(context, sequence);
sequence.addCommonStep(mySelectTemplateStep);
return CreateFromScratchMode.addSteps(context, modulesProvider, this, sequence);
}
@Nullable
@Override
public ProjectBuilder getModuleBuilder() {
public ModuleBuilder getModuleBuilder() {
final ProjectTemplate template = mySelectTemplateStep.getSelectedTemplate();
if (template == null) {
return null;