UnknownSdkTracker - bugfix SDK actions

GitOrigin-RevId: 6b5bd48803efbf3262b7b66d6335837f7c6620e0
This commit is contained in:
Eugene Petrenko
2019-12-18 22:37:16 +00:00
committed by intellij-monorepo-bot
parent af419f09be
commit 6fa51cca81
2 changed files with 20 additions and 29 deletions
@@ -74,7 +74,7 @@ public class UnknownSdkEditorNotification implements Disposable {
() -> {
UnknownSdkTracker
.getInstance(myProject)
.showSdkSelectionPopup(sdkName, sdkType, parentJComponentOrSelf(panel), () -> removeNotification(panel));
.showSdkSelectionPopup(sdkName, sdkType, parentJComponentOrSelf(panel), sdk -> removeNotification(panel));
}
);
}
@@ -108,7 +108,7 @@ public class UnknownSdkEditorNotification implements Disposable {
panel.createActionLabel("Configure...", () -> {
UnknownSdkTracker
.getInstance(myProject)
.showSdkSelectionPopup(null, parentJComponentOrSelf(panel), sdk -> {
.showSdkSelectionPopup(null, null, parentJComponentOrSelf(panel), sdk -> {
setSdk.accept(sdk);
removeNotification(panel);
});
@@ -178,28 +178,14 @@ public class UnknownSdkTracker {
SdkDownloadTracker downloadTracker = SdkDownloadTracker.getInstance();
downloadTracker.registerSdkDownload(sdk, task);
downloadTracker.tryRegisterDownloadingListener(sdk, lifetime, new ProgressIndicatorBase(), succeeded -> {
if (succeeded) {
registerNewSdkInJdkTable(info, sdk);
}
Disposer.dispose(lifetime);
});
downloadTracker.tryRegisterDownloadingListener(sdk, lifetime, new ProgressIndicatorBase(), __ -> Disposer.dispose(lifetime));
downloadTracker.startSdkDownloadIfNeeded(sdk);
registerNewSdkInJdkTable(info, sdk);
});
}
public void showSdkSelectionPopup(@NotNull String sdkName,
public void showSdkSelectionPopup(@Nullable String sdkName,
@Nullable SdkType sdkType,
@NotNull JComponent underneathRightOfComponent,
@NotNull Runnable onSelectionMade) {
showSdkSelectionPopup(sdkType, underneathRightOfComponent, sdk -> {
registerNewSdkInJdkTable(sdkName, sdk);
onSelectionMade.run();
});
}
public void showSdkSelectionPopup(@Nullable SdkType sdkType,
@NotNull JComponent underneathRightOfComponent,
@NotNull Consumer<? super Sdk> onSelectionMade) {
ProjectSdksModel model = new ProjectSdksModel();
@@ -219,9 +205,12 @@ public class UnknownSdkTracker {
popup.createPopup(underneathRightOfComponent, new SdkPopup.SdkPopupListener() {
private void handleNewItem(@NotNull SdkListItem item) {
if (item instanceof SdkListItem.SdkItem) {
onSelectionMade.consume(((SdkListItem.SdkItem)item).getSdk());
Sdk sdk = ((SdkListItem.SdkItem)item).getSdk();
registerNewSdkInJdkTable(sdkName, sdk);
onSelectionMade.consume(sdk);
}
}
@Override
public void onNewItemAdded(@NotNull SdkListItem item) {
handleNewItem(item);
@@ -285,18 +274,20 @@ public class UnknownSdkTracker {
registerNewSdkInJdkTable(info.getSdkName(), sdk);
}
private static void registerNewSdkInJdkTable(@NotNull String sdkName, @NotNull Sdk sdk) {
private static void registerNewSdkInJdkTable(@Nullable String sdkName, @NotNull Sdk sdk) {
WriteAction.run(() -> {
ProjectJdkTable table = ProjectJdkTable.getInstance();
Sdk clash = table.findJdk(sdkName);
if (clash != null) {
LOG.warn("SDK with name " + sdkName + " already exists: clash=" + clash + ", new=" + sdk);
return;
}
if (sdkName != null) {
Sdk clash = table.findJdk(sdkName);
if (clash != null) {
LOG.warn("SDK with name " + sdkName + " already exists: clash=" + clash + ", new=" + sdk);
return;
}
SdkModificator mod = sdk.getSdkModificator();
mod.setName(sdkName);
mod.commitChanges();
SdkModificator mod = sdk.getSdkModificator();
mod.setName(sdkName);
mod.commitChanges();
}
table.addJdk(sdk);
});