diff options
author | sariel <shahar.ariel@verizonmedia.com> | 2021-10-31 11:04:52 +0200 |
---|---|---|
committer | sariel <shahar.ariel@verizonmedia.com> | 2021-10-31 11:04:52 +0200 |
commit | 753c697fefc0d7f623a31d9ed4ecc98ccdbd347e (patch) | |
tree | d288d1a30e9ac32e3573f5700ee2edbbf12c6895 /sd-plugin | |
parent | e1ab55bcd4d4a300d5cfa72834bf320b551e1f21 (diff) |
Change sd.bnf and Java code to enable generating the parser and lexer from the command line
Diffstat (limited to 'sd-plugin')
-rw-r--r-- | sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdFirstPhaseDefinitionMixin.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdFirstPhaseDefinitionMixin.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdFirstPhaseDefinitionMixin.java new file mode 100644 index 00000000000..84878294d58 --- /dev/null +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdFirstPhaseDefinitionMixin.java @@ -0,0 +1,58 @@ +package org.intellij.sdk.language.psi.impl; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import com.intellij.navigation.ItemPresentation; +import com.intellij.psi.util.PsiTreeUtil; +import org.intellij.sdk.language.SdIcons; +import org.intellij.sdk.language.psi.SdRankProfileDefinition; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.Icon; + +/** + * This class is used for methods' implementations for SdFirstPhaseDefinition. Connected with "mixin" to + * FirstPhaseDefinition rule in sd.bnf + * @author shahariel + */ +public class SdFirstPhaseDefinitionMixin extends ASTWrapperPsiElement { + + public SdFirstPhaseDefinitionMixin(@NotNull ASTNode node) { + super(node); + } + + @NotNull + public String getName() { + SdRankProfileDefinition rankProfile = PsiTreeUtil.getParentOfType(this, SdRankProfileDefinition.class); + if (rankProfile == null) { + return ""; + } + return "first-phase of " + rankProfile.getName(); + } + + public ItemPresentation getPresentation() { + final SdFirstPhaseDefinitionMixin element = this; + return new ItemPresentation() { + @Override + public String getPresentableText() { + SdRankProfileDefinition rankProfile = PsiTreeUtil.getParentOfType(element, SdRankProfileDefinition.class); + if (rankProfile == null) { + return ""; + } + return "first-phase of " + rankProfile.getName(); + } + + @Nullable + @Override + public String getLocationString() { + return element.getContainingFile() != null ? element.getContainingFile().getName() : null; + } + + @Override + public Icon getIcon(boolean unused) { + return SdIcons.FIRST_PHASE; + } + }; + } +} |