mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
custom wizard step for gradle and maven
This commit is contained in:
@@ -81,8 +81,6 @@ import java.util.List;
|
||||
@SuppressWarnings("unchecked")
|
||||
public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
|
||||
private enum Cards { FRAMEWORKS, TEMPLATES, CUSTOM }
|
||||
|
||||
private static final String TEMPLATES_CARD = "templates card";
|
||||
private static final String FRAMEWORKS_CARD = "frameworks card";
|
||||
|
||||
@@ -108,10 +106,10 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
return (ModuleBuilder)key.createModuleBuilder();
|
||||
}
|
||||
};
|
||||
private final Set<String> myCards = new HashSet<String>();
|
||||
private final Map<String, ModuleWizardStep> myCustomSteps = new HashMap<String, ModuleWizardStep>();
|
||||
private final MultiMap<TemplatesGroup,ProjectTemplate> myTemplatesMap;
|
||||
private boolean myRemoteTemplatesLoaded;
|
||||
private Cards myCurrentCard;
|
||||
private String myCurrentCard;
|
||||
|
||||
public ProjectTypeStep(WizardContext context, NewProjectWizard wizard, ModulesProvider modulesProvider) {
|
||||
myContext = context;
|
||||
@@ -210,7 +208,7 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
}
|
||||
|
||||
private boolean isFrameworksMode() {
|
||||
return myCurrentCard == Cards.FRAMEWORKS && getSelectedBuilder().equals(myContext.getProjectBuilder());
|
||||
return FRAMEWORKS_CARD.equals(myCurrentCard) && getSelectedBuilder().equals(myContext.getProjectBuilder());
|
||||
}
|
||||
|
||||
private List<TemplatesGroup> fillTemplatesMap(WizardContext context) {
|
||||
@@ -342,13 +340,7 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
|
||||
private void showCard(String card) {
|
||||
((CardLayout)myOptionsPanel.getLayout()).show(myOptionsPanel, card);
|
||||
if (FRAMEWORKS_CARD.equals(card)) {
|
||||
myCurrentCard = Cards.FRAMEWORKS;
|
||||
}
|
||||
else if (TEMPLATES_CARD.equals(card)) {
|
||||
myCurrentCard = Cards.TEMPLATES;
|
||||
}
|
||||
else myCurrentCard = Cards.CUSTOM;
|
||||
myCurrentCard = card;
|
||||
}
|
||||
|
||||
private void showTemplates(TemplatesGroup group) {
|
||||
@@ -381,23 +373,29 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
|
||||
private boolean showCustomOptions(@NotNull ModuleBuilder builder) {
|
||||
String card = builder.getBuilderId();
|
||||
if (!myCards.contains(card)) {
|
||||
JComponent panel = builder.getCustomOptionsPanel(this);
|
||||
if (panel == null) return false;
|
||||
myCards.add(card);
|
||||
myOptionsPanel.add(panel, card);
|
||||
if (!myCustomSteps.containsKey(card)) {
|
||||
ModuleWizardStep step = builder.getCustomOptionsStep(this);
|
||||
if (step == null) return false;
|
||||
step.updateStep();
|
||||
myCustomSteps.put(card, step);
|
||||
myOptionsPanel.add(step.getComponent(), card);
|
||||
}
|
||||
showCard(card);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private ModuleWizardStep getCustomStep() {
|
||||
return myCustomSteps.get(myCurrentCard);
|
||||
}
|
||||
|
||||
private TemplatesGroup getSelectedGroup() {
|
||||
return (TemplatesGroup)myProjectTypeList.getSelectedValue();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ProjectTemplate getSelectedTemplate() {
|
||||
return myCurrentCard == Cards.TEMPLATES ? myTemplatesList.getSelectedTemplate() : null;
|
||||
return myCurrentCard == TEMPLATES_CARD ? myTemplatesList.getSelectedTemplate() : null;
|
||||
}
|
||||
|
||||
private ModuleBuilder getSelectedBuilder() {
|
||||
@@ -409,7 +407,7 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
}
|
||||
|
||||
public Collection<ProjectTemplate> getAvailableTemplates() {
|
||||
return myCurrentCard != Cards.FRAMEWORKS ? Collections.<ProjectTemplate>emptyList() : myTemplatesMap.get(getSelectedGroup());
|
||||
return myCurrentCard != FRAMEWORKS_CARD ? Collections.<ProjectTemplate>emptyList() : myTemplatesMap.get(getSelectedGroup());
|
||||
}
|
||||
|
||||
public void onWizardFinished() throws CommitStepException {
|
||||
@@ -435,6 +433,10 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
public void updateDataModel() {
|
||||
ModuleBuilder builder = getSelectedBuilder();
|
||||
myWizard.getSequence().addStepsForBuilder(builder, myContext, myModulesProvider);
|
||||
ModuleWizardStep step = getCustomStep();
|
||||
if (step != null) {
|
||||
step.updateDataModel();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -444,10 +446,6 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStepLeaving() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JComponent getPreferredFocusedComponent() {
|
||||
return myProjectTypeList;
|
||||
|
||||
+4
-5
@@ -39,12 +39,11 @@ public abstract class AbstractModuleBuilder extends ProjectBuilder {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean hasCustomOptionsPanel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom UI to be shown on the first wizard page
|
||||
*/
|
||||
@Nullable
|
||||
public JComponent getCustomOptionsPanel(Disposable parentDisposable) {
|
||||
public ModuleWizardStep getCustomOptionsStep(Disposable parentDisposable) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
+10
-7
@@ -19,6 +19,7 @@ import com.intellij.ide.fileTemplates.FileTemplate;
|
||||
import com.intellij.ide.fileTemplates.FileTemplateManager;
|
||||
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
|
||||
import com.intellij.ide.util.projectWizard.WizardContext;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.externalSystem.service.project.wizard.AbstractExternalModuleBuilder;
|
||||
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep;
|
||||
@@ -115,13 +116,15 @@ public class GradleModuleBuilder extends AbstractExternalModuleBuilder<GradlePro
|
||||
@Override
|
||||
public ModuleWizardStep[] createWizardSteps(@NotNull WizardContext wizardContext, @NotNull ModulesProvider modulesProvider) {
|
||||
myWizardContext = wizardContext;
|
||||
if (myWizardContext.isCreatingNewProject()) {
|
||||
final GradleProjectSettingsControl settingsControl = new GradleProjectSettingsControl(getExternalProjectSettings());
|
||||
return new ModuleWizardStep[]{new ExternalModuleSettingsStep<GradleProjectSettings>(this, settingsControl)};
|
||||
}
|
||||
else {
|
||||
return ModuleWizardStep.EMPTY_ARRAY;
|
||||
}
|
||||
return super.createWizardSteps(wizardContext, modulesProvider);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ModuleWizardStep getCustomOptionsStep(Disposable parentDisposable) {
|
||||
if (!myWizardContext.isCreatingNewProject()) return null;
|
||||
final GradleProjectSettingsControl settingsControl = new GradleProjectSettingsControl(getExternalProjectSettings());
|
||||
return new ExternalModuleSettingsStep<GradleProjectSettings>(this, settingsControl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.idea.maven.wizards.MavenArchetypesPanel">
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.idea.maven.wizards.MavenArchetypesStep">
|
||||
<grid id="27dc6" binding="myMainPanel" layout-manager="GridLayoutManager" row-count="3" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
+13
-2
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.jetbrains.idea.maven.wizards;
|
||||
|
||||
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
|
||||
import com.intellij.ide.wizard.StepAdapter;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
@@ -46,7 +47,7 @@ import java.util.List;
|
||||
* @author Dmitry Avdeev
|
||||
* Date: 24.09.13
|
||||
*/
|
||||
public class MavenArchetypesPanel implements Disposable {
|
||||
public class MavenArchetypesStep extends ModuleWizardStep implements Disposable {
|
||||
|
||||
private JCheckBox myUseArchetypeCheckBox;
|
||||
private JButton myAddArchetypeButton;
|
||||
@@ -63,7 +64,7 @@ public class MavenArchetypesPanel implements Disposable {
|
||||
private final MavenModuleBuilder myBuilder;
|
||||
@Nullable private final StepAdapter myStep;
|
||||
|
||||
public MavenArchetypesPanel(MavenModuleBuilder builder, @Nullable StepAdapter step) {
|
||||
public MavenArchetypesStep(MavenModuleBuilder builder, @Nullable StepAdapter step) {
|
||||
myBuilder = builder;
|
||||
myStep = step;
|
||||
Disposer.register(this, myLoadingIcon);
|
||||
@@ -298,6 +299,16 @@ public class MavenArchetypesPanel implements Disposable {
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JComponent getComponent() {
|
||||
return getMainPanel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDataModel() {
|
||||
|
||||
}
|
||||
|
||||
private static class MyRenderer extends ColoredTreeCellRenderer {
|
||||
public void customizeCellRenderer(JTree tree,
|
||||
Object value,
|
||||
+4
-8
@@ -216,15 +216,11 @@ public class MavenModuleBuilder extends ModuleBuilder implements SourcePathsBuil
|
||||
return "Maven";
|
||||
}
|
||||
|
||||
private MavenArchetypesPanel myPanel;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public JComponent getCustomOptionsPanel(Disposable parentDisposable) {
|
||||
if (myPanel == null) {
|
||||
myPanel = new MavenArchetypesPanel(this, null);
|
||||
Disposer.register(parentDisposable, myPanel);
|
||||
}
|
||||
return myPanel.getMainPanel();
|
||||
public ModuleWizardStep getCustomOptionsStep(Disposable parentDisposable) {
|
||||
MavenArchetypesStep step = new MavenArchetypesStep(this, null);
|
||||
Disposer.register(parentDisposable, step);
|
||||
return step;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -74,14 +74,14 @@ public class MavenModuleWizardStep extends ModuleWizardStep {
|
||||
private JPanel myAddToPanel;
|
||||
|
||||
@Nullable
|
||||
private final MavenArchetypesPanel myArchetypes;
|
||||
private final MavenArchetypesStep myArchetypes;
|
||||
|
||||
public MavenModuleWizardStep(MavenModuleBuilder builder, WizardContext context, boolean includeArtifacts) {
|
||||
myProjectOrNull = context.getProject();
|
||||
myBuilder = builder;
|
||||
myContext = context;
|
||||
if (includeArtifacts) {
|
||||
myArchetypes = new MavenArchetypesPanel(builder, this);
|
||||
myArchetypes = new MavenArchetypesStep(builder, this);
|
||||
myArchetypesPanel.add(myArchetypes.getMainPanel(), BorderLayout.CENTER);
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user