package org.jetbrains.plugins.clojure.gotoclass;
import com.intellij.navigation.ChooseByNameContributor;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.project.Project;
import com.intellij.psi.stubs.StubIndex;
import com.intellij.psi.search.GlobalSearchScope;
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;
import org.jetbrains.plugins.clojure.psi.stubs.index.ClDefNameIndex;
/**
* @author ilyas
*/
public class ClojureGoToSymbolContributor implements ChooseByNameContributor {
public String[] getNames(Project project, boolean includeNonProjectItems) {
Set<String> symbols = new HashSet<String>();
symbols.addAll(StubIndex.getInstance().getAllKeys(ClDefNameIndex.KEY, project));
return symbols.toArray(new String[symbols.size()]);
}
public NavigationItem[] getItemsByName(String name, String pattern, Project project, boolean includeNonProjectItems) {
final GlobalSearchScope scope = includeNonProjectItems ? null : GlobalSearchScope.projectScope(project);
List<NavigationItem> symbols = new ArrayList<NavigationItem>();
symbols.addAll(StubIndex.getInstance().get(ClDefNameIndex.KEY, name, project, scope));
return symbols.toArray(new NavigationItem[symbols.size()]);
}
}