/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.usages;
import com.intellij.find.FindManager;
import com.intellij.find.findUsages.FindUsagesManager;
import com.intellij.find.findUsages.FindUsagesOptions;
import com.intellij.find.findUsages.JavaFindUsagesHandler;
import com.intellij.find.impl.FindManagerImpl;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class AdvancedSearcher {
@NotNull
public static List<PsiElement> search(@NotNull PsiElement elementAt) {
FindUsagesManager findUsagesManager = ((FindManagerImpl) FindManager.getInstance(elementAt.getProject())).getFindUsagesManager();
JavaFindUsagesHandler handler = (JavaFindUsagesHandler) findUsagesManager.getFindUsagesHandler(elementAt, false);
final List<PsiElement> elements = new ArrayList<>();
handler.processElementUsages(elementAt, new Processor<UsageInfo>() {
public boolean process(@NotNull UsageInfo usageInfo) {
PsiElement element = usageInfo.getElement();
if(!(element instanceof PsiFile)) {
elements.add(element);
}
return true;
}
}, new FindUsagesOptions(elementAt.getProject()));
return elements;
}
}