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.