From c08cf14b888fa1f1161560b2392cd69bda6b4f53 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 5 Jul 2013 17:00:46 +0200 Subject: [PATCH] give default shortcut in productivity tips if missing in current keymap (IDEA-109779) --- .../src/com/intellij/ide/util/TipUIUtil.java | 30 +++++++++++++++---- .../src/tips/TabInLookups.html | 2 +- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java b/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java index 074e0bd5bd8a..431560b4355e 100644 --- a/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java @@ -20,11 +20,14 @@ import com.intellij.openapi.actionSystem.KeyboardShortcut; import com.intellij.openapi.actionSystem.Shortcut; import com.intellij.openapi.application.ApplicationInfo; import com.intellij.openapi.application.ApplicationNamesInfo; +import com.intellij.openapi.keymap.Keymap; import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.keymap.KeymapUtil; +import com.intellij.openapi.keymap.impl.DefaultKeymap; import com.intellij.util.ResourceUtil; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.io.IOException; @@ -92,16 +95,31 @@ public class TipUIUtil { return; } final String actionId = text.substring(actionIdStart, actionIdEnd); - final Shortcut[] shortcuts = KeymapManager.getInstance().getActiveKeymap().getShortcuts(actionId); - String shortcutText = ""; - for (final Shortcut shortcut : shortcuts) { - if (shortcut instanceof KeyboardShortcut) { - shortcutText = KeymapUtil.getShortcutText(shortcut); - break; + String shortcutText = getShortcutText(actionId, KeymapManager.getInstance().getActiveKeymap()); + if (shortcutText == null) { + Keymap defKeymap = KeymapManager.getInstance().getKeymap(DefaultKeymap.getInstance().getDefaultKeymapName()); + if (defKeymap != null) { + shortcutText = getShortcutText(actionId, defKeymap); + if (shortcutText != null) { + shortcutText += " in default keymap"; + } } } + if (shortcutText == null) { + shortcutText = ""; + } text.replace(lastIndex, actionIdEnd + 1, shortcutText); lastIndex += shortcutText.length(); } } + + @Nullable + private static String getShortcutText(String actionId, Keymap keymap) { + for (final Shortcut shortcut : keymap.getShortcuts(actionId)) { + if (shortcut instanceof KeyboardShortcut) { + return KeymapUtil.getShortcutText(shortcut); + } + } + return null; + } } diff --git a/platform/platform-resources-en/src/tips/TabInLookups.html b/platform/platform-resources-en/src/tips/TabInLookups.html index adebbf721b24..328047399be6 100644 --- a/platform/platform-resources-en/src/tips/TabInLookups.html +++ b/platform/platform-resources-en/src/tips/TabInLookups.html @@ -6,7 +6,7 @@

When using Code Completion, you can accept the currently highlighted selection in the popup list - with the &shortcut:EditorChooseLookupItemReplace; key.

+ with &shortcut:EditorChooseLookupItemReplace; key.

Unlike accepting with the &shortcut:EditorChooseLookupItem; key, the selected name will overwrite the rest of the name to the right of the caret. This can be especially useful for replacing one method or variable name with another.