diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java
index 729f06204631..9e292e653b7c 100644
--- a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java
+++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java
@@ -20,11 +20,14 @@ import com.intellij.codeInsight.completion.CompletionMemory;
import com.intellij.codeInsight.completion.JavaMethodCallElement;
import com.intellij.codeInsight.hint.ParameterInfoController;
import com.intellij.codeInsight.hints.ParameterHintsPass;
-import com.intellij.openapi.actionSystem.*;
+import com.intellij.openapi.actionSystem.CommonDataKeys;
+import com.intellij.openapi.actionSystem.DataContext;
+import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.editor.Caret;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
+import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Key;
@@ -181,47 +184,53 @@ abstract class JavaMethodOverloadSwitchHandler extends EditorActionHandler {
}
public static class UpInEditor extends UpDownInEditor {
- public UpInEditor() {
- super(true);
+ public UpInEditor(EditorActionHandler originalHandler) {
+ super(originalHandler, true);
}
}
public static class DownInEditor extends UpDownInEditor {
- public DownInEditor() {
- super(false);
+ public DownInEditor(EditorActionHandler originalHandler) {
+ super(originalHandler, false);
}
}
- private static abstract class UpDownInEditor extends AnAction {
+ private static abstract class UpDownInEditor extends EditorActionHandler {
+ private final EditorActionHandler myOriginalHandler;
private final boolean myUp;
- private UpDownInEditor(boolean up) {
+ private UpDownInEditor(EditorActionHandler originalHandler, boolean up) {
+ myOriginalHandler = originalHandler;
myUp = up;
}
@Override
- public void update(AnActionEvent e) {
- Editor editor = e.getData(CommonDataKeys.EDITOR);
- e.getPresentation().setEnabled(CodeInsightSettings.getInstance().SHOW_PARAMETER_NAME_HINTS_ON_COMPLETION && editor != null &&
- ParameterInfoController.existsWithVisibleHintForEditor(editor, false));
+ protected boolean isEnabledForCaret(@NotNull Editor editor, @NotNull Caret caret, DataContext dataContext) {
+ return myOriginalHandler.isEnabled(editor, caret, dataContext) ||
+ isEnabled(editor);
+ }
+
+ private static boolean isEnabled(@NotNull Editor editor) {
+ return CodeInsightSettings.getInstance().SHOW_PARAMETER_NAME_HINTS_ON_COMPLETION &&
+ ParameterInfoController.existsWithVisibleHintForEditor(editor, false);
}
@Override
- public void actionPerformed(AnActionEvent e) {
- Editor editor = e.getData(CommonDataKeys.EDITOR);
- assert editor != null;
- ParameterInfoController.hideAllHints(editor);
+ protected void doExecute(@NotNull Editor editor, @Nullable Caret caret, DataContext dataContext) {
+ if (isEnabled(editor)) {
+ ParameterInfoController.hideAllHints(editor);
+ }
// hints can be hidden asynchronously (with animation), so we disable switching explicitly here
editor.putUserData(SWITCH_DISABLED, Boolean.TRUE);
try {
- ActionManager actionManager = ActionManager.getInstance();
- AnAction action = actionManager.getAction(myUp ? IdeActions.ACTION_LOOKUP_UP
- : IdeActions.ACTION_LOOKUP_DOWN);
- if (action == null) {
- action = actionManager.getAction(myUp ? IdeActions.ACTION_EDITOR_MOVE_CARET_UP
- : IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN);
+ if (myOriginalHandler.isEnabled(editor, caret, dataContext)) {
+ myOriginalHandler.execute(editor, caret, dataContext);
+ }
+ else {
+ EditorActionManager.getInstance().getActionHandler(myUp ? IdeActions.ACTION_EDITOR_MOVE_CARET_UP
+ : IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN)
+ .execute(editor, caret, dataContext);
}
- action.actionPerformed(e);
}
finally {
editor.putUserData(SWITCH_DISABLED, null);
diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java
index 3c4b208ab00b..52369b000c27 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java
@@ -565,7 +565,7 @@ public class CompletionHintsTest extends LightFixtureCompletionTestCase {
waitForAllAsyncStuff();
checkHintContents("@NotNull String key\n" +
"@NotNull String key, String def");
- myFixture.performEditorAction("EditorOverloadUp");
+ myFixture.performEditorAction(IdeActions.ACTION_LOOKUP_UP);
waitForAllAsyncStuff();
checkResultWithInlays("class C { void m() { System.getProperty(, ) } }");
checkHintContents(null);
@@ -580,7 +580,7 @@ public class CompletionHintsTest extends LightFixtureCompletionTestCase {
waitForAllAsyncStuff();
checkHintContents("@NotNull String key\n" +
"@NotNull String key, String def");
- myFixture.performEditorAction("EditorOverloadDown");
+ myFixture.performEditorAction(IdeActions.ACTION_LOOKUP_DOWN);
waitForAllAsyncStuff();
checkResultWithInlays("class C { void m() { System.getProperty(, ) } }");
checkHintContents(null);
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java
index 8a91f49863d1..0fd3fa860c2e 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java
@@ -20,16 +20,18 @@ import com.intellij.codeInsight.completion.CodeCompletionFeatures;
import com.intellij.codeInsight.completion.CompletionProgressIndicator;
import com.intellij.codeInsight.completion.impl.CompletionServiceImpl;
import com.intellij.codeInsight.lookup.CharFilter;
-import com.intellij.codeInsight.lookup.Lookup;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.ide.ui.UISettings;
-import com.intellij.openapi.actionSystem.*;
+import com.intellij.openapi.actionSystem.DataContext;
+import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.editor.Caret;
import com.intellij.openapi.editor.CaretAction;
import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.editor.actionSystem.EditorAction;
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
-import com.intellij.openapi.project.DumbAwareAction;
+import com.intellij.openapi.editor.actionSystem.EditorActionManager;
+import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.ui.ScrollingUtil;
import org.jetbrains.annotations.NotNull;
@@ -105,39 +107,44 @@ public abstract class LookupActionHandler extends EditorActionHandler {
}
- public static class UpAction extends DumbAwareAction {
-
- @Override
- public void actionPerformed(AnActionEvent e) {
- FeatureUsageTracker.getInstance().triggerFeatureUsed(CodeCompletionFeatures.EDITING_COMPLETION_CONTROL_ARROWS);
- LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(CommonDataKeys.EDITOR.getData(e.getDataContext()));
- assert lookup != null : LookupImpl.getLastLookupDisposeTrace();
- lookup.hideLookup(true);
- ActionManager.getInstance().getAction(IdeActions.ACTION_EDITOR_MOVE_CARET_UP).actionPerformed(e);
- }
-
- @Override
- public void update(AnActionEvent e) {
- Lookup lookup = LookupManager.getActiveLookup(CommonDataKeys.EDITOR.getData(e.getDataContext()));
- e.getPresentation().setEnabled(lookup != null);
+ public static class UpAction extends EditorAction implements DumbAware {
+ public UpAction() {
+ super(new UpDownInEditorHandler(true));
}
}
- public static class DownAction extends DumbAwareAction {
+ public static class DownAction extends EditorAction implements DumbAware {
+ public DownAction() {
+ super(new UpDownInEditorHandler(false));
+ }
+ }
- @Override
- public void actionPerformed(AnActionEvent e) {
- FeatureUsageTracker.getInstance().triggerFeatureUsed(CodeCompletionFeatures.EDITING_COMPLETION_CONTROL_ARROWS);
- LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(CommonDataKeys.EDITOR.getData(e.getDataContext()));
- assert lookup != null : LookupImpl.getLastLookupDisposeTrace();
- lookup.hideLookup(true);
- ActionManager.getInstance().getAction(IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN).actionPerformed(e);
+ private static class UpDownInEditorHandler extends EditorActionHandler {
+ private final boolean myUp;
+
+ private UpDownInEditorHandler(boolean up) {
+ myUp = up;
}
@Override
- public void update(AnActionEvent e) {
- Lookup lookup = LookupManager.getActiveLookup(CommonDataKeys.EDITOR.getData(e.getDataContext()));
- e.getPresentation().setEnabled(lookup != null);
+ public boolean executeInCommand(@NotNull Editor editor, DataContext dataContext) {
+ return false;
+ }
+
+ @Override
+ protected boolean isEnabledForCaret(@NotNull Editor editor, @NotNull Caret caret, DataContext dataContext) {
+ return LookupManager.getActiveLookup(editor) != null;
+ }
+
+ @Override
+ protected void doExecute(@NotNull Editor editor, @Nullable Caret caret, DataContext dataContext) {
+ FeatureUsageTracker.getInstance().triggerFeatureUsed(CodeCompletionFeatures.EDITING_COMPLETION_CONTROL_ARROWS);
+ LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
+ assert lookup != null : LookupImpl.getLastLookupDisposeTrace();
+ lookup.hideLookup(true);
+ EditorActionManager.getInstance().getActionHandler(myUp ? IdeActions.ACTION_EDITOR_MOVE_CARET_UP
+ : IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN)
+ .execute(editor, caret, dataContext);
}
}
diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml
index d8b4bc2e1239..759172a79951 100644
--- a/resources/src/META-INF/IdeaPlugin.xml
+++ b/resources/src/META-INF/IdeaPlugin.xml
@@ -17,13 +17,6 @@
com.intellij
IDEA CORE
-
-
-
-
-
@@ -1431,6 +1424,8 @@
+
+