From 2c6260d4d075192583d45c96f0288c02aed66abb Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Tue, 24 Apr 2012 19:32:44 +0400 Subject: [PATCH] IDEA-85155 When creating a new Maven module, validate that a Maven installation is found before letting me proceed with a wizard --- .../maven/project/MavenEnvironmentForm.java | 6 ++++++ .../maven/wizards/SelectPropertiesStep.java | 20 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java index 2755eb81d341..a27ff1f62d8f 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenEnvironmentForm.java @@ -27,6 +27,7 @@ import com.intellij.ui.PanelWithAnchor; import com.intellij.ui.components.JBLabel; import com.intellij.util.Alarm; import com.intellij.util.ui.UIUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.utils.MavenUtil; @@ -127,6 +128,11 @@ public class MavenEnvironmentForm implements PanelWithAnchor { localRepositoryOverrider.reset(data.getLocalRepository()); } + @NotNull + public String getMavenHome() { + return mavenHomeOverrider.getResult(); + } + public JComponent createComponent() { // all listeners will be removed when dialog is closed mavenHomeComponent.getComponent().addBrowseFolderListener(ProjectBundle.message("maven.select.maven.home.directory"), "", null, diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/SelectPropertiesStep.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/SelectPropertiesStep.java index 7f18f9426189..1996880c8fe2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/SelectPropertiesStep.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/SelectPropertiesStep.java @@ -16,21 +16,21 @@ package org.jetbrains.idea.maven.wizards; import com.intellij.ide.util.projectWizard.ModuleWizardStep; +import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.util.containers.hash.HashMap; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.execution.MavenPropertiesPanel; -import org.jetbrains.idea.maven.indices.MavenIndex; import org.jetbrains.idea.maven.model.MavenArchetype; import org.jetbrains.idea.maven.model.MavenId; import org.jetbrains.idea.maven.project.MavenEnvironmentForm; -import org.jetbrains.idea.maven.project.MavenGeneralSettings; import org.jetbrains.idea.maven.project.MavenProjectsManager; +import org.jetbrains.idea.maven.utils.MavenUtil; import javax.swing.*; import java.awt.*; -import java.util.Collections; +import java.io.File; import java.util.LinkedHashMap; import java.util.Map; @@ -100,6 +100,20 @@ public class SelectPropertiesStep extends ModuleWizardStep { return myBuilder.getArchetype() != null; } + @Override + public boolean validate() throws ConfigurationException { + File mavenHome = MavenUtil.resolveMavenHomeDirectory(myEnvironmentForm.getMavenHome()); + if (mavenHome == null) { + throw new ConfigurationException("Maven home directory is not specified"); + } + + if (!MavenUtil.isValidMavenHome(mavenHome)) { + throw new ConfigurationException("Maven home directory is invalid: " + mavenHome); + } + + return true; + } + @Override public void updateDataModel() { myBuilder.setEnvironmentForm(myEnvironmentForm);