more realistic \n\t typing in tests

This commit is contained in:
peter.gromov
2010-11-19 18:32:22 +03:00
parent f09d8956dc
commit 707a2c2d42
4 changed files with 62 additions and 36 deletions
@@ -21,7 +21,6 @@ import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.codeInsight.template.impl.TemplateSettings;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorAction;
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
@@ -37,16 +36,19 @@ public class ChooseItemAction extends EditorAction {
assert lookup != null;
lookup.finishLookup(Lookup.NORMAL_SELECT_CHAR);
}
}
public void update(Editor editor, Presentation presentation, DataContext dataContext){
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
if (lookup != null) {
lookup.refreshUi(); // to bring the list model up to date
presentation.setEnabled(lookup.isFocused() &&
!ChooseItemReplaceAction.hasTemplatePrefix(lookup, TemplateSettings.ENTER_CHAR));
} else {
presentation.setEnabled(false);
@Override
public boolean isEnabled(Editor editor, DataContext dataContext) {
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
if (lookup != null) {
if (ChooseItemReplaceAction.hasTemplatePrefix(lookup, TemplateSettings.ENTER_CHAR)) {
return false;
}
return lookup.isFocused();
}
return false;
}
}
}
@@ -16,13 +16,12 @@
package com.intellij.codeInsight.lookup.impl.actions;
import com.intellij.codeInsight.completion.CodeCompletionFeatures;
import com.intellij.codeInsight.lookup.Lookup;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.codeInsight.completion.CodeCompletionFeatures;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorAction;
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
@@ -39,10 +38,12 @@ public class ChooseItemCompleteStatementAction extends EditorAction {
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
lookup.finishLookup(Lookup.COMPLETE_STATEMENT_SELECT_CHAR);
}
@Override
public boolean isEnabled(Editor editor, DataContext dataContext) {
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
return lookup != null && lookup.isFocused();
}
}
public void update(Editor editor, Presentation presentation, DataContext dataContext){
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
presentation.setEnabled(lookup != null && lookup.isFocused());
}
}
@@ -26,7 +26,6 @@ import com.intellij.codeInsight.template.impl.TemplateImpl;
import com.intellij.codeInsight.template.impl.TemplateSettings;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorAction;
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
@@ -45,6 +44,26 @@ public class ChooseItemReplaceAction extends EditorAction {
assert lookup != null;
lookup.finishLookup(Lookup.REPLACE_SELECT_CHAR);
}
@Override
public boolean isEnabled(Editor editor, DataContext dataContext) {
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
if (lookup != null) {
if (hasTemplatePrefix(lookup, TemplateSettings.TAB_CHAR)) {
return false;
}
if (lookup.isFocused()) {
return true;
}
if (lookup.isCompletion()) {
lookup.refreshUi(); // to bring the list model up to date
return !lookup.getItems().isEmpty();
}
}
return false;
}
}
static boolean hasTemplatePrefix(LookupImpl lookup, char shortcutChar) {
@@ -60,14 +79,4 @@ public class ChooseItemReplaceAction extends EditorAction {
return template != null && shortcutChar == TemplateSettings.getInstance().getShortcutChar(template);
}
public void update(Editor editor, Presentation presentation, DataContext dataContext){
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
if (lookup != null) {
lookup.refreshUi(); // to bring the list model up to date
presentation.setEnabled((lookup.isFocused() || lookup.isCompletion() && !lookup.getItems().isEmpty()) &&
!hasTemplatePrefix(lookup, TemplateSettings.TAB_CHAR));
} else {
presentation.setEnabled(false);
}
}
}
@@ -55,6 +55,7 @@ import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.EditorFactory;
import com.intellij.openapi.editor.RangeMarker;
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.ex.DocumentEx;
import com.intellij.openapi.editor.ex.util.EditorUtil;
@@ -613,8 +614,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
return;
}
if (c == '\n') {
if (LookupManager.getActiveLookup(getEditor()) != null) {
performEditorAction(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM);
if (_performEditorAction(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM)) {
return;
}
@@ -622,8 +622,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
return;
}
if (c == '\t') {
if (LookupManager.getInstance(getProject()).getActiveLookup() != null) {
performEditorAction(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM_REPLACE);
if (_performEditorAction(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM_REPLACE)) {
return;
}
}
@@ -643,9 +642,19 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
@Override
public void performEditorAction(final String actionId) {
assertInitialized();
_performEditorAction(actionId);
}
private boolean _performEditorAction(String actionId) {
final DataContext dataContext = DataManager.getInstance().getDataContext();
EditorActionManager actionManager = EditorActionManager.getInstance();
actionManager.getActionHandler(actionId).execute(getEditor(), dataContext);
EditorActionHandler handler = actionManager.getActionHandler(actionId);
if (!handler.isEnabled(myEditor, dataContext)) {
return false;
}
handler.execute(getEditor(), dataContext);
return true;
}
@Override
@@ -872,10 +881,15 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
}
@Override
public void checkResult(String text, boolean stripTrailingSpaces) {
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
EditorUtil.fillVirtualSpaceUntilCaret(myEditor);
checkResult("TEXT", stripTrailingSpaces, SelectionAndCaretMarkupLoader.fromText(text, getProject()), myFile.getText());
public void checkResult(final String text, final boolean stripTrailingSpaces) {
new WriteCommandAction(getProject()) {
@Override
protected void run(Result result) throws Throwable {
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
EditorUtil.fillVirtualSpaceUntilCaret(myEditor);
checkResult("TEXT", stripTrailingSpaces, SelectionAndCaretMarkupLoader.fromText(text, getProject()), myFile.getText());
}
}.execute();
}
@Override