Don't check whether SDK home path exists on a local disk if it is a remote one
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Tue, 25 Apr 2017 18:30:14 +0000 (20:30 +0200)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Tue, 25 Apr 2017 18:33:01 +0000 (20:33 +0200)
java/idea-ui/src/com/intellij/openapi/projectRoots/ui/SdkEditor.java
platform/projectModel-api/src/com/intellij/openapi/projectRoots/Sdk.java
platform/projectModel-api/src/com/intellij/openapi/projectRoots/SdkTypeId.java
python/src/com/jetbrains/python/sdk/PythonSdkType.java

index 6c2687978febbaa4c309708d548f65ef466f75e5..d69df85cb95a7718910f251ec543c5f73b3a8d9f 100644 (file)
@@ -290,9 +290,9 @@ public class SdkEditor implements Configurable, Place.Navigator {
   private void setHomePathValue(String absolutePath) {
     myHomeComponent.setText(absolutePath);
     final Color fg;
-    if (absolutePath != null && !absolutePath.isEmpty()) {
+    if (absolutePath != null && !absolutePath.isEmpty() && mySdk != null && mySdk.getSdkType().isLocalSdk(mySdk)) {
       final File homeDir = new File(absolutePath);
-      boolean homeMustBeDirectory = mySdk == null || ((SdkType)mySdk.getSdkType()).getHomeChooserDescriptor().isChooseFolders();
+      boolean homeMustBeDirectory = ((SdkType)mySdk.getSdkType()).getHomeChooserDescriptor().isChooseFolders();
       fg = homeDir.exists() && homeDir.isDirectory() == homeMustBeDirectory
            ? UIUtil.getFieldForegroundColor()
            : PathEditor.INVALID_COLOR;
index 9dff243988c15c7bdaf0ee9e6e0be132bb5a4e25..93273d7f45d11fdc644a58a0eb24a9229a3cb802 100644 (file)
@@ -25,7 +25,6 @@ import org.jetbrains.annotations.Nullable;
 /**
  * @author Eugene Zhuravlev
  *         Date: Sep 23, 2004
- *
  * @see ProjectJdkTable
  * @see ProjectRootManager#getProjectSdk()
  */
index bc4fd56a4b93c328a0803e333e5536e9da306297..c5ec2e71c87ce360af0d63247d0549d6d606d65b 100644 (file)
@@ -33,4 +33,11 @@ public interface SdkTypeId {
 
   @Nullable
   SdkAdditionalData loadAdditionalData(@NotNull Sdk currentSdk, Element additional);
+
+  /**
+   * An SDK can be located on a local machine or on a remote or virtual machine. In the latter case this method returns false.
+   */
+  default boolean isLocalSdk(@NotNull Sdk sdk) {
+    return true;
+  }
 }
index ee4b320503d4e71dec360d76a5b585afacccea65..4c6a8fd0ac659f0a0305492b4a79bb7df65c2786 100644 (file)
@@ -925,5 +925,10 @@ public final class PythonSdkType extends SdkType {
   public static Sdk findSdkByKey(@NotNull String key) {
     return ProjectJdkTable.getInstance().findJdk(key);
   }
+
+  @Override
+  public boolean isLocalSdk(@NotNull Sdk sdk) {
+    return !isRemote(sdk);
+  }
 }