@Override protected void addCompletions( @NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { YAMLKeyValue yamlKeyValue = PsiTreeUtil.getParentOfType( completionParameters.getOriginalPosition(), YAMLKeyValue.class); if (yamlKeyValue != null) { PsiElement compoundValue = yamlKeyValue.getParent(); if (compoundValue instanceof YAMLCompoundValue) { // path and pattern are valid String pattern = YamlHelper.getYamlKeyValueAsString((YAMLCompoundValue) compoundValue, "path", false); if (pattern == null) { pattern = YamlHelper.getYamlKeyValueAsString( (YAMLCompoundValue) compoundValue, "pattern", false); } if (pattern != null) { Matcher matcher = Pattern.compile("\\{(\\w+)}").matcher(pattern); while (matcher.find()) { completionResultSet.addElement(LookupElementBuilder.create(matcher.group(1))); } } } } }
@Override protected void addCompletions( @NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement position = completionParameters.getPosition(); if (!Symfony2ProjectComponent.isEnabled(position)) { return; } YAMLCompoundValue yamlCompoundValue = PsiTreeUtil.getParentOfType(position, YAMLCompoundValue.class); if (yamlCompoundValue == null) { return; } String className = YamlHelper.getYamlKeyValueAsString(yamlCompoundValue, "targetEntity", false); if (className == null) { return; } PhpClass phpClass = PhpElementsUtil.getClass(position.getProject(), className); if (phpClass == null) { return; } for (DoctrineModelField field : EntityHelper.getModelFields(phpClass)) { if (field.getRelation() != null) { completionResultSet.addElement(new DoctrineModelFieldLookupElement(field)); } } }
@Override protected void addCompletions( @NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { if (!Symfony2ProjectComponent.isEnabled(completionParameters.getPosition())) { return; } PsiElement psiElement = completionParameters.getPosition(); YAMLCompoundValue yamlCompoundValue = PsiTreeUtil.getParentOfType(psiElement, YAMLCompoundValue.class); if (yamlCompoundValue == null) { return; } yamlCompoundValue = PsiTreeUtil.getParentOfType(yamlCompoundValue, YAMLCompoundValue.class); if (yamlCompoundValue == null) { return; } String value = YamlHelper.getYamlKeyValueAsString(yamlCompoundValue, "class", true); if (value != null) { PhpClass phpClass = ServiceUtil.getResolvedClassDefinition(psiElement.getProject(), value); if (phpClass != null) { FormUtil.attachFormAliasesCompletions(phpClass, completionResultSet); } } }
protected PsiElement[] parameterGoToDeclaration(PsiElement psiElement, String psiParameterName) { if (!YamlHelper.isValidParameterName(psiParameterName)) { return new PsiElement[0]; } Collection<PsiElement> targets = ServiceUtil.getServiceClassTargets(psiElement.getProject(), psiParameterName); return targets.toArray(new PsiElement[targets.size()]); }
public void addCompletions( @NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) { if (!YamlHelper.isRoutingFile(parameters.getOriginalFile())) { return; } super.addCompletions(parameters, context, resultSet); }
protected PsiElement[] serviceGoToDeclaration(PsiElement psiElement, String serviceId) { serviceId = YamlHelper.trimSpecialSyntaxServiceName(serviceId).toLowerCase(); String serviceClass = ContainerCollectionResolver.resolveService(psiElement.getProject(), serviceId); if (serviceClass != null) { PsiElement[] targetElements = PhpElementsUtil.getClassInterfacePsiElements(psiElement.getProject(), serviceClass); if (targetElements.length > 0) { return targetElements; } } // get container target on indexes List<PsiElement> possibleServiceTargets = ServiceIndexUtil.findServiceDefinitions(psiElement.getProject(), serviceId); return possibleServiceTargets.toArray(new PsiElement[possibleServiceTargets.size()]); }
@Override protected void addCompletions( @NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement position = completionParameters.getPosition(); if (!Symfony2ProjectComponent.isEnabled(position)) { return; } PsiElement psiElement = PsiTreeUtil.findFirstParent( position, new Condition<PsiElement>() { @Override public boolean value(PsiElement psiElement) { if (psiElement instanceof YAMLKeyValue) { String s = ((YAMLKeyValue) psiElement).getKeyText().toLowerCase(); if ("joinTable".equalsIgnoreCase(s)) { return true; } } return false; } }); if (psiElement == null) { return; } PsiElement yamlCompoundValue = psiElement.getParent(); if (!(yamlCompoundValue instanceof YAMLCompoundValue)) { return; } String className = YamlHelper.getYamlKeyValueAsString( (YAMLCompoundValue) yamlCompoundValue, "targetEntity", false); if (className == null) { return; } PhpClass phpClass = ServiceUtil.getResolvedClassDefinition(psiElement.getProject(), className); if (phpClass == null) { return; } for (DoctrineModelField field : EntityHelper.getModelFields(phpClass)) { if (field.getRelation() == null) { String columnName = field.getColumn(); if (columnName == null) { completionResultSet.addElement( LookupElementBuilder.create(field.getName()).withIcon(Symfony2Icons.DOCTRINE)); } else { completionResultSet.addElement( LookupElementBuilder.create(columnName) .withTypeText(field.getName(), false) .withIcon(Symfony2Icons.DOCTRINE)); } } } }