dumb-aware goto contributors (IDEADEV-39837)

This commit is contained in:
Peter Gromov
2009-08-21 18:58:36 +04:00
parent ba8949ce76
commit 6a4135698f
3 changed files with 14 additions and 4 deletions

View File

@@ -37,6 +37,8 @@ import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.DumbAware;
import com.intellij.util.ArrayUtil;
import javax.swing.*;
@@ -89,10 +91,16 @@ public abstract class ContributorsBasedGotoByModel implements ChooseByNameModel
*/
public Object[] getElementsByName(String name, boolean checkBoxState, final String pattern) {
List<NavigationItem> items = null;
final boolean dumb = DumbService.getInstance(myProject).isDumb();
for (ChooseByNameContributor contributor : myContributors) {
try {
for(NavigationItem item : contributor.getItemsByName(name, pattern, myProject, checkBoxState)) {
if(acceptItem(item)) {
if (dumb && !(contributor instanceof DumbAware)) {
continue;
}
for (NavigationItem item : contributor.getItemsByName(name, pattern, myProject, checkBoxState)) {
if (acceptItem(item)) {
if (items == null) {
items = new ArrayList<NavigationItem>(2);
}

View File

@@ -33,11 +33,12 @@ package com.intellij.ide.util.gotoByName;
import com.intellij.navigation.ChooseByNameContributor;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.FilenameIndex;
import com.intellij.psi.search.ProjectScope;
public class DefaultFileNavigationContributor implements ChooseByNameContributor {
public class DefaultFileNavigationContributor implements ChooseByNameContributor, DumbAware {
public String[] getNames(Project project, boolean includeNonProjectItems) {
return FilenameIndex.getAllFilenames(project);

View File

@@ -35,6 +35,7 @@ import com.intellij.navigation.ChooseByNameContributor;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.vfs.VirtualFile;
@@ -44,7 +45,7 @@ import com.intellij.util.ArrayUtil;
import java.util.ArrayList;
public class ProjectBaseDirNavigationContributor implements ChooseByNameContributor {
public class ProjectBaseDirNavigationContributor implements ChooseByNameContributor, DumbAware {
public String[] getNames(Project project, boolean includeNonProjectItems) {
final VirtualFile baseDir = project.getBaseDir();