mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-179622 Disallow to run "stream debugger" action when jdk 9 is used
This commit is contained in:
+27
@@ -15,6 +15,7 @@ import com.intellij.debugger.streams.ui.impl.ElementChooserImpl;
|
||||
import com.intellij.debugger.streams.ui.impl.EvaluationAwareTraceWindow;
|
||||
import com.intellij.debugger.streams.wrapper.StreamChain;
|
||||
import com.intellij.debugger.streams.wrapper.StreamChainBuilder;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.Presentation;
|
||||
@@ -23,11 +24,17 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.JavaSdk;
|
||||
import com.intellij.openapi.projectRoots.JavaSdkVersion;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiEditorUtil;
|
||||
import com.intellij.xdebugger.XDebugSession;
|
||||
import com.intellij.xdebugger.XDebuggerManager;
|
||||
import com.intellij.xdebugger.impl.XDebuggerManagerImpl;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -73,6 +80,14 @@ public class TraceStreamAction extends AnAction {
|
||||
final XDebugSession session = getCurrentSession(e);
|
||||
Extensions.getExtensions(LibrarySupportProvider.EP_NAME);
|
||||
final PsiElement element = session == null ? null : myPositionResolver.getNearestElementToBreakpoint(session);
|
||||
|
||||
if (element != null && isJdkAtLeast9(session.getProject(), element)) {
|
||||
XDebuggerManagerImpl.NOTIFICATION_GROUP
|
||||
.createNotification("This action does not work with JDK 9 yet", MessageType.WARNING)
|
||||
.notify(session.getProject());
|
||||
return;
|
||||
}
|
||||
|
||||
if (element != null) {
|
||||
final List<StreamChainWithLibrary> chains = mySupportedLibraries.stream()
|
||||
.filter(library -> library.languageId.equals(element.getLanguage().getID()))
|
||||
@@ -151,6 +166,18 @@ public class TraceStreamAction extends AnAction {
|
||||
return project == null ? null : XDebuggerManager.getInstance(project).getCurrentSession();
|
||||
}
|
||||
|
||||
private static boolean isJdkAtLeast9(@NotNull Project project, @NotNull PsiElement element) {
|
||||
if (element.getLanguage().is(JavaLanguage.INSTANCE)) {
|
||||
final Sdk sdk = ProjectRootManager.getInstance(project).getProjectSdk();
|
||||
if (sdk != null) {
|
||||
final JavaSdkVersion javaVersion = JavaSdk.getInstance().getVersion(sdk);
|
||||
if (javaVersion != null) return javaVersion.isAtLeast(JavaSdkVersion.JDK_1_9);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static class MyStreamChainChooser extends ElementChooserImpl<StreamChainOption> {
|
||||
MyStreamChainChooser(@NotNull Editor editor) {
|
||||
super(editor);
|
||||
|
||||
Reference in New Issue
Block a user