blob: 5397b3d471192192021365cee029d854995faf2c [file] [log] [blame]
/*
* Copyright 2000-2011 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.ide.util.frameworkSupport.FrameworkSupportUtil;
import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard;
import com.intellij.ide.util.newProjectWizard.SourcePathsStep;
import com.intellij.ide.util.newProjectWizard.SupportForFrameworksStep;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkType;
import com.intellij.openapi.projectRoots.SdkTypeId;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer;
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Key;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Map;
/**
* @author Eugene Zhuravlev
* Date: Oct 6, 2004
*/
public class ProjectWizardStepFactoryImpl extends ProjectWizardStepFactory {
private static final Key<ProjectJdkStep> PROJECT_JDK_STEP_KEY = Key.create("ProjectJdkStep");
public ModuleWizardStep createNameAndLocationStep(WizardContext wizardContext, JavaModuleBuilder builder, ModulesProvider modulesProvider, Icon icon, String helpId) {
return new NameLocationStep(wizardContext, builder, modulesProvider, icon, helpId);
}
public ModuleWizardStep createNameAndLocationStep(final WizardContext wizardContext) {
return new ProjectNameStep(wizardContext);
}
/**
* @deprecated
*/
public ModuleWizardStep createOutputPathPathsStep(ModuleWizardStep nameAndLocationStep, JavaModuleBuilder builder, Icon icon, String helpId) {
return new OutputPathsStep((NameLocationStep)nameAndLocationStep, builder, icon, helpId);
}
public ModuleWizardStep createSourcePathsStep(ModuleWizardStep nameAndLocationStep, SourcePathsBuilder builder, Icon icon, String helpId) {
return null;
}
public ModuleWizardStep createSourcePathsStep(final WizardContext context, final SourcePathsBuilder builder, final Icon icon, @NonNls final String helpId) {
return new SourcePathsStep(builder, icon, helpId);
}
/**
* @deprecated
*/
public ModuleWizardStep createProjectJdkStep(WizardContext context,
final JavaModuleBuilder builder,
final Computable<Boolean> isVisible,
final Icon icon,
final String helpId) {
return createProjectJdkStep(context, null, builder, isVisible, icon, helpId);
}
public ModuleWizardStep createProjectJdkStep(WizardContext context,
SdkType type,
final JavaModuleBuilder builder,
final Computable<Boolean> isVisible,
final Icon icon,
@NonNls final String helpId) {
return new ProjectJdkForModuleStep(context, type){
public void updateDataModel() {
super.updateDataModel();
builder.setModuleJdk(getJdk());
}
public boolean isStepVisible() {
return isVisible.compute().booleanValue();
}
public Icon getIcon() {
return icon;
}
@Override
public String getName() {
return "Specify JDK";
}
public String getHelpId() {
return helpId;
}
};
}
public ModuleWizardStep createProjectJdkStep(final WizardContext wizardContext) {
ProjectJdkStep projectSdkStep = wizardContext.getUserData(PROJECT_JDK_STEP_KEY);
if (projectSdkStep != null) {
return projectSdkStep;
}
projectSdkStep = new ProjectJdkStep(wizardContext) {
public boolean isStepVisible() {
final Sdk newProjectJdk = AbstractProjectWizard.getProjectSdkByDefault(wizardContext);
if (newProjectJdk == null) return true;
final ProjectBuilder projectBuilder = wizardContext.getProjectBuilder();
return projectBuilder != null && !projectBuilder.isSuitableSdk(newProjectJdk);
}
};
wizardContext.putUserData(PROJECT_JDK_STEP_KEY, projectSdkStep);
return projectSdkStep;
}
@Nullable
@Override
public Sdk getNewProjectSdk(WizardContext wizardContext) {
return AbstractProjectWizard.getNewProjectJdk(wizardContext);
}
@Override
public ModuleWizardStep createSupportForFrameworksStep(WizardContext wizardContext, ModuleBuilder moduleBuilder) {
return createSupportForFrameworksStep(wizardContext, moduleBuilder, ModulesProvider.EMPTY_MODULES_PROVIDER);
}
@Override
public ModuleWizardStep createSupportForFrameworksStep(@NotNull WizardContext context, @NotNull ModuleBuilder builder, @NotNull ModulesProvider modulesProvider) {
Map<String,Boolean> availableFrameworks = builder.getAvailableFrameworks();
if (FrameworkSupportUtil.getProviders(builder).isEmpty() || availableFrameworks != null && availableFrameworks.isEmpty()) {
return null;
}
final LibrariesContainer container = LibrariesContainerFactory.createContainer(context, modulesProvider);
return new SupportForFrameworksStep(context, builder, container);
}
@Override
public ModuleWizardStep createJavaSettingsStep(@NotNull SettingsStep settingsStep, @NotNull ModuleBuilder moduleBuilder, @NotNull Condition<SdkTypeId> sdkFilter) {
return new JavaSettingsStep(settingsStep, moduleBuilder, sdkFilter);
}
}