gradle: Add support choosing Gradle JVM
authorVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Mon, 15 Dec 2014 12:40:58 +0000 (15:40 +0300)
committerVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Mon, 15 Dec 2014 12:40:58 +0000 (15:40 +0300)
13 files changed:
1  2 
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemJdkException.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemJdkUtil.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/InvalidJavaHomeException.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/InvalidSdkException.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ProjectJdkNotFoundException.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/UndefinedJavaHomeException.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/notification/ExternalSystemNotificationExtensionImpl.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/notification/callback/OpenExternalSystemSettingsCallback.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/notification/callback/OpenProjectJdkSettingsCallback.java
platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/ui/ExternalSystemJdkComboBox.java
plugins/gradle/resources/i18n/GradleBundle.properties
plugins/gradle/src/org/jetbrains/plugins/gradle/remote/GradleJavaHelper.java
plugins/gradle/src/org/jetbrains/plugins/gradle/service/GradleInstallationManager.java

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..83968495a8c21431d010749bd45bb26a87ec691e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++/*
++ * Copyright 2000-2014 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.execution;
++
++import com.intellij.openapi.externalSystem.model.ExternalSystemException;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/12/2014
++ */
++public class ExternalSystemJdkException extends ExternalSystemException {
++
++  public ExternalSystemJdkException(@Nullable String message, @Nullable Throwable cause) {
++    super(message, cause);
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..09dd7dfd1fcfc32ddbb1fd7cc8367a213a0be20b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,158 @@@
++/*
++ * Copyright 2000-2009 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.execution;
++
++import com.intellij.openapi.externalSystem.model.ExternalSystemException;
++import com.intellij.openapi.externalSystem.service.notification.callback.OpenExternalSystemSettingsCallback;
++import com.intellij.openapi.externalSystem.service.notification.callback.OpenProjectJdkSettingsCallback;
++import com.intellij.openapi.externalSystem.util.ExternalSystemBundle;
++import com.intellij.openapi.module.Module;
++import com.intellij.openapi.module.ModuleManager;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.projectRoots.JavaSdk;
++import com.intellij.openapi.projectRoots.JavaSdkType;
++import com.intellij.openapi.projectRoots.ProjectJdkTable;
++import com.intellij.openapi.projectRoots.Sdk;
++import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
++import com.intellij.openapi.roots.ModuleRootManager;
++import com.intellij.openapi.roots.ProjectRootManager;
++import com.intellij.openapi.util.Pair;
++import com.intellij.openapi.util.text.StringUtil;
++import com.intellij.util.Function;
++import org.jetbrains.annotations.NonNls;
++import org.jetbrains.annotations.Nullable;
++
++import javax.swing.*;
++import java.util.Collection;
++
++public class ExternalSystemJdkUtil {
++
++  @NonNls public static final String USE_INTERNAL_JAVA = "#JAVA_INTERNAL";
++  @NonNls public static final String USE_PROJECT_JDK = "#USE_PROJECT_JDK";
++  @NonNls public static final String USE_JAVA_HOME = "#JAVA_HOME";
++
++
++  @Nullable
++  public static Sdk getJdk(@Nullable Project project, @Nullable String jdkName) {
++    if (jdkName == null) return null;
++
++    if (USE_INTERNAL_JAVA.equals(jdkName)) {
++      return JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk();
++    }
++
++    if (USE_PROJECT_JDK.equals(jdkName)) {
++      if (project != null) {
++        Sdk res = ProjectRootManager.getInstance(project).getProjectSdk();
++        if (res != null) {
++          return res;
++        }
++        Module[] modules = ModuleManager.getInstance(project).getModules();
++        for (Module module : modules) {
++          Sdk sdk = ModuleRootManager.getInstance(module).getSdk();
++          if (sdk != null && sdk.getSdkType() instanceof JavaSdkType) {
++            return sdk;
++          }
++        }
++      }
++
++      if (project == null) {
++        Sdk recent = ProjectJdkTable.getInstance().findMostRecentSdkOfType(JavaSdk.getInstance());
++        if (recent != null) return recent;
++        return JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk();
++      }
++
++      throw new ExternalSystemException(
++        String.format("Project JDK is not specified. <a href='%s'>Configure</a>", OpenProjectJdkSettingsCallback.ID),
++        OpenProjectJdkSettingsCallback.ID);
++    }
++
++    if (USE_JAVA_HOME.equals(jdkName)) {
++      final String javaHome = System.getenv("JAVA_HOME");
++      if (StringUtil.isEmptyOrSpaces(javaHome)) {
++        throw new ExternalSystemException(ExternalSystemBundle.message("external.system.java.home.undefined"));
++      }
++      final Sdk jdk = JavaSdk.getInstance().createJdk("", javaHome);
++      if (jdk == null) {
++        throw new ExternalSystemException(ExternalSystemBundle.message("external.system.java.home.invalid", javaHome));
++      }
++      return jdk;
++    }
++
++    for (Sdk projectJdk : ProjectJdkTable.getInstance().getAllJdks()) {
++      if (projectJdk.getName().equals(jdkName)) {
++        return projectJdk;
++      }
++    }
++
++    throw new ExternalSystemException(ExternalSystemBundle.message("external.system.java.home.invalid", jdkName));
++  }
++
++
++  private static class Item {
++    private final Object value;
++    private final String label;
++
++    private Item(Object value, String label) {
++      this.value = value;
++      this.label = label;
++    }
++
++    public Object getValue() {
++      return value;
++    }
++
++    public String toString() {
++      return label;
++    }
++  }
++
++  public static void addToModel(DefaultComboBoxModel model, Object value, String label) {
++    model.addElement(new Item(value, label));
++  }
++
++  public static <T> void setModel(JComboBox comboBox, DefaultComboBoxModel model, Collection<T> values, Function<T, Pair<String, ?>> func) {
++    model.removeAllElements();
++    for (T each : values) {
++      Pair<String, ?> pair = func.fun(each);
++      addToModel(model, pair.second, pair.first);
++    }
++    comboBox.setModel(model);
++  }
++
++  public static void select(DefaultComboBoxModel model, Object value) {
++    for (int i = 0; i < model.getSize(); i++) {
++      Item comboBoxUtil = (Item)model.getElementAt(i);
++      if (comboBoxUtil.getValue().equals(value)) {
++        model.setSelectedItem(comboBoxUtil);
++        return;
++      }
++    }
++    if (model.getSize() != 0) {
++      model.setSelectedItem(model.getElementAt(0));
++    }
++  }
++
++  @Nullable
++  public static String getSelectedString(DefaultComboBoxModel model) {
++    return String.valueOf(getSelectedValue(model));
++  }
++
++  @Nullable
++  public static Object getSelectedValue(DefaultComboBoxModel model) {
++    final Object item = model.getSelectedItem();
++    return item != null ? ((Item)item).getValue() : null;
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b8379c6787a8c62293f92d0f0fc1bc964460925f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,33 @@@
++/*
++ * Copyright 2000-2014 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.execution;
++
++import org.jetbrains.annotations.Nullable;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/12/2014
++ */
++public class InvalidJavaHomeException extends ExternalSystemJdkException {
++
++  public InvalidJavaHomeException(@Nullable String message) {
++    super(message);
++  }
++
++  public InvalidJavaHomeException(@Nullable Throwable cause) {
++    super(cause);
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d71e011e094863245b9f1dd1c09fd2ab1e98156a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,29 @@@
++/*
++ * Copyright 2000-2014 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.execution;
++
++import com.intellij.openapi.externalSystem.util.ExternalSystemBundle;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/12/2014
++ */
++public class InvalidSdkException extends ExternalSystemJdkException {
++
++  public InvalidSdkException(String invalidPath) {
++    super(ExternalSystemBundle.message("external.system.platform.sdk.invalid", invalidPath), null);
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..577728866f29c94d48586fda3121007e8b5b245b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++/*
++ * Copyright 2000-2014 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.execution;
++
++import com.intellij.openapi.externalSystem.service.notification.callback.OpenProjectJdkSettingsCallback;
++import com.intellij.openapi.externalSystem.util.ExternalSystemBundle;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/12/2014
++ */
++public class ProjectJdkNotFoundException extends ExternalSystemJdkException {
++
++  public ProjectJdkNotFoundException() {
++    super(ExternalSystemBundle.message("external.system.project_jdk.not_specified", OpenProjectJdkSettingsCallback.ID), null,
++          OpenProjectJdkSettingsCallback.ID);
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d91c8b27e998e91d3312df719bdef44d460c521f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,29 @@@
++/*
++ * Copyright 2000-2014 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.execution;
++
++import com.intellij.openapi.externalSystem.util.ExternalSystemBundle;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/12/2014
++ */
++public class UndefinedJavaHomeException extends ExternalSystemJdkException {
++
++  public UndefinedJavaHomeException() {
++    super(ExternalSystemBundle.message("external.system.java.home.undefined"), null);
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4af9e2b5e4f9807029ca5de9ccca41b18e09dc4a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++/*
++ * Copyright 2000-2013 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.notification;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/11/2014
++ */
++public class ExternalSystemNotificationExtensionImpl implements ExternalSystemNotificationExtension {
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1fbc93378bf4e78712df825de689e9d738fb87b5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++/*
++ * Copyright 2000-2014 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.notification.callback;
++
++import com.intellij.notification.Notification;
++import com.intellij.notification.NotificationListener;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
++import org.jetbrains.annotations.NotNull;
++
++import javax.swing.event.HyperlinkEvent;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/11/2014
++ */
++public class OpenExternalSystemSettingsCallback extends NotificationListener.Adapter {
++
++  public final static String ID = "open_project_jdk_settings";
++  private final Project myProject;
++
++  public OpenExternalSystemSettingsCallback(Project project) {
++    myProject = project;
++  }
++
++  @Override
++  protected void hyperlinkActivated(@NotNull Notification notification, @NotNull HyperlinkEvent event) {
++    ProjectSettingsService.getInstance(myProject).openProjectSettings();
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..aac3b85125d1837db7636f16201562ebfd8deb19
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++/*
++ * Copyright 2000-2014 JetBrains s.r.o.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++package com.intellij.openapi.externalSystem.service.notification.callback;
++
++import com.intellij.notification.Notification;
++import com.intellij.notification.NotificationListener;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
++import org.jetbrains.annotations.NotNull;
++
++import javax.swing.event.HyperlinkEvent;
++
++/**
++ * @author Vladislav.Soroka
++ * @since 12/11/2014
++ */
++public class OpenProjectJdkSettingsCallback extends NotificationListener.Adapter {
++
++  public final static String ID = "open_project_jdk_settings";
++  private final Project myProject;
++
++  public OpenProjectJdkSettingsCallback(Project project) {
++    myProject = project;
++  }
++
++  @Override
++  protected void hyperlinkActivated(@NotNull Notification notification, @NotNull HyperlinkEvent event) {
++    ProjectSettingsService.getInstance(myProject).openProjectSettings();
++  }
++}
index f982ef9ceaeb21e746c942d6ae22bfbcdbd33a26,0000000000000000000000000000000000000000..13cd37893b70fa830d8c75d8e2a174bf6ccbd508
mode 100644,000000..100644
--- /dev/null
@@@ -1,102 -1,0 +1,104 @@@
- package org.jetbrains.idea.maven.execution;
++package com.intellij.openapi.externalSystem.service.ui;
 +
++import com.intellij.openapi.externalSystem.util.ExternalSystemBundle;
 +import com.intellij.openapi.project.Project;
 +import com.intellij.openapi.projectRoots.JavaSdk;
 +import com.intellij.openapi.projectRoots.ProjectJdkTable;
 +import com.intellij.openapi.projectRoots.Sdk;
 +import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
 +import com.intellij.openapi.roots.ProjectRootManager;
 +import org.jetbrains.annotations.NotNull;
 +import org.jetbrains.annotations.Nullable;
- import org.jetbrains.idea.maven.utils.ComboBoxUtil;
 +
 +import javax.swing.*;
 +import java.util.LinkedHashMap;
 +import java.util.Map;
 +
++import static com.intellij.openapi.externalSystem.service.ui.ComboBoxUtil.*;
++
 +/**
 + * @author Sergey Evdokimov
 + */
- public class MavenJdkComboBox extends JComboBox {
++public class ExternalSystemJdkComboBox extends JComboBox {
 +
 +  private static final int MAX_PATH_LENGTH = 50;
 +
 +  @Nullable
 +  private final Project myProject;
 +
-   public MavenJdkComboBox(@Nullable Project project) {
++  public ExternalSystemJdkComboBox(@Nullable Project project) {
 +    myProject = project;
 +  }
 +
 +  @Nullable
 +  public Project getProject() {
 +    return myProject;
 +  }
 +
 +  public void refreshData(@Nullable String selectedValue) {
 +    Map<String, String> jdkMap = collectJdkNamesAndDescriptions();
 +    if (selectedValue != null && !jdkMap.containsKey(selectedValue)) {
 +      assert selectedValue.length() > 0;
 +      jdkMap.put(selectedValue, selectedValue);
 +    }
 +
 +    removeAllItems();
 +
 +    for (Map.Entry<String, String> entry : jdkMap.entrySet()) {
-       ComboBoxUtil.addToModel((DefaultComboBoxModel)getModel(), entry.getKey(), entry.getValue());
++      addToModel((DefaultComboBoxModel)getModel(), entry.getKey(), entry.getValue());
 +    }
 +
-     ComboBoxUtil.select((DefaultComboBoxModel)getModel(), selectedValue);
++    select((DefaultComboBoxModel)getModel(), selectedValue);
 +  }
 +
 +  public String getSelectedValue() {
-     return ComboBoxUtil.getSelectedString((DefaultComboBoxModel)getModel());
++    return getSelectedString((DefaultComboBoxModel)getModel());
 +  }
 +
 +  private Map<String, String> collectJdkNamesAndDescriptions() {
 +    Map<String, String> result = new LinkedHashMap<String, String>();
 +
 +    for (Sdk projectJdk : ProjectJdkTable.getInstance().getSdksOfType(JavaSdk.getInstance())) {
 +      String name = projectJdk.getName();
 +
 +      String label;
 +
 +      String path = projectJdk.getHomePath();
 +      if (path == null) {
 +        label = name;
 +      }
 +      else {
 +        label = String.format("<html>%s <font color=gray>(%s)</font></html>", name, truncateLongPath(path));
 +      }
 +
 +      result.put(name, label);
 +    }
 +
 +    String internalJdkPath = JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk().getHomePath();
 +    assert internalJdkPath != null;
-     result.put(MavenRunnerSettings.USE_INTERNAL_JAVA, RunnerBundle.message("maven.java.internal", truncateLongPath(internalJdkPath)));
++    result.put(USE_INTERNAL_JAVA, ExternalSystemBundle.message("maven.java.internal", truncateLongPath(internalJdkPath)));
 +
 +    if (myProject != null) {
 +      String projectJdk = ProjectRootManager.getInstance(myProject).getProjectSdkName();
 +      String projectJdkTitle = String.format("<html>Use Project JDK <font color=gray>(%s)</font></html>", projectJdk == null ? "not defined yet" : projectJdk);
-       result.put(MavenRunnerSettings.USE_PROJECT_JDK, projectJdkTitle);
++      result.put(USE_PROJECT_JDK, projectJdkTitle);
 +    }
 +
 +    String javaHomePath = System.getenv("JAVA_HOME");
-     String javaHomeLabel = RunnerBundle.message("maven.java.home.env", javaHomePath == null ? "not defined yet" : truncateLongPath(javaHomePath));
++    String javaHomeLabel = ExternalSystemBundle.message("maven.java.home.env", javaHomePath == null ? "not defined yet" : truncateLongPath(javaHomePath));
 +
-     result.put(MavenRunnerSettings.USE_JAVA_HOME, javaHomeLabel);
++    result.put(USE_JAVA_HOME, javaHomeLabel);
 +
 +    return result;
 +  }
 +
 +  @NotNull
 +  private static String truncateLongPath(@NotNull String path) {
 +    if (path.length() > MAX_PATH_LENGTH) {
 +      return path.substring(0, MAX_PATH_LENGTH / 2) + "..." + path.substring(path.length() - MAX_PATH_LENGTH / 2 - 3);
 +    }
 +
 +    return path;
 +  }
 +
 +}
diff --cc plugins/gradle/src/org/jetbrains/plugins/gradle/remote/GradleJavaHelper.java
index 62f664c04da3cdce85b68a9e95e73e2606781817,62f664c04da3cdce85b68a9e95e73e2606781817..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,61 -1,61 +1,0 @@@
--package org.jetbrains.plugins.gradle.remote;
--
--import com.intellij.openapi.project.Project;
--import com.intellij.openapi.projectRoots.JdkUtil;
--import com.intellij.openapi.projectRoots.ProjectJdkTable;
--import com.intellij.openapi.projectRoots.Sdk;
--import com.intellij.openapi.roots.ProjectRootManager;
--import com.intellij.util.containers.ContainerUtilRt;
--import org.jetbrains.annotations.Nullable;
--
--import java.io.File;
--import java.util.ArrayList;
--import java.util.List;
--
--/**
-- * Encapsulates functionality of deciding what java should be used by the gradle process.
-- * <p/>
-- * Thread-safe.
-- * 
-- * @author Denis Zhdanov
-- * @since 2/27/12 2:20 PM
-- */
--public class GradleJavaHelper {
--
--  public static final String GRADLE_JAVA_HOME_KEY = "gradle.java.home";
--  
--  @SuppressWarnings("MethodMayBeStatic")
--  @Nullable
--  public String getJdkHome(@Nullable Project project) {
--    List<String> candidates = ContainerUtilRt.newArrayList();
--    candidates.add(System.getProperty(GRADLE_JAVA_HOME_KEY));
--    candidates.add(System.getenv("JAVA_HOME"));
--    for (String candidate : candidates) {
--      if (candidate != null && JdkUtil.checkForJdk(new File(candidate))) {
--        return candidate;
--      }
--    }
--
--    if (project != null) {
--      Sdk sdk = ProjectRootManager.getInstance(project).getProjectSdk();
--      if (sdk != null) {
--        String path = sdk.getHomePath();
--        if (path != null && JdkUtil.checkForJdk(new File(path))) {
--          return path;
--        }
--      }
--    }
--
--    Sdk[] sdks = ProjectJdkTable.getInstance().getAllJdks();
--    if (sdks != null) {
--      for (Sdk sdk : sdks) {
--        String path = sdk.getHomePath();
--        if (path != null && JdkUtil.checkForJdk(new File(path))) {
--          return path;
--        }
--      }
--    }
--    
--    return null;
--  }
--}