package com.intellij.javascript.flex.mxml;
import com.intellij.lang.javascript.flex.XmlBackedJSClassImpl;
import com.intellij.lang.javascript.navigation.JavaScriptClassContributor;
import com.intellij.navigation.ChooseByNameContributor;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.project.Project;
import com.intellij.util.ArrayUtil;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
public class FlexXmlBackedSymbolContributor implements ChooseByNameContributor {
@NotNull
public String[] getNames(Project project, boolean includeNonProjectItems) {
Collection<String> result = new THashSet<>();
result.addAll(FlexXmlBackedMembersIndex.getSymbolNames(project));
JavaScriptClassContributor.collectAllMxmlClassesNames(project, result);
return ArrayUtil.toStringArray(result);
}
@NotNull
public NavigationItem[] getItemsByName(String name, final String pattern, Project project, boolean includeNonProjectItems) {
Collection<NavigationItem> result = new THashSet<>();
result.addAll(FlexXmlBackedMembersIndex.getItemsByName(name, project));
for (NavigationItem item : JavaScriptClassContributor.getItemsByNameStatic(name, project, includeNonProjectItems)) {
if (item instanceof XmlBackedJSClassImpl) {
result.add(item);
}
}
return result.toArray(new NavigationItem[result.size()]);
}
}