/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.formatting; import com.intellij.formatting.Spacing; import com.intellij.psi.PsiElement; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import gw.plugin.ij.lang.GosuLanguage; import gw.plugin.ij.lang.parser.GosuElementTypes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static com.intellij.patterns.PlatformPatterns.psiElement; public class GosuSpacingBeforeKeywords extends GosuElementTypes { private static Spacing getSpacingBeforeKeywordElse(@NotNull CommonCodeStyleSettings settings) { return GosuSpaces.getSpace(settings.SPACE_BEFORE_ELSE_KEYWORD, settings); } private static Spacing getSpacingBeforeKeywordWhile(@NotNull CommonCodeStyleSettings settings) { return GosuSpaces.getSpace(settings.SPACE_BEFORE_WHILE_KEYWORD, settings); } private static Spacing getSpacingBeforeKeywordCatch(@NotNull CommonCodeStyleSettings settings) { return GosuSpaces.getSpace(settings.SPACE_BEFORE_CATCH_KEYWORD, settings); } private static Spacing getSpacingBeforeKeywordFinally(@NotNull CommonCodeStyleSettings settings) { return GosuSpaces.getSpace(settings.SPACE_BEFORE_FINALLY_KEYWORD, settings); } @Nullable public static Spacing getSpacing(PsiElement psi1, PsiElement psi2, @NotNull CommonCodeStyleSettings settings, GosuCodeStyleSettings gosuSettings) { if (psiElement(TT_else).accepts(psi2)) { return getSpacingBeforeKeywordElse(settings); } if (psiElement(TT_while).accepts(psi2)) { return getSpacingBeforeKeywordWhile(settings); } if (psiElement(ELEM_TYPE_CatchClause).accepts(psi2)) { return getSpacingBeforeKeywordCatch(settings); } if (psiElement(TT_finally).accepts(psi2)) { return getSpacingBeforeKeywordFinally(settings); } return null; } }