| package com.intellij.ide.projectWizard; |
| |
| import com.intellij.ide.util.frameworkSupport.FrameworkSupportConfigurableBase; |
| import com.intellij.ide.util.frameworkSupport.FrameworkSupportProviderBase; |
| import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelBase; |
| import com.intellij.ide.util.projectWizard.ModuleBuilder; |
| import com.intellij.ide.util.projectWizard.ModuleWizardStep; |
| import com.intellij.ide.util.projectWizard.WizardContext; |
| import com.intellij.openapi.module.Module; |
| import com.intellij.openapi.roots.ModifiableRootModel; |
| import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; |
| import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; |
| import com.intellij.openapi.util.text.StringUtil; |
| import org.jetbrains.annotations.NotNull; |
| |
| import javax.swing.*; |
| import java.awt.*; |
| |
| /** |
| * @author Dmitry Avdeev |
| */ |
| public abstract class FrameworkBasedOptionsStep<T extends FrameworkSupportProviderBase, B extends ModuleBuilder> extends ModuleWizardStep { |
| |
| private final FrameworkSupportConfigurableBase myConfigurable; |
| private final JPanel myPanel; |
| protected final FrameworkSupportModelBase myFrameworkSupportModel; |
| protected final B myBuilder; |
| protected final WizardContext myContext; |
| |
| public FrameworkBasedOptionsStep(T provider, final B builder, WizardContext context) { |
| myContext = context; |
| LibrariesContainer container = LibrariesContainerFactory.createContainer(myContext.getProject()); |
| myBuilder = builder; |
| myFrameworkSupportModel = new FrameworkSupportModelBase(context.getProject(), myBuilder, container) { |
| @NotNull |
| @Override |
| public String getBaseDirectoryForLibrariesPath() { |
| return StringUtil.notNullize(builder.getContentEntryPath()); |
| } |
| }; |
| //noinspection AbstractMethodCallInConstructor |
| myConfigurable = createConfigurable(provider, myFrameworkSupportModel); |
| myFrameworkSupportModel.selectFramework(provider, true); |
| |
| builder.addModuleConfigurationUpdater(new ModuleBuilder.ModuleConfigurationUpdater() { |
| @Override |
| public void update(@NotNull Module module, @NotNull ModifiableRootModel rootModel) { |
| myConfigurable.addSupport(module, rootModel, null); |
| } |
| }); |
| |
| myPanel = new JPanel(new BorderLayout(0, 4)); |
| myPanel.add(myConfigurable.getComponent(), BorderLayout.CENTER); |
| updateDataModel(); |
| } |
| |
| protected abstract FrameworkSupportConfigurableBase createConfigurable(T provider, FrameworkSupportModelBase model); |
| |
| @Override |
| public JComponent getComponent() { |
| return myPanel; |
| } |
| |
| @Override |
| public void updateDataModel() { |
| myFrameworkSupportModel.fireWizardStepUpdated(); |
| } |
| } |