mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-93744 IDEA-93743 Create Project From Template: Simple Web: facets creating is enabled but doesn't work
This commit is contained in:
+39
-3
@@ -7,6 +7,8 @@ import com.intellij.ide.util.frameworkSupport.FrameworkSupportUtil;
|
||||
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.ProjectBuilder;
|
||||
import com.intellij.ide.util.projectWizard.WizardContext;
|
||||
import com.intellij.ide.wizard.CommitStepException;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
@@ -15,10 +17,13 @@ import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContaine
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.TreeNode;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -27,17 +32,24 @@ import java.util.List;
|
||||
public class SupportForFrameworksStep extends ModuleWizardStep {
|
||||
private final AddSupportForFrameworksPanel mySupportForFrameworksPanel;
|
||||
private final FrameworkSupportModelBase myFrameworkSupportModel;
|
||||
private final WizardContext myContext;
|
||||
private final ModuleBuilder myBuilder;
|
||||
private final ModuleBuilder.ModuleConfigurationUpdater myConfigurationUpdater;
|
||||
private boolean myCommitted;
|
||||
|
||||
public SupportForFrameworksStep(final ModuleBuilder builder, @NotNull LibrariesContainer librariesContainer) {
|
||||
public SupportForFrameworksStep(WizardContext context, final ModuleBuilder builder,
|
||||
@NotNull LibrariesContainer librariesContainer) {
|
||||
myContext = context;
|
||||
myBuilder = builder;
|
||||
List<FrameworkSupportInModuleProvider> providers = FrameworkSupportUtil.getProviders(builder);
|
||||
myFrameworkSupportModel = new FrameworkSupportModelInWizard(librariesContainer, builder);
|
||||
mySupportForFrameworksPanel = new AddSupportForFrameworksPanel(providers, myFrameworkSupportModel);
|
||||
builder.addModuleConfigurationUpdater(new ModuleBuilder.ModuleConfigurationUpdater() {
|
||||
myConfigurationUpdater = new ModuleBuilder.ModuleConfigurationUpdater() {
|
||||
public void update(@NotNull final Module module, @NotNull final ModifiableRootModel rootModel) {
|
||||
mySupportForFrameworksPanel.addSupport(module, rootModel);
|
||||
}
|
||||
});
|
||||
};
|
||||
builder.addModuleConfigurationUpdater(myConfigurationUpdater);
|
||||
}
|
||||
|
||||
private static String getBaseDirectory(final ModuleBuilder builder) {
|
||||
@@ -81,6 +93,11 @@ public class SupportForFrameworksStep extends ModuleWizardStep {
|
||||
|
||||
@Override
|
||||
public void updateStep() {
|
||||
ProjectBuilder builder = myContext.getProjectBuilder();
|
||||
if (builder instanceof ModuleBuilder) {
|
||||
myBuilder.updateFrom((ModuleBuilder)builder);
|
||||
((ModuleBuilder)builder).addModuleConfigurationUpdater(myConfigurationUpdater);
|
||||
}
|
||||
myFrameworkSupportModel.fireWizardStepUpdated();
|
||||
}
|
||||
|
||||
@@ -106,4 +123,23 @@ public class SupportForFrameworksStep extends ModuleWizardStep {
|
||||
return getBaseDirectory(myBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
public boolean enableSupport(final String frameworkId) {
|
||||
return !TreeUtil.traverse((TreeNode)mySupportForFrameworksPanel.getFrameworksTree().getModel().getRoot(), new TreeUtil.Traverse() {
|
||||
@Override
|
||||
public boolean accept(Object node) {
|
||||
if (node instanceof FrameworkSupportNode && frameworkId.equals(
|
||||
((FrameworkSupportNode)node).getProvider().getFrameworkType().getId())) {
|
||||
TreeNode parent = ((FrameworkSupportNode)node).getParent();
|
||||
if (parent instanceof FrameworkSupportNode) {
|
||||
((FrameworkSupportNode)parent).setChecked(true);
|
||||
}
|
||||
((FrameworkSupportNode)node).setChecked(true);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -133,7 +133,7 @@ public class ProjectWizardStepFactoryImpl extends ProjectWizardStepFactory {
|
||||
public ModuleWizardStep createSupportForFrameworksStep(WizardContext context, ModuleBuilder builder, ModulesProvider modulesProvider) {
|
||||
if (!FrameworkSupportUtil.getProviders(builder).isEmpty()) {
|
||||
final LibrariesContainer container = LibrariesContainerFactory.createContainer(context, modulesProvider);
|
||||
return new SupportForFrameworksStep(builder, container);
|
||||
return new SupportForFrameworksStep(context, builder, container);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -19,10 +19,7 @@ import com.intellij.ide.util.newProjectWizard.modes.ImportImlMode;
|
||||
import com.intellij.ide.util.projectWizard.ModuleBuilder;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.module.ModifiableModuleModel;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleType;
|
||||
import com.intellij.openapi.module.ModuleWithNameAlreadyExists;
|
||||
import com.intellij.openapi.module.*;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -65,7 +62,26 @@ class TemplateModuleBuilder extends ModuleBuilder {
|
||||
|
||||
@Override
|
||||
public Module commitModule(@NotNull Project project, ModifiableModuleModel model) {
|
||||
return myProjectMode ? null : super.commitModule(project, model);
|
||||
if (myProjectMode) {
|
||||
final Module[] modules = ModuleManager.getInstance(project).getModules();
|
||||
if (modules.length > 0) {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
setupModule(modules[0]);
|
||||
}
|
||||
catch (ConfigurationException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return super.commitModule(project, model);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -44,9 +44,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public abstract class ModuleBuilder extends ProjectBuilder{
|
||||
private static final ExtensionPointName<ModuleBuilderFactory> EP_NAME = ExtensionPointName.create("com.intellij.moduleBuilder");
|
||||
@@ -55,7 +53,7 @@ public abstract class ModuleBuilder extends ProjectBuilder{
|
||||
private String myName;
|
||||
@NonNls private String myModuleFilePath;
|
||||
private String myContentEntryPath;
|
||||
private final List<ModuleConfigurationUpdater> myUpdaters = new ArrayList<ModuleConfigurationUpdater>();
|
||||
private final Set<ModuleConfigurationUpdater> myUpdaters = new HashSet<ModuleConfigurationUpdater>();
|
||||
private final EventDispatcher<ModuleBuilderListener> myDispatcher = EventDispatcher.create(ModuleBuilderListener.class);
|
||||
|
||||
public static List<ModuleBuilder> getAllBuilders() {
|
||||
@@ -176,14 +174,18 @@ public abstract class ModuleBuilder extends ProjectBuilder{
|
||||
deleteModuleFile(myModuleFilePath);
|
||||
final ModuleType moduleType = getModuleType();
|
||||
final Module module = moduleModel.newModule(myModuleFilePath, moduleType.getId());
|
||||
setupModule(module);
|
||||
|
||||
return module;
|
||||
}
|
||||
|
||||
protected void setupModule(Module module) throws ConfigurationException {
|
||||
final ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(module).getModifiableModel();
|
||||
setupRootModel(modifiableModel);
|
||||
for (ModuleConfigurationUpdater updater : myUpdaters) {
|
||||
updater.update(module, modifiableModel);
|
||||
}
|
||||
modifiableModel.commit();
|
||||
|
||||
return module;
|
||||
}
|
||||
|
||||
private void onModuleInitialized(final Module module) {
|
||||
@@ -288,6 +290,12 @@ public abstract class ModuleBuilder extends ProjectBuilder{
|
||||
return getModuleType().getName();
|
||||
}
|
||||
|
||||
public void updateFrom(ModuleBuilder from) {
|
||||
myName = from.getName();
|
||||
myContentEntryPath = from.getContentEntryPath();
|
||||
myModuleFilePath = from.getModuleFilePath();
|
||||
}
|
||||
|
||||
public static abstract class ModuleConfigurationUpdater {
|
||||
|
||||
public abstract void update(@NotNull Module module, @NotNull ModifiableRootModel rootModel);
|
||||
|
||||
Reference in New Issue
Block a user