IDEA-85155 When creating a new Maven module, validate that a Maven installation is found before letting me proceed with a wizard

This commit is contained in:
Sergey Evdokimov
2012-04-24 19:33:05 +04:00
parent 480f8b4422
commit 2c6260d4d0
2 changed files with 23 additions and 3 deletions
@@ -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,
@@ -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);