diff options
Diffstat (limited to 'sd-plugin/src/main/java/org/intellij/sdk/language/psi')
11 files changed, 65 insertions, 11 deletions
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java index 32c943909a2..25ef64b8936 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java @@ -5,6 +5,10 @@ import com.intellij.navigation.NavigationItem; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; +/** + * This interface represents a declaration in the SD language. + * @author shahariel + */ public interface SdDeclaration extends PsiElement, PsiNamedElement, NavigationItem { String getName(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java index f1c1cbe560a..5ea5968f0bb 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java @@ -1,12 +1,18 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package org.intellij.sdk.language.psi; +/** + * This Enum describes the different declarations' types and their names. + * @author shahariel + */ public enum SdDeclarationType { DOCUMENT("Document"), STRUCT("Struct"), + ANNOTATION("Annotation"), SCHEMA_FIELD("Field (in Schema)"), DOCUMENT_FIELD("Field (in Document)"), STRUCT_FIELD("Struct-Field"), + ANNOTATION_FIELD("Field (in Annotation)"), DOCUMENT_STRUCT_FIELD("Field (in Struct)"), IMPORTED_FIELD("Imported Field"), DOCUMENT_SUMMARY("Document-Summary"), diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java index 85bac80327a..3801069d408 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java @@ -9,13 +9,16 @@ import org.intellij.sdk.language.psi.SdDeclaration; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - +/** + * This class is used for the extension (in plugin.xml), to enable "find Usages" window take the element description from + * here. Used only for the "target" element. + * @author shahariel + */ public class SdElementDescriptionProvider implements ElementDescriptionProvider { /** * Controls the headline of the element in the "Find Usages" window * @param psiElement the element to describe - * @param elementDescriptionLocation * @return a string with the description to write in the headline */ @Nullable diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java index 5d9647dd0b3..9cb9690cd5b 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java @@ -7,6 +7,10 @@ import com.intellij.psi.PsiFileFactory; import com.intellij.psi.util.PsiTreeUtil; import org.intellij.sdk.language.SdFileType; +/** + * This class is a factory of psi elements in the SD PSI tree. + * @author shahariel + */ public class SdElementFactory { private static final String GENERAL_FILE_TEXT = "search {document %s {} rank-profile %s {}}"; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java index 7306f5568f6..a091d444d8e 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java @@ -6,6 +6,10 @@ import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +/** + * This class represent a SdElementType. + * @author shahariel + */ public class SdElementType extends IElementType { public SdElementType(@NotNull @NonNls String debugName) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java index 0f736fa96b8..c044bdeeddd 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java @@ -8,6 +8,10 @@ import org.intellij.sdk.language.SdFileType; import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NotNull; +/** + * This class represent an SD file. + * @author shahariel + */ public class SdFile extends PsiFileBase { public SdFile(@NotNull FileViewProvider viewProvider) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java index c199f1c3a7d..c88e3e593bb 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java @@ -5,6 +5,10 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import org.jetbrains.annotations.NotNull; +/** + * This interface represents an identifier in the SD language (regular identifiers and identifiers with dash). + * @author shahariel + */ public interface SdIdentifier extends PsiElement { String getName(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java index 9b7b6d03934..bd74a87b551 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java @@ -3,6 +3,11 @@ package org.intellij.sdk.language.psi; import com.intellij.psi.PsiNameIdentifierOwner; +/** + * This interface is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a + * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more. + * @author shahariel + */ public interface SdNamedElement extends PsiNameIdentifierOwner { } diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java index 28bfcac350d..98e7494389d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java @@ -6,6 +6,10 @@ import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +/** + * This class represent a SdTokenType. + * @author shahariel + */ public class SdTokenType extends IElementType { public SdTokenType(@NotNull @NonNls String debugName) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java index 58f54255c7d..2901a642904 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java @@ -6,6 +6,11 @@ import com.intellij.lang.ASTNode; import org.intellij.sdk.language.psi.SdNamedElement; import org.jetbrains.annotations.NotNull; +/** + * This abstract class is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a + * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more. + * @author shahariel + */ public abstract class SdNamedElementImpl extends ASTWrapperPsiElement implements SdNamedElement { public SdNamedElementImpl(@NotNull ASTNode node) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java index 4fe6f82cad8..bbe140070fe 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java @@ -6,16 +6,16 @@ import com.intellij.lang.ASTNode; import com.intellij.navigation.ItemPresentation; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.util.PsiTreeUtil; import org.intellij.sdk.language.SdIcons; import org.intellij.sdk.language.SdReference; import org.intellij.sdk.language.SdUtil; -import org.intellij.sdk.language.hierarchy.SdHierarchyUtil; +import org.intellij.sdk.language.psi.SdAnnotationFieldDefinition; import org.intellij.sdk.language.psi.SdArgumentDefinition; import org.intellij.sdk.language.psi.SdDeclaration; import org.intellij.sdk.language.psi.SdDeclarationType; +import org.intellij.sdk.language.psi.SdDocumentAnnotationDefinition; import org.intellij.sdk.language.psi.SdDocumentDefinition; import org.intellij.sdk.language.psi.SdDocumentFieldDefinition; import org.intellij.sdk.language.psi.SdDocumentStructDefinition; @@ -32,6 +32,7 @@ import org.intellij.sdk.language.psi.SdImportFieldDefinition; import org.intellij.sdk.language.psi.SdItemRawScoreDefinition; import org.intellij.sdk.language.psi.SdQueryDefinition; import org.intellij.sdk.language.psi.SdRankProfileDefinition; +import org.intellij.sdk.language.psi.SdSchemaAnnotationDefinition; import org.intellij.sdk.language.psi.SdSchemaFieldDefinition; import org.intellij.sdk.language.psi.SdStructFieldDefinition; import org.intellij.sdk.language.psi.SdSummaryDefinition; @@ -42,8 +43,9 @@ import org.jetbrains.annotations.Nullable; import javax.swing.Icon; /** - * I this class there are implementations of methods from rules in the .bnf file. While generating the psi files + * In this class there are implementations of methods of rules in the .bnf file. While generating the psi files * (classes and interfaces) the implementations would be taken from here. + * @author shahariel */ public class SdPsiImplUtil { @@ -69,12 +71,17 @@ public class SdPsiImplUtil { return SdDeclarationType.DOCUMENT; } else if (declaration instanceof SdDocumentStructDefinition) { return SdDeclarationType.STRUCT; + } else if (declaration instanceof SdSchemaAnnotationDefinition || + declaration instanceof SdDocumentAnnotationDefinition) { + return SdDeclarationType.ANNOTATION; } else if (declaration instanceof SdDocumentStructFieldDefinition) { return SdDeclarationType.DOCUMENT_STRUCT_FIELD; } else if (declaration instanceof SdDocumentFieldDefinition) { return SdDeclarationType.DOCUMENT_FIELD; } else if (declaration instanceof SdStructFieldDefinition) { return SdDeclarationType.STRUCT_FIELD; + } else if (declaration instanceof SdAnnotationFieldDefinition) { + return SdDeclarationType.ANNOTATION_FIELD; } else if (declaration instanceof SdQueryDefinition) { return SdDeclarationType.QUERY; } else if (declaration instanceof SdItemRawScoreDefinition) { @@ -120,7 +127,7 @@ public class SdPsiImplUtil { // ################################### // // ##### getName implementations ##### // // ################################### // - + @NotNull public static String getName(SdIdentifier element) { if (element != null) { @@ -137,7 +144,7 @@ public class SdPsiImplUtil { if (declaration instanceof SdImportFieldDefinition) { ASTNode asNode = declaration.getNode().findChildByType(SdTypes.AS); node = declaration.getNode().findChildByType(SdTypes.IDENTIFIER_VAL, asNode); - } else if (declaration instanceof SdRankProfileDefinition || declaration instanceof SdDocumentSummaryDefinition + } else if (declaration instanceof SdRankProfileDefinition || declaration instanceof SdDocumentSummaryDefinition || declaration instanceof SdQueryDefinition) { node = declaration.getNode().findChildByType(SdTypes.IDENTIFIER_WITH_DASH_VAL); } else { @@ -254,7 +261,7 @@ public class SdPsiImplUtil { public String getPresentableText() { if (element instanceof SdFunctionDefinition) { return SdUtil.createFunctionDescription((SdFunctionDefinition) element); - } + } SdRankProfileDefinition rankProfileParent = PsiTreeUtil.getParentOfType(element, SdRankProfileDefinition.class); if (rankProfileParent != null) { if (element instanceof SdQueryDefinition || element instanceof SdItemRawScoreDefinition) { @@ -277,7 +284,8 @@ public class SdPsiImplUtil { if (element instanceof SdFile) { return SdIcons.FILE; } else if (element instanceof SdSchemaFieldDefinition || element instanceof SdDocumentFieldDefinition || - element instanceof SdQueryDefinition || element instanceof SdItemRawScoreDefinition) { + element instanceof SdAnnotationFieldDefinition || element instanceof SdQueryDefinition || + element instanceof SdItemRawScoreDefinition) { return AllIcons.Nodes.Field; } else if (element instanceof SdStructFieldDefinition || element instanceof SdDocumentStructFieldDefinition) { @@ -296,6 +304,9 @@ public class SdPsiImplUtil { return SdIcons.DOCUMENT_SUMMARY; } else if (element instanceof SdDocumentDefinition) { return SdIcons.DOCUMENT; + } else if (element instanceof SdSchemaAnnotationDefinition || + element instanceof SdDocumentAnnotationDefinition) { + return AllIcons.Nodes.ObjectTypeAttribute; } else { return null; @@ -306,7 +317,7 @@ public class SdPsiImplUtil { public static ItemPresentation getPresentation(final SdSummaryDefinition element) { return new ItemPresentation() { - + @Override public String getPresentableText() { return element.getName(); @@ -327,7 +338,7 @@ public class SdPsiImplUtil { public static ItemPresentation getPresentation(final SdFirstPhaseDefinition element) { return new ItemPresentation() { - + @Override public String getPresentableText() { SdRankProfileDefinition rankProfile = PsiTreeUtil.getParentOfType(element, SdRankProfileDefinition.class); |