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.PhpToolboxProviderInterface;
import de.espend.idea.php.toolbox.navigation.dict.PhpToolboxDeclarationHandlerParameter;
import de.espend.idea.php.toolbox.provider.presentation.ProviderPresentation;
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
import fr.adrienbrault.idea.symfony2plugin.TwigHelper;
import icons.TwigIcons;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class TwigToolboxProvider implements PhpToolboxProviderInterface {
@NotNull
@Override
public Collection<LookupElement> getLookupElements(@NotNull PhpToolboxCompletionContributorParameter parameter) {
if(!Symfony2ProjectComponent.isEnabled(parameter.getProject())) {
return Collections.emptyList();
}
return TwigHelper.getAllTemplateLookupElements(parameter.getProject());
}
@NotNull
@Override
public Collection<PsiElement> getPsiTargets(@NotNull PhpToolboxDeclarationHandlerParameter parameter) {
if(!Symfony2ProjectComponent.isEnabled(parameter.getProject())) {
return Collections.emptyList();
}
Collection<PsiElement> psiElements = new HashSet<>();
Collections.addAll(psiElements, TwigHelper.getTemplatePsiElements(parameter.getProject(), parameter.getContents()));
return psiElements;
}
@NotNull
@Override
public String getName() {
return "twig.files";
}
@Nullable
@Override
public ProviderPresentation getPresentation() {
return new ProviderPresentation() {
@Nullable
@Override
public Icon getIcon() {
return TwigIcons.TwigFileIcon;
}
@Nullable
@Override
public String getDescription() {
return "Templates";
}
};
}
}