From e5fea5533ba480e5f4053aac9434d4bc25733306 Mon Sep 17 00:00:00 2001 From: Bart van Helvert Date: Fri, 20 Jan 2023 13:45:56 +0100 Subject: [PATCH] [lang] Make getElement API protected in PsiElementBaseIntentionAction Can be used to retrieve element in intention preview. GitOrigin-RevId: c1fe0e4b83d941259ad3504639af05b58488fe41 --- .../impl/ExtractSetFromComparisonChainAction.java | 3 +-- .../impl/singlereturn/ConvertToSingleReturnAction.java | 2 +- .../intention/PsiElementBaseIntentionAction.java | 9 ++++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExtractSetFromComparisonChainAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExtractSetFromComparisonChainAction.java index 11e7d4fc7894..654c14cd62cf 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExtractSetFromComparisonChainAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ExtractSetFromComparisonChainAction.java @@ -10,7 +10,6 @@ import com.intellij.java.JavaBundle; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.application.WriteAction; -import com.intellij.openapi.editor.CaretModel; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; @@ -67,7 +66,7 @@ public class ExtractSetFromComparisonChainAction extends PsiElementBaseIntention @Override public @NotNull IntentionPreviewInfo generatePreview(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) { - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); + PsiElement element = getElement(editor, file); if (element == null) return IntentionPreviewInfo.EMPTY; extract(project, editor, element); return IntentionPreviewInfo.DIFF; diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/singlereturn/ConvertToSingleReturnAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/singlereturn/ConvertToSingleReturnAction.java index cf31f010e7e9..c3f48116d483 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/singlereturn/ConvertToSingleReturnAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/singlereturn/ConvertToSingleReturnAction.java @@ -48,7 +48,7 @@ public class ConvertToSingleReturnAction extends PsiElementBaseIntentionAction { @Override public @NotNull IntentionPreviewInfo generatePreview(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) { - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); + PsiElement element = getElement(editor, file); PsiCodeBlock block = findBlock(element); if (block == null) return IntentionPreviewInfo.EMPTY; PsiCodeBlock replacement = generateBody(project, block, new EmptyProgressIndicator()); diff --git a/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java b/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java index 56aa6e279537..66e2655a708f 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java +++ b/platform/lang-api/src/com/intellij/codeInsight/intention/PsiElementBaseIntentionAction.java @@ -77,8 +77,15 @@ public abstract class PsiElementBaseIntentionAction extends BaseIntentionAction */ public abstract boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element); + /** + * Retrieves the element this intention was invoked on. + * + * @param editor the editor in which the intention was invoked, can be preview editor. + * @param file the file in which the intention was invoked. + * @return the element under caret. + */ @Nullable - private static PsiElement getElement(@NotNull Editor editor, @NotNull PsiFile file) { + protected static PsiElement getElement(@NotNull Editor editor, @NotNull PsiFile file) { CaretModel caretModel = editor.getCaretModel(); int position = caretModel.getOffset(); return file.findElementAt(position);