| package com.intellij.codeInsight.unwrap; |
| |
| import com.intellij.codeInsight.CodeInsightBundle; |
| import com.intellij.psi.PsiConditionalExpression; |
| import com.intellij.psi.PsiElement; |
| import com.intellij.psi.PsiExpressionList; |
| import com.intellij.util.IncorrectOperationException; |
| |
| import java.util.List; |
| |
| /** |
| * @author Sergey Evdokimov |
| */ |
| public class JavaConditionalUnwrapper extends JavaUnwrapper { |
| public JavaConditionalUnwrapper() { |
| super(CodeInsightBundle.message("unwrap.conditional")); |
| } |
| |
| @Override |
| public boolean isApplicableTo(PsiElement e) { |
| return e.getParent() instanceof PsiConditionalExpression; |
| } |
| |
| @Override |
| public PsiElement collectAffectedElements(PsiElement e, List<PsiElement> toExtract) { |
| super.collectAffectedElements(e, toExtract); |
| return e.getParent(); |
| } |
| |
| @Override |
| protected void doUnwrap(PsiElement element, Context context) throws IncorrectOperationException { |
| PsiConditionalExpression cond = (PsiConditionalExpression)element.getParent(); |
| |
| PsiElement savedBlock; |
| |
| if (cond.getElseExpression() == element) { |
| savedBlock = element; |
| } |
| else { |
| savedBlock = cond.getThenExpression(); |
| } |
| |
| context.extractElement(savedBlock, cond); |
| |
| if (cond.getParent() instanceof PsiExpressionList) { |
| context.delete(cond); |
| } |
| else { |
| context.deleteExactly(cond); |
| } |
| } |
| } |