package fr.adrienbrault.idea.symfony2plugin.navigation; import com.intellij.navigation.ChooseByNameContributor; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent; import fr.adrienbrault.idea.symfony2plugin.TwigHelper; import icons.TwigIcons; import org.jetbrains.annotations.NotNull; import java.util.Map; import java.util.Set; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class TemplateFileContributor implements ChooseByNameContributor { @NotNull @Override public String[] getNames(Project project, boolean b) { if(!Symfony2ProjectComponent.isEnabled(project)) { return new String[0]; } Map<String, VirtualFile> psiElements = TwigHelper.getTwigFilesByName(project); Set<String> sets = psiElements.keySet(); return sets.toArray(new String[sets.size()]); } @NotNull @Override public NavigationItem[] getItemsByName(String templateName, String s2, Project project, boolean b) { if(!Symfony2ProjectComponent.isEnabled(project)) { return new NavigationItem[0]; } PsiFile psiFile = TwigHelper.getTemplateFileByName(project, templateName); if(psiFile == null) { return new NavigationItem[0]; } return new NavigationItemEx[]{ new NavigationItemEx(psiFile, templateName, TwigIcons.TwigFileIcon, "Template", false) }; } }