package com.jetbrains.lang.dart.ide.surroundWith; import com.intellij.lang.surroundWith.SurroundDescriptor; import com.intellij.lang.surroundWith.Surrounder; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.jetbrains.lang.dart.ide.surroundWith.expression.DartWithBracketsExpressionSurrounder; import com.jetbrains.lang.dart.ide.surroundWith.expression.DartWithNotParenthesisExpressionSurrounder; import com.jetbrains.lang.dart.ide.surroundWith.expression.DartWithParenthesisExpressionSurrounder; import com.jetbrains.lang.dart.psi.DartExpression; import com.jetbrains.lang.dart.util.DartRefactoringUtil; import org.jetbrains.annotations.NotNull; public class DartExpressionSurroundDescriptor implements SurroundDescriptor { @NotNull @Override public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) { final DartExpression result = DartRefactoringUtil.findExpressionInRange(file, startOffset, endOffset); return result == null ? PsiElement.EMPTY_ARRAY : new PsiElement[]{result}; } @NotNull @Override public Surrounder[] getSurrounders() { return new Surrounder[]{ new DartWithParenthesisExpressionSurrounder(), new DartWithNotParenthesisExpressionSurrounder(), new DartWithBracketsExpressionSurrounder(), }; } @Override public boolean isExclusive() { return false; } }