summaryrefslogtreecommitdiffstats
path: root/sd-plugin
diff options
context:
space:
mode:
authorsariel <shahar.ariel@verizonmedia.com>2021-10-31 11:04:52 +0200
committersariel <shahar.ariel@verizonmedia.com>2021-10-31 11:04:52 +0200
commit753c697fefc0d7f623a31d9ed4ecc98ccdbd347e (patch)
treed288d1a30e9ac32e3573f5700ee2edbbf12c6895 /sd-plugin
parente1ab55bcd4d4a300d5cfa72834bf320b551e1f21 (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.java58
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;
+ }
+ };
+ }
+}