isolate dependencies of ProjectTemplate on ModuleBuilder to a separate AbstractModuleBuilder class

This commit is contained in:
Dmitry Jemerov
2013-05-07 21:05:51 +02:00
parent 90597f9f4f
commit 3e2d165598
6 changed files with 59 additions and 8 deletions
@@ -97,7 +97,7 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
private final ProjectTypesList myList;
@Nullable
private ModuleBuilder myModuleBuilder;
private AbstractModuleBuilder myModuleBuilder;
public SelectTemplateStep(WizardContext context, StepSequence sequence, final MultiMap<TemplatesGroup, ProjectTemplate> map) {
@@ -20,7 +20,7 @@
*/
package com.intellij.ide.util.newProjectWizard;
import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.ide.util.projectWizard.AbstractModuleBuilder;
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.module.ModuleType;
@@ -53,7 +53,7 @@ public class StepSequence {
myCommonFinishingSteps.add(Pair.create(step, suitableTypes));
}
public void addStepsForBuilder(ModuleBuilder builder, WizardContext wizardContext, ModulesProvider modulesProvider) {
public void addStepsForBuilder(AbstractModuleBuilder builder, WizardContext wizardContext, ModulesProvider modulesProvider) {
String id = builder.getBuilderId();
if (!mySpecificSteps.containsKey(id)) {
mySpecificSteps.put(id, Arrays.asList(builder.createWizardSteps(wizardContext, modulesProvider)));
@@ -18,7 +18,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.newProjectWizard.TemplatesGroup;
import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.ide.util.projectWizard.AbstractModuleBuilder;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
@@ -125,7 +125,7 @@ public class CreateFromTemplateMode extends WizardMode {
@Nullable
@Override
public ModuleBuilder getModuleBuilder() {
public AbstractModuleBuilder getModuleBuilder() {
final ProjectTemplate template = mySelectTemplateStep.getSelectedTemplate();
if (template == null) {
return null;
@@ -0,0 +1,45 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.ide.util.projectWizard;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* @author yole
*/
public abstract class AbstractModuleBuilder extends ProjectBuilder {
public abstract Icon getNodeIcon();
@Nullable
public abstract String getBuilderId();
public abstract ModuleWizardStep[] createWizardSteps(WizardContext wizardContext, ModulesProvider modulesProvider);
@Nullable
public ModuleWizardStep modifySettingsStep(SettingsStep settingsStep) {
return null;
}
public abstract void setName(String name);
public abstract void setModuleFilePath(@NonNls String path);
public abstract void setContentEntryPath(String moduleRootPath);
}
@@ -47,7 +47,7 @@ import java.io.File;
import java.io.IOException;
import java.util.*;
public abstract class ModuleBuilder extends ProjectBuilder{
public abstract class ModuleBuilder extends AbstractModuleBuilder {
private static final ExtensionPointName<ModuleBuilderFactory> EP_NAME = ExtensionPointName.create("com.intellij.moduleBuilder");
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.util.projectWizard.ModuleBuilder");
@@ -79,12 +79,14 @@ public abstract class ModuleBuilder extends ProjectBuilder{
return myName;
}
@Override
@Nullable
public String getBuilderId() {
ModuleType moduleType = getModuleType();
return moduleType == null ? null : moduleType.getId();
}
@Override
public ModuleWizardStep[] createWizardSteps(WizardContext wizardContext, ModulesProvider modulesProvider) {
ModuleType moduleType = getModuleType();
return moduleType == null ? ModuleWizardStep.EMPTY_ARRAY : moduleType.createWizardSteps(wizardContext, this, modulesProvider);
@@ -98,6 +100,7 @@ public abstract class ModuleBuilder extends ProjectBuilder{
* and {@link com.intellij.ide.util.projectWizard.ModuleWizardStep#updateDataModel()}
* will be invoked)
*/
@Override
@Nullable
public ModuleWizardStep modifySettingsStep(SettingsStep settingsStep) {
ModuleType type = getModuleType();
@@ -140,6 +143,7 @@ public abstract class ModuleBuilder extends ProjectBuilder{
return Collections.emptyList();
}
@Override
public void setName(String name) {
myName = acceptParameter(name);
}
@@ -152,6 +156,7 @@ public abstract class ModuleBuilder extends ProjectBuilder{
myUpdaters.add(updater);
}
@Override
public void setModuleFilePath(@NonNls String path) {
myModuleFilePath = acceptParameter(path);
}
@@ -169,6 +174,7 @@ public abstract class ModuleBuilder extends ProjectBuilder{
return myContentEntryPath;
}
@Override
public void setContentEntryPath(String moduleRootPath) {
final String path = acceptParameter(moduleRootPath);
if (path != null) {
@@ -15,7 +15,7 @@
*/
package com.intellij.platform;
import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.ide.util.projectWizard.AbstractModuleBuilder;
import com.intellij.openapi.ui.ValidationInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -35,7 +35,7 @@ public interface ProjectTemplate {
String getDescription();
@NotNull
ModuleBuilder createModuleBuilder();
AbstractModuleBuilder createModuleBuilder();
/**
* @return null if ok, error message otherwise