package fr.adrienbrault.idea.symfony2plugin.external.toolbox.provider;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.psi.PsiElement;
import de.espend.idea.php.toolbox.completion.dict.PhpToolboxCompletionContributorParameter;
import de.espend.idea.php.toolbox.extension.PhpToolboxProviderAbstract;
import de.espend.idea.php.toolbox.navigation.dict.PhpToolboxDeclarationHandlerParameter;
import de.espend.idea.php.toolbox.provider.presentation.ProviderPresentation;
import fr.adrienbrault.idea.symfony2plugin.Symfony2Icons;
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
import fr.adrienbrault.idea.symfony2plugin.config.component.ParameterLookupElement;
import fr.adrienbrault.idea.symfony2plugin.dic.ContainerParameter;
import fr.adrienbrault.idea.symfony2plugin.stubs.ContainerCollectionResolver;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.*;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class ServiceParameterToolboxProvider extends PhpToolboxProviderAbstract {
@NotNull
@Override
public Collection<LookupElement> getLookupElements(@NotNull PhpToolboxCompletionContributorParameter parameter) {
if(!Symfony2ProjectComponent.isEnabled(parameter.getProject())) {
return Collections.emptyList();
}
List<LookupElement> results = new ArrayList<>();
for(Map.Entry<String, ContainerParameter> entry: ContainerCollectionResolver.getParameters(parameter.getProject()).entrySet()) {
results.add(new ParameterLookupElement(entry.getValue()));
}
return results;
}
@NotNull
@Override
public Collection<PsiElement> getPsiTargets(@NotNull PhpToolboxDeclarationHandlerParameter parameter) {
if(!Symfony2ProjectComponent.isEnabled(parameter.getProject())) {
return Collections.emptyList();
}
return Collections.emptyList();
}
@NotNull
@Override
public String getName() {
return "symfony.parameters";
}
@Nullable
@Override
public ProviderPresentation getPresentation() {
return new ProviderPresentation() {
@Nullable
@Override
public Icon getIcon() {
return Symfony2Icons.PARAMETER;
}
@Nullable
@Override
public String getDescription() {
return "Container parameter";
}
};
}
}