From d38edf2085ccce7dd002fdb2591b090319e15e4e Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 11 Feb 2014 17:14:18 +0400 Subject: [PATCH] all sdks properly added to sdk combobox --- .../PyActiveSdkConfigurable.java | 27 +++++++------------ .../python/sdk/CreateVirtualEnvDialog.java | 3 ++- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/python/ide/src/com/jetbrains/python/configuration/PyActiveSdkConfigurable.java b/python/ide/src/com/jetbrains/python/configuration/PyActiveSdkConfigurable.java index 16d87e554aa1..da5511de29ae 100644 --- a/python/ide/src/com/jetbrains/python/configuration/PyActiveSdkConfigurable.java +++ b/python/ide/src/com/jetbrains/python/configuration/PyActiveSdkConfigurable.java @@ -63,6 +63,7 @@ public class PyActiveSdkConfigurable implements UnnamedConfigurable { private final Project myProject; @Nullable private final Module myModule; private MyListener myListener; + boolean mySdkAdded = false; private PyConfigurableInterpreterList myInterpreterList; private ProjectSdksModel myProjectSdksModel; @@ -111,15 +112,10 @@ public class PyActiveSdkConfigurable implements UnnamedConfigurable { @Override public void consume(Sdk sdk) { if (sdk == null) return; - final Sdk existedSdk = myProjectSdksModel.findSdk(sdk.getName()); - if (existedSdk == null) { - myProjectSdksModel.addSdk(sdk); - } - myInterpreterList.setSelectedSdk(sdk); - + mySdkAdded = true; + updateSdkList(false); mySdkCombo.getModel().setSelectedItem(sdk); - myPackagesPanel.updatePackages( - new PyPackageManagementService(myProject, sdk)); + myPackagesPanel.updatePackages(new PyPackageManagementService(myProject, sdk)); } } ); @@ -219,7 +215,7 @@ public class PyActiveSdkConfigurable implements UnnamedConfigurable { public boolean isModified() { final Sdk sdk = getSdk(); final Sdk selectedItem = (Sdk)mySdkCombo.getSelectedItem(); - return selectedItem instanceof PyDetectedSdk || sdk != myProjectSdksModel.findSdk(selectedItem); + return mySdkAdded || selectedItem instanceof PyDetectedSdk || sdk != myProjectSdksModel.findSdk(selectedItem); } @Nullable @@ -243,7 +239,10 @@ public class PyActiveSdkConfigurable implements UnnamedConfigurable { } }, ModalityState.any()); } - myProjectSdksModel.apply(); + if (mySdkAdded) { + myProjectSdksModel.addSdk(item); + myProjectSdksModel.apply(null, true); + } final Sdk selectedSdk = myProjectSdksModel.findSdk(item); if (myModule == null) { final ProjectRootManager rootManager = ProjectRootManager.getInstance(myProject); @@ -258,14 +257,6 @@ public class PyActiveSdkConfigurable implements UnnamedConfigurable { ModuleRootModificationUtil.setModuleSdk(myModule, selectedSdk); } final Sdk prevSdk = ProjectRootManager.getInstance(myProject).getProjectSdk(); - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - ProjectRootManager.getInstance(myProject).setProjectSdk(selectedSdk); - } - }); - - myProjectSdksModel.setProjectSdk(selectedSdk); // update string literals if different LanguageLevel was selected if (prevSdk != null && selectedSdk != null) { diff --git a/python/src/com/jetbrains/python/sdk/CreateVirtualEnvDialog.java b/python/src/com/jetbrains/python/sdk/CreateVirtualEnvDialog.java index 7eea8e0aba89..03331569c0f3 100644 --- a/python/src/com/jetbrains/python/sdk/CreateVirtualEnvDialog.java +++ b/python/src/com/jetbrains/python/sdk/CreateVirtualEnvDialog.java @@ -74,7 +74,7 @@ public class CreateVirtualEnvDialog extends IdeaDialog { void virtualEnvCreated(Sdk sdk, boolean associateWithProject); } - private static void setupVirtualEnvSdk(List allSdks, + private void setupVirtualEnvSdk(List allSdks, final String path, boolean associateWithProject, VirtualEnvCallback callback) { @@ -91,6 +91,7 @@ public class CreateVirtualEnvDialog extends IdeaDialog { final ProjectJdkImpl sdk = new ProjectJdkImpl(name, PythonSdkType.getInstance()); sdk.setHomePath(sdkHome.getPath()); callback.virtualEnvCreated(sdk, associateWithProject); + PythonSdkType.setupSdkPaths(sdk, myProject, null); } }