package com.sunqian.intention; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.util.IncorrectOperationException; import com.sunqian.constvalue.ShortCutType; import com.sunqian.model.ActionPerformer; import com.sunqian.utils.FormatTools; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import java.util.Optional; /** * intention actionç±» * * @author sunqian * @date 2019/6/21 */ public class PX2VWIntention extends PsiElementBaseIntentionAction implements IntentionAction { @Override public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { Optional.ofNullable(ActionPerformer.getActionPerformer(project, editor)).ifPresent(ap -> Optional.of(FormatTools.getFormatTools(ap.getConstValue())).ifPresent(formatTools -> formatTools.formatLineCode(ap, ShortCutType.VW) ) ); } @Override public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { return ActionPerformer.getActionPerformer(project, editor).getConstValue().getVwIntention() && IntentionUtils.isAvailable(editor, element); } @Nls(capitalization = Nls.Capitalization.Sentence) @NotNull @Override public String getFamilyName() { return "Px to vw converter"; } @NotNull @Override public String getText() { return "Px to vw"; } @Override public boolean startInWriteAction() { return false; } }