From 707a2c2d4218aa2acf655184430ebdc9d9054ccc Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Thu, 18 Nov 2010 21:09:16 +0300 Subject: [PATCH] more realistic \n\t typing in tests --- .../lookup/impl/actions/ChooseItemAction.java | 22 +++++++------ .../ChooseItemCompleteStatementAction.java | 13 ++++---- .../impl/actions/ChooseItemReplaceAction.java | 31 +++++++++++------- .../impl/CodeInsightTestFixtureImpl.java | 32 +++++++++++++------ 4 files changed, 62 insertions(+), 36 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java index ecaf3f02a204..a963a8fc9696 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java @@ -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; } } + } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemCompleteStatementAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemCompleteStatementAction.java index cc61232d1b27..2c669ea0cd2b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemCompleteStatementAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemCompleteStatementAction.java @@ -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()); - } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java index 99b5f428927b..43efa2b38b8c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java @@ -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); - } - } } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 00aa3514408c..96a5d4f03457 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -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