UnknownSdk - yet another (proper) fix for IDEA-232821, IDEA-238147 (WIP) - fix presentation

GitOrigin-RevId: 4449c902e7c7681ad2c32fcccde9adbd9b2559cc
This commit is contained in:
Eugene Petrenko
2020-04-22 17:49:10 +00:00
committed by intellij-monorepo-bot
parent 2ca5ad7ab6
commit 19aefdb5f8
3 changed files with 18 additions and 6 deletions
@@ -11,16 +11,16 @@ import com.intellij.openapi.fileEditor.FileEditorManagerListener;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.projectRoots.SdkType;
import com.intellij.openapi.roots.ui.configuration.SdkListPresenter;
import com.intellij.openapi.roots.ui.configuration.UnknownSdk;
import com.intellij.openapi.roots.ui.configuration.UnknownSdkDownloadableSdkFix;
import com.intellij.openapi.roots.ui.configuration.UnknownSdkLocalSdkFix;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.EditorNotificationPanel;
import com.intellij.ui.EditorNotifications;
import com.intellij.ui.HyperlinkLabel;
import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -259,7 +259,13 @@ public class UnknownSdkEditorNotification {
String intentionActionText = ProjectBundle.message("config.invalid.sdk.configure.missing", sdkTypeName, mySdkName);
String localText = localFix != null ? intentionActionText = ProjectBundle.message("config.unknown.sdk.local", StringUtil.trimMiddle(FileUtil.getLocationRelativeToUserHome(localFix.getExistingSdkHome()), 30)) : "";
String localText = "";
String localTextTooltip = "";
if (localFix != null) {
localText = intentionActionText = ProjectBundle.message("config.unknown.sdk.local", sdkTypeName, localFix.getPresentableVersionString());
localTextTooltip = SdkListPresenter.presentDetectedSdkPath(localFix.getExistingSdkHome(), 90, 40);
}
String downloadText = downloadFix != null ? intentionActionText = ProjectBundle.message("config.unknown.sdk.download", downloadFix.getDownloadDescription()) : "";
EditorNotificationPanel notification = newNotificationPanel(intentionActionText);
@@ -268,9 +274,10 @@ public class UnknownSdkEditorNotification {
notification.setText(notificationText);
if (localFix != null) {
notification.createActionLabel(localText, () -> {
HyperlinkLabel actionLabel = notification.createActionLabel(localText, () -> {
mySdk.applyLocalFix(project);
}, true);
actionLabel.setToolTipText(localTextTooltip);
}
else if (downloadFix != null) {
notification.createActionLabel(downloadText, () -> {
@@ -225,11 +225,16 @@ public final class SdkListPresenter extends ColoredListCellRenderer<SdkListItem>
@NotNull
public static String presentDetectedSdkPath(@NotNull String home) {
return presentDetectedSdkPath(home, 50, 30);
}
@NotNull
public static String presentDetectedSdkPath(@NotNull String home, int maxLength, int suffixLength) {
//for macOS, let's try removing Bundle internals
home = StringUtil.trimEnd(home, "/Contents/Home"); //NON-NLS
home = StringUtil.trimEnd(home, "/Contents/MacOS"); //NON-NLS
home = FileUtil.getLocationRelativeToUserHome(home);
home = StringUtil.shortenTextWithEllipsis(home, 50, 30);
home = StringUtil.shortenTextWithEllipsis(home, maxLength, suffixLength);
return home;
}
}
@@ -262,7 +262,7 @@ config.invalid.sdk.notification.text={0} "{1}" is broken or configured incorrect
config.unknown.sdk.configure=Configure...
config.invalid.sdk.configure=Configure...
config.unknown.sdk.download=Download {0}
config.unknown.sdk.local=Use {0}
config.unknown.sdk.local=Use existing {0} {1}
config.unknown.sdk.configure.missing=Configure missing {0} "{1}"
config.invalid.sdk.configure.missing=Configure broken {0} "{1}"
config.unknown.sdk.configuration=SDK configuration