From 91afaf57ef5b72d1b4c596e6fdccd2b889a401a8 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 9 May 2023 13:43:56 +0200 Subject: [PATCH] [mod-command] InvertIfConditionAction: ModCommandAction GitOrigin-RevId: 328140468ee5e5370d3c87835c72a06841dc1d22 --- .../impl/InvertIfConditionAction.java | 26 +++++++++---------- .../invertIfCondition/afterUnreachable.java | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java index e84e698d1275..04a2edd52333 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/InvertIfConditionAction.java @@ -1,10 +1,10 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.intention.impl; -import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; +import com.intellij.codeInspection.EditorUpdater; +import com.intellij.codeInspection.PsiUpdateModCommandAction; import com.intellij.java.JavaBundle; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; @@ -23,13 +23,19 @@ import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Objects; -public class InvertIfConditionAction extends PsiElementBaseIntentionAction { +public class InvertIfConditionAction extends PsiUpdateModCommandAction { private static final Logger LOG = Logger.getInstance(InvertIfConditionAction.class); - @Override - public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { + public InvertIfConditionAction() { + super(PsiElement.class); + } - int offset = editor.getCaretModel().getOffset(); + @Override + protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiElement element) { + return isAvailable(element, context.offset()) ? Presentation.of(getFamilyName()) : null; + } + + private static boolean isAvailable(@NotNull PsiElement element, int offset) { final PsiIfStatement ifStatement = PsiTreeUtil.getParentOfType(element, PsiIfStatement.class); if (ifStatement == null) return false; final PsiExpression condition = ifStatement.getCondition(); @@ -68,12 +74,6 @@ public class InvertIfConditionAction extends PsiElementBaseIntentionAction { return startThenOffset >= 0 && afterIfOffset >= 0; } - @Override - @NotNull - public String getText() { - return getFamilyName(); - } - @Override @NotNull public String getFamilyName() { @@ -81,7 +81,7 @@ public class InvertIfConditionAction extends PsiElementBaseIntentionAction { } @Override - public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + protected void invoke(@NotNull ActionContext context, @NotNull PsiElement element, @NotNull EditorUpdater updater) { PsiIfStatement ifStatement = PsiTreeUtil.getParentOfType(element, PsiIfStatement.class); LOG.assertTrue(ifStatement != null); diff --git a/java/java-tests/testData/codeInsight/invertIfCondition/afterUnreachable.java b/java/java-tests/testData/codeInsight/invertIfCondition/afterUnreachable.java index bb72a3020d57..f354babdb410 100644 --- a/java/java-tests/testData/codeInsight/invertIfCondition/afterUnreachable.java +++ b/java/java-tests/testData/codeInsight/invertIfCondition/afterUnreachable.java @@ -9,7 +9,7 @@ class A { if (!b) { } else { - break; + break; } } }