all sdks properly added to sdk combobox

This commit is contained in:
Ekaterina Tuzova
2014-02-11 17:14:18 +04:00
parent 038550fbff
commit d38edf2085
2 changed files with 11 additions and 19 deletions
@@ -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) {
@@ -74,7 +74,7 @@ public class CreateVirtualEnvDialog extends IdeaDialog {
void virtualEnvCreated(Sdk sdk, boolean associateWithProject);
}
private static void setupVirtualEnvSdk(List<Sdk> allSdks,
private void setupVirtualEnvSdk(List<Sdk> 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);
}
}