diff --git a/platform/icons/src/actions/consoleHistory.png b/platform/icons/src/actions/consoleHistory.png new file mode 100644 index 000000000000..9ac71e7ec590 Binary files /dev/null and b/platform/icons/src/actions/consoleHistory.png differ diff --git a/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java b/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java index 522f3c6023cb..de4f371bb308 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java +++ b/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java @@ -118,6 +118,7 @@ public class ConsoleHistoryController { EmptyAction.setupAction(myHistoryPrev, "Console.History.Previous", null); EmptyAction.setupAction(myBrowseHistory, "Console.History.Browse", null); if (!myMultiline) { + EmptyAction.setupAction(myBrowseHistory, "Console.History.BrowseTW", null); myHistoryNext.registerCustomShortcutSet(KeyEvent.VK_UP, 0, null); myHistoryPrev.registerCustomShortcutSet(KeyEvent.VK_DOWN, 0, null); } @@ -285,7 +286,7 @@ public class ConsoleHistoryController { } private void saveHistory(final XmlSerializer out) throws IOException { - out.startDocument("UTF-8", null); + out.startDocument(CharsetToolkit.UTF8, null); out.startTag(null, "console-history"); out.attribute(null, "id", myId); for (String s : myModel.getHistory()) { diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java index 72eafccbaeeb..9e161bb9dae0 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java @@ -73,7 +73,6 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; -import java.util.ArrayList; import java.util.Collections; import java.util.concurrent.atomic.AtomicBoolean; @@ -241,7 +240,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider { for (AnAction action : createActions()) { action.registerCustomShortcutSet(action.getShortcutSet(), myConsoleEditor.getComponent()); } - registerActionShortcuts(myHistoryViewer.getComponent()); + EmptyAction.registerActionShortcuts(myHistoryViewer.getComponent(), myConsoleEditor.getComponent()); } protected AnAction[] createActions() { @@ -516,7 +515,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider { for (FileEditor fileEditor : source.getAllEditors(file)) { if (!(fileEditor instanceof TextEditor)) continue; final Editor editor = ((TextEditor)fileEditor).getEditor(); - registerActionShortcuts(editor.getComponent()); + EmptyAction.registerActionShortcuts(editor.getComponent(), myConsoleEditor.getComponent()); editor.getCaretModel().addCaretListener(new CaretListener() { public void caretPositionChanged(CaretEvent e) { queueUiUpdate(false); @@ -536,16 +535,6 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider { }); } - protected void registerActionShortcuts(JComponent component) { - final ArrayList actionList = - (ArrayList)myConsoleEditor.getComponent().getClientProperty(AnAction.ourClientProperty); - if (actionList != null) { - for (AnAction anAction : actionList) { - anAction.registerCustomShortcutSet(anAction.getShortcutSet(), component); - } - } - } - public Editor getCurrentEditor() { return myCurrentEditor; } diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/EmptyAction.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/EmptyAction.java index c362e0470d47..542ab6cd70ee 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/EmptyAction.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/EmptyAction.java @@ -19,6 +19,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.util.ArrayList; /** * @author Gregory.Shrago @@ -36,13 +37,26 @@ public class EmptyAction extends AnAction { public static void setupAction(@NotNull AnAction action, @NotNull String id, @Nullable JComponent component) { final AnAction emptyAction = ActionManager.getInstance().getAction(id); - if (action.getTemplatePresentation().getIcon() == null) { - action.getTemplatePresentation().setIcon(emptyAction.getTemplatePresentation().getIcon()); + final Presentation copyFrom = emptyAction.getTemplatePresentation(); + final Presentation copyTo = action.getTemplatePresentation(); + if (copyTo.getIcon() == null) { + copyTo.setIcon(copyFrom.getIcon()); } - action.getTemplatePresentation().setText(emptyAction.getTemplatePresentation().getText()); + copyTo.setText(copyFrom.getText()); + copyTo.setDescription(copyFrom.getDescription()); action.registerCustomShortcutSet(emptyAction.getShortcutSet(), component); } + public static void registerActionShortcuts(JComponent component, final JComponent fromComponent) { + final ArrayList actionList = + (ArrayList)fromComponent.getClientProperty(ourClientProperty); + if (actionList != null) { + for (AnAction anAction : actionList) { + anAction.registerCustomShortcutSet(anAction.getShortcutSet(), component); + } + } + } + public static AnAction wrap(final AnAction action) { return action instanceof ActionGroup ? new ActionGroup() { { diff --git a/platform/platform-resources-en/src/messages/ActionsBundle.properties b/platform/platform-resources-en/src/messages/ActionsBundle.properties index 1a72c33c5b88..618d12942776 100644 --- a/platform/platform-resources-en/src/messages/ActionsBundle.properties +++ b/platform/platform-resources-en/src/messages/ActionsBundle.properties @@ -1232,3 +1232,14 @@ action.ExcludeFromProject.text=Exclude From Project... group.MarkFileAs.text=Mark File As action.MarkAsPlainTextAction.text=Mark as Plain Text action.MarkAsOriginalTypeAction.text=Mark as + +action.Console.Execute.text=Execute Current Statement +action.Console.Execute.description=Execute current statement in console +action.Console.History.Previous.text=Previous +action.Console.History.Previous.description=Previous console history entry +action.Console.History.Next.text=Next +action.Console.History.Next.description=Next console history entry +action.Console.History.Browse.text=Browse History +action.Console.History.Browse.description=Browse console history +action.Console.History.BrowseTW.text=Browse History +action.Console.History.BrowseTW.description=Browse console history diff --git a/platform/platform-resources/src/idea/Keymap_Default.xml b/platform/platform-resources/src/idea/Keymap_Default.xml index ab1d1c0a4c27..c3fe8be6cc4e 100644 --- a/platform/platform-resources/src/idea/Keymap_Default.xml +++ b/platform/platform-resources/src/idea/Keymap_Default.xml @@ -908,6 +908,7 @@ + diff --git a/platform/platform-resources/src/idea/PlatformActions.xml b/platform/platform-resources/src/idea/PlatformActions.xml index 874a0939cc59..72e26190e94c 100644 --- a/platform/platform-resources/src/idea/PlatformActions.xml +++ b/platform/platform-resources/src/idea/PlatformActions.xml @@ -432,11 +432,12 @@ - + - - - + + + +