public static FilterPattern hasLanguageLevel(@NotNull final Processor<LanguageLevel> processor) { return new FilterPattern(new ElementFilter() { @Override public boolean isAcceptable(Object element, @Nullable PsiElement context) { if (element instanceof PsiElement) { return processor.process(LanguageLevel.forElement((PsiElement)element)); } return false; } @Override public boolean isClassAcceptable(Class hintClass) { return true; } }); }
public static void registerXmlAttributeValueReferenceProvider(PsiReferenceRegistrar registrar, @Nullable @NonNls String[] attributeNames, @Nullable ElementFilter elementFilter, boolean caseSensitive, @NotNull PsiReferenceProvider provider, double priority) { if (attributeNames == null) { registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().and(new FilterPattern(elementFilter)), provider, priority); return; } final StringPattern namePattern = caseSensitive ? StandardPatterns.string().oneOf(attributeNames) : StandardPatterns.string().oneOfIgnoreCase(attributeNames); registrar .registerReferenceProvider(XmlPatterns.xmlAttributeValue().withLocalName(namePattern).and(new FilterPattern(elementFilter)), provider, priority); }
public static void registerXmlTagReferenceProvider(PsiReferenceRegistrar registrar, @NonNls String[] names, @Nullable ElementFilter elementFilter, boolean caseSensitive, @NotNull PsiReferenceProvider provider) { if (names == null) { registrar.registerReferenceProvider(XmlPatterns.xmlTag().and(new FilterPattern(elementFilter)), provider, PsiReferenceRegistrar.DEFAULT_PRIORITY); return; } final StringPattern namePattern = caseSensitive ? StandardPatterns.string().oneOf(names) : StandardPatterns.string().oneOfIgnoreCase(names); registrar.registerReferenceProvider(XmlPatterns.xmlTag().withLocalName(namePattern).and(new FilterPattern(elementFilter)), provider, PsiReferenceRegistrar.DEFAULT_PRIORITY); }
public void registerReferenceProviders(@NotNull final PsiReferenceRegistrar registrar) { final JavaClassListReferenceProvider classListProvider = new JavaClassListReferenceProvider(); registrar.registerReferenceProvider(xmlAttributeValue(), classListProvider, PsiReferenceRegistrar.LOWER_PRIORITY); registrar.registerReferenceProvider(xmlTag(), classListProvider, PsiReferenceRegistrar.LOWER_PRIORITY); final PsiReferenceProvider filePathReferenceProvider = new FilePathReferenceProvider(); registrar.registerReferenceProvider(PlatformPatterns.psiElement(PsiLiteralExpression.class).and(new FilterPattern(new ElementFilter() { public boolean isAcceptable(Object element, PsiElement context) { PsiLiteralExpression literalExpression = (PsiLiteralExpression) context; final Map<String, Object> annotationParams = new HashMap<String, Object>(); annotationParams.put(AnnotationUtil.PROPERTY_KEY_RESOURCE_BUNDLE_PARAMETER, null); return !JavaI18nUtil.mustBePropertyKey(context.getProject(), literalExpression, annotationParams); } public boolean isClassAcceptable(Class hintClass) { return true; } })), filePathReferenceProvider); registrar.registerReferenceProvider(PlatformPatterns.psiElement(PsiDocToken.class), CommentsReferenceContributor.COMMENTS_REFERENCE_PROVIDER_TYPE.getProvider()); }
@NotNull private ElementPattern isPossibleHere(@NotNull final String keyword) { return new FilterPattern(new ElementFilter() { public boolean isAcceptable(final Object element, final PsiElement context) { final CompletionParameters parameters = getCompletionParameters(element); if (parameters == null) return false; final PsiElement dummyElement = createDummyElement(parameters, keyword, false); return dummyElement != null && isCorrect(dummyElement); } public boolean isClassAcceptable(@NotNull final Class hintClass) { return true; } }); }
public void registerReferenceProviders(final PsiReferenceRegistrar registrar) { final JavaClassListReferenceProvider classListProvider = new JavaClassListReferenceProvider(); registrar.registerReferenceProvider(xmlAttributeValue(), classListProvider, PsiReferenceRegistrar.LOWER_PRIORITY); registrar.registerReferenceProvider(xmlTag(), classListProvider, PsiReferenceRegistrar.LOWER_PRIORITY); final PsiReferenceProvider filePathReferenceProvider = new FilePathReferenceProvider(); registrar.registerReferenceProvider(PlatformPatterns.psiElement(PsiLiteralExpression.class).and(new FilterPattern(new ElementFilter() { public boolean isAcceptable(Object element, PsiElement context) { PsiLiteralExpression literalExpression = (PsiLiteralExpression) context; final Map<String, Object> annotationParams = new HashMap<String, Object>(); annotationParams.put(AnnotationUtil.PROPERTY_KEY_RESOURCE_BUNDLE_PARAMETER, null); return !JavaI18nUtil.mustBePropertyKey(context.getProject(), literalExpression, annotationParams); } public boolean isClassAcceptable(Class hintClass) { return true; } })), filePathReferenceProvider); }
private static PsiElementPattern.Capture<JSLiteralExpression> literalInProperty(final String propertyName) { return PlatformPatterns.psiElement(JSLiteralExpression.class).and(new FilterPattern(new ElementFilter() { @Override public boolean isAcceptable(Object element, @Nullable PsiElement context) { if (element instanceof JSLiteralExpression) { final JSLiteralExpression literal = (JSLiteralExpression)element; if (literal.isQuotedLiteral()) { final PsiElement parent = literal.getParent(); if (parent instanceof JSProperty && propertyName.equals(((JSProperty)parent).getName())) { return EmberIndexUtil.hasEmberJS(literal.getProject()); } } } return false; } @Override public boolean isClassAcceptable(Class hintClass) { return true; } })); }
public static void registerXmlAttributeValueReferenceProvider(PsiReferenceRegistrar registrar, @Nullable @NonNls String[] attributeNames, @Nullable ElementFilter elementFilter, boolean caseSensitive, @NotNull PsiReferenceProvider provider, double priority) { if(attributeNames == null) { registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().and(new FilterPattern(elementFilter)), provider, priority); return; } final StringPattern namePattern = caseSensitive ? StandardPatterns.string().oneOf(attributeNames) : StandardPatterns.string().oneOfIgnoreCase(attributeNames); registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().withLocalName(namePattern).and(new FilterPattern(elementFilter)), provider, priority); }
public static void registerXmlTagReferenceProvider(PsiReferenceRegistrar registrar, @NonNls String[] names, @Nullable ElementFilter elementFilter, boolean caseSensitive, @NotNull PsiReferenceProvider provider) { if(names == null) { registrar.registerReferenceProvider(XmlPatterns.xmlTag().and(new FilterPattern(elementFilter)), provider, PsiReferenceRegistrar.DEFAULT_PRIORITY); return; } final StringPattern namePattern = caseSensitive ? StandardPatterns.string().oneOf(names) : StandardPatterns.string().oneOfIgnoreCase(names); registrar.registerReferenceProvider(XmlPatterns.xmlTag().withLocalName(namePattern).and(new FilterPattern(elementFilter)), provider, PsiReferenceRegistrar.DEFAULT_PRIORITY); }
/** * @deprecated {@see com.intellij.psi.PsiReferenceContributor */ public void registerReferenceProvider(@Nullable ElementFilter elementFilter, @Nonnull Class scope, @Nonnull PsiReferenceProvider provider, double priority) { PsiElementPattern.Capture<PsiElement> capture = PlatformPatterns.psiElement(scope); registerReferenceProvider(capture.and(new FilterPattern(elementFilter)), provider, priority); }
@NotNull @Override protected ElementPattern<PsiElement> compute() { return psiElement().andNot(psiElement().afterLeaf("@", ".")). andOr(psiElement().and(new FilterPattern(CLASS_BODY.getValue())). andOr(new FilterPattern(END_OF_BLOCK.getValue()), psiElement().afterLeaf(or(psiElement().inside(PsiModifierList.class), psiElement().withElementType(JavaTokenType.GT) .inside(PsiTypeParameterList.class)))), psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiMember.class), psiElement() .withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiClassLevelDeclarationStatement.class)); }
private static FilterPattern rightAfterElement(Class<? extends PsiElement> aClass) { return rightAfterElement(psiElement(aClass)); }
private static PsiElementPattern.Capture<PsiLiteralExpression> getElementPattern(String annotation) { return PlatformPatterns.psiElement(PsiLiteralExpression.class).and(new FilterPattern(new TestAnnotationFilter(annotation))); }