From b08ab89857d8019ff5685b91cfa948c806fee28b Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 12 Jul 2011 16:04:41 +0200 Subject: [PATCH] ctrl+enter chooses the selected lookup item, even in unfocused --- .../CompletionProgressIndicator.java | 2 +- .../lookup/impl/actions/ChooseItemAction.java | 29 +++++++++++++++---- .../openapi/actionSystem/IdeActions.java | 1 + .../src/idea/Keymap_Default.xml | 3 ++ .../src/idea/PlatformLangActionManager.xml | 3 +- resources/src/idea/RichPlatformActions.xml | 3 +- 6 files changed, 33 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java index 80c18ce16e3d..359b4ea5a4d1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java @@ -160,7 +160,7 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement myLookup.setFocused(true); } else { myLookup.addAdvertisement("Press " + - CompletionContributor.getActionShortcut(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM_REPLACE) + + CompletionContributor.getActionShortcut(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM_ALWAYS) + " to choose the first suggestion"); } if (!myEditor.isOneLineMode()) { 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 44ab57a49cd5..bf893de19811 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 @@ -26,9 +26,9 @@ import com.intellij.openapi.editor.actionSystem.EditorActionHandler; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; -public class ChooseItemAction extends EditorAction { - public ChooseItemAction(){ - super(new Handler()); +public abstract class ChooseItemAction extends EditorAction { + public ChooseItemAction(Handler handler){ + super(handler); } @NotNull @@ -41,7 +41,13 @@ public class ChooseItemAction extends EditorAction { return lookup; } - private static class Handler extends EditorActionHandler { + protected static class Handler extends EditorActionHandler { + final boolean focusedOnly; + + Handler(boolean focusedOnly) { + this.focusedOnly = focusedOnly; + } + public void execute(@NotNull final Editor editor, final DataContext dataContext) { getLookup(editor).finishLookup(Lookup.NORMAL_SELECT_CHAR); } @@ -50,7 +56,20 @@ public class ChooseItemAction extends EditorAction { @Override public boolean isEnabled(Editor editor, DataContext dataContext) { LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor); - return lookup != null && lookup.isFocused(); + if (lookup == null) return false; + if (focusedOnly && !lookup.isFocused()) return false; + return true; + } + } + + public static class Always extends ChooseItemAction { + public Always() { + super(new Handler(false)); + } + } + public static class FocusedOnly extends ChooseItemAction { + public FocusedOnly() { + super(new Handler(true)); } } diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java index d4ca80de5b1a..2ed2e4ab668d 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java @@ -69,6 +69,7 @@ public interface IdeActions { @NonNls String ACTION_SMART_TYPE_COMPLETION = "SmartTypeCompletion"; @NonNls String ACTION_CLASS_NAME_COMPLETION = "ClassNameCompletion"; @NonNls String ACTION_CHOOSE_LOOKUP_ITEM = "EditorChooseLookupItem"; + @NonNls String ACTION_CHOOSE_LOOKUP_ITEM_ALWAYS = "EditorChooseLookupItemAlways"; @NonNls String ACTION_CHOOSE_LOOKUP_ITEM_REPLACE = "EditorChooseLookupItemReplace"; @NonNls String ACTION_CHOOSE_LOOKUP_ITEM_COMPLETE_STATEMENT = "EditorChooseLookupItemCompleteStatement"; diff --git a/platform/platform-resources/src/idea/Keymap_Default.xml b/platform/platform-resources/src/idea/Keymap_Default.xml index 6eec61b2a34f..91379ea5a786 100644 --- a/platform/platform-resources/src/idea/Keymap_Default.xml +++ b/platform/platform-resources/src/idea/Keymap_Default.xml @@ -650,6 +650,9 @@ + + + diff --git a/platform/platform-resources/src/idea/PlatformLangActionManager.xml b/platform/platform-resources/src/idea/PlatformLangActionManager.xml index cba333e3e675..103689de74f7 100644 --- a/platform/platform-resources/src/idea/PlatformLangActionManager.xml +++ b/platform/platform-resources/src/idea/PlatformLangActionManager.xml @@ -2,7 +2,8 @@ - + + diff --git a/resources/src/idea/RichPlatformActions.xml b/resources/src/idea/RichPlatformActions.xml index bde133ac2d14..755ad7f94061 100644 --- a/resources/src/idea/RichPlatformActions.xml +++ b/resources/src/idea/RichPlatformActions.xml @@ -2,7 +2,8 @@ - + +