CompletionContributorForTextField must work in Dumb mode.

This commit is contained in:
Sergey Evdokimov
2011-10-14 16:57:18 +04:00
parent 590aafc160
commit 4aea6df2a0
4 changed files with 20 additions and 7 deletions
@@ -3,25 +3,26 @@ package com.intellij.util;
import com.intellij.codeInsight.completion.CompletionContributor;
import com.intellij.codeInsight.completion.CompletionParameters;
import com.intellij.codeInsight.completion.CompletionResultSet;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.DumbService;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiPlainTextFile;
/**
* @author sergey.evdokimov
*/
public class CompletionContributorForTextField extends CompletionContributor {
public class CompletionContributorForTextField extends CompletionContributor implements DumbAware {
@Override
public void fillCompletionVariants(CompletionParameters parameters, CompletionResultSet result) {
PsiFile file = parameters.getOriginalFile();
if (!(file instanceof PsiPlainTextFile)) return;
ApplicationManager.getApplication().assertReadAccessAllowed();
TextFieldCompletionProvider field = file.getUserData(TextFieldCompletionProvider.COMPLETING_TEXT_FIELD_KEY);
if (field == null) return;
if (!(field instanceof DumbAware) && DumbService.isDumb(file.getProject())) return;
String text = file.getText();
int offset = Math.min(text.length(), parameters.getOffset());
@@ -0,0 +1,10 @@
package com.intellij.util;
import com.intellij.openapi.project.DumbAware;
/**
* @author sergey.evdokimov
*/
public abstract class TextFieldCompletionProviderDumbAware extends TextFieldCompletionProvider implements DumbAware {
}
@@ -35,6 +35,7 @@ import com.intellij.ui.EditorTextField;
import com.intellij.ui.EditorTextFieldProvider;
import com.intellij.util.Consumer;
import com.intellij.util.TextFieldCompletionProvider;
import com.intellij.util.TextFieldCompletionProviderDumbAware;
import git4idea.history.NewGitUsersComponent;
import org.jetbrains.annotations.NotNull;
@@ -151,7 +152,7 @@ public class UsersFilterAction extends BasePopupAction {
myEditorField.setOneLineMode(false);
panel.add(myEditorField, BorderLayout.CENTER);
myTextFieldCompletionProvider = new TextFieldCompletionProvider() {
myTextFieldCompletionProvider = new TextFieldCompletionProviderDumbAware() {
@NotNull
@Override
protected String getPrefix(@NotNull String currentTextPrefix) {
@@ -28,6 +28,7 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.*;
import com.intellij.util.ArrayUtil;
import com.intellij.util.TextFieldCompletionProvider;
import com.intellij.util.TextFieldCompletionProviderDumbAware;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.mvc.util.ModuleCellRenderer;
import org.jetbrains.plugins.groovy.mvc.util.MvcTargetDialogCompletionUtils;
@@ -148,7 +149,7 @@ public class MvcRunTargetDialog extends DialogWrapper {
myFakePanel = new JPanel(new BorderLayout());
myFakePanel.add(myTargetField, BorderLayout.CENTER);
TextFieldCompletionProvider vmOptionCompletionProvider = new TextFieldCompletionProvider() {
TextFieldCompletionProvider vmOptionCompletionProvider = new TextFieldCompletionProviderDumbAware() {
@NotNull
@Override
protected String getPrefix(@NotNull String currentTextPrefix) {
@@ -164,7 +165,7 @@ public class MvcRunTargetDialog extends DialogWrapper {
};
myVmOptionsField = vmOptionCompletionProvider.createEditor(myModule.getProject());
new TextFieldCompletionProvider() {
new TextFieldCompletionProviderDumbAware() {
@NotNull
@Override