diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java index 5d0dd7bce490..271d39872974 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectNameWithTypeStep.java @@ -27,7 +27,6 @@ import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CustomShortcutSet; -import com.intellij.openapi.actionSystem.KeyboardShortcut; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.options.ConfigurationException; @@ -298,10 +297,9 @@ public class ProjectNameWithTypeStep extends ProjectNameStep { } } }; - final KeyboardShortcut up = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), null); - final KeyboardShortcut down = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), null); - arrow.registerCustomShortcutSet(new CustomShortcutSet(up, down), myNamePathComponent.getNameComponent()); - arrow.registerCustomShortcutSet(new CustomShortcutSet(up, down), myModuleName); + CustomShortcutSet shortcutSet = new CustomShortcutSet(KeyEvent.VK_UP, KeyEvent.VK_DOWN); + arrow.registerCustomShortcutSet(shortcutSet, myNamePathComponent.getNameComponent()); + arrow.registerCustomShortcutSet(shortcutSet, myModuleName); } } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.form b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.form index ac163ca26c3b..419077a496d5 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.form +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.form @@ -15,7 +15,7 @@ - + @@ -82,7 +82,7 @@ - + diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.java index 30873729efef..13e2419da3a5 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SelectTemplateStep.java @@ -20,6 +20,9 @@ import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.ide.util.treeView.AlphaComparator; import com.intellij.ide.util.treeView.NodeDescriptor; import com.intellij.ide.util.treeView.TreeState; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.ui.Messages; @@ -53,6 +56,8 @@ import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import java.awt.*; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; import java.util.*; import java.util.List; @@ -211,6 +216,26 @@ public class SelectTemplateStep extends ModuleWizardStep { else { myBuilder.expandAll(null); } + + new AnAction() { + @Override + public void actionPerformed(AnActionEvent e) { + InputEvent event = e.getInputEvent(); + if (event instanceof KeyEvent) { + int row = myTemplatesTree.getMaxSelectionRow(); + switch (((KeyEvent)event).getKeyCode()) { + case KeyEvent.VK_UP: + myTemplatesTree.setSelectionRow(row == 0 ? myTemplatesTree.getRowCount() - 1 : row - 1); + break; + case KeyEvent.VK_DOWN: + myTemplatesTree.setSelectionRow(row < myTemplatesTree.getRowCount() - 1 ? row + 1 : 0); + break; + case KeyEvent.VK_ENTER: + myTemplatesTree.expandRow(row); + } + } + } + }.registerCustomShortcutSet(new CustomShortcutSet(KeyEvent.VK_UP, KeyEvent.VK_DOWN, KeyEvent.VK_ENTER), mySearchField); } @Override @@ -318,6 +343,10 @@ public class SelectTemplateStep extends ModuleWizardStep { Disposer.dispose(myBuilder); } + private void createUIComponents() { + mySearchField = new SearchTextField(false); + } + private class GroupNode extends SimpleNode { private final String myGroup; private final Collection myFactories; diff --git a/platform/lang-impl/src/com/intellij/ide/actions/TemplateKindCombo.java b/platform/lang-impl/src/com/intellij/ide/actions/TemplateKindCombo.java index 3c837386337f..3d878249b59c 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/TemplateKindCombo.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/TemplateKindCombo.java @@ -15,16 +15,15 @@ */ package com.intellij.ide.actions; -import com.intellij.ui.ListCellRendererWrapper; import com.intellij.ide.ui.UISettings; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CustomShortcutSet; -import com.intellij.openapi.actionSystem.KeyboardShortcut; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Trinity; import com.intellij.ui.ComboboxSpeedSearch; import com.intellij.ui.ComboboxWithBrowseButton; +import com.intellij.ui.ListCellRendererWrapper; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -84,7 +83,7 @@ public class TemplateKindCombo extends ComboboxWithBrowseButton { } public void registerUpDownHint(JComponent component) { - final AnAction arrow = new AnAction() { + new AnAction() { @Override public void actionPerformed(AnActionEvent e) { if (e.getInputEvent() instanceof KeyEvent) { @@ -92,10 +91,7 @@ public class TemplateKindCombo extends ComboboxWithBrowseButton { scrollBy(code == KeyEvent.VK_DOWN ? 1 : code == KeyEvent.VK_UP ? -1 : 0); } } - }; - final KeyboardShortcut up = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), null); - final KeyboardShortcut down = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), null); - arrow.registerCustomShortcutSet(new CustomShortcutSet(up, down), component); + }.registerCustomShortcutSet(new CustomShortcutSet(KeyEvent.VK_UP, KeyEvent.VK_DOWN), component); } private void scrollBy(int delta) { diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/CustomShortcutSet.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/CustomShortcutSet.java index 9dcdc76680f9..61060869d9e1 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/CustomShortcutSet.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/CustomShortcutSet.java @@ -15,6 +15,8 @@ */ package com.intellij.openapi.actionSystem; +import com.intellij.util.Function; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -34,6 +36,10 @@ public final class CustomShortcutSet implements ShortcutSet { this(new KeyboardShortcut(keyStroke, null)); } + public CustomShortcutSet() { + myShortcuts = Shortcut.EMPTY_ARRAY; + } + /** * Creates CustomShortcutSet which contains specified keyboard and * mouse shortcuts. @@ -44,6 +50,15 @@ public final class CustomShortcutSet implements ShortcutSet { myShortcuts = shortcuts.length == 0 ? Shortcut.EMPTY_ARRAY : shortcuts.clone(); } + public CustomShortcutSet(Integer... keyCodes) { + myShortcuts = ContainerUtil.map(keyCodes, new Function() { + @Override + public Shortcut fun(Integer integer) { + return new KeyboardShortcut(KeyStroke.getKeyStroke(integer, 0), null); + } + }, Shortcut.EMPTY_ARRAY); + } + @Override @NotNull public Shortcut[] getShortcuts(){ diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/KeyboardShortcut.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/KeyboardShortcut.java index 92b7af9b521c..518d445ca5e7 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/KeyboardShortcut.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/KeyboardShortcut.java @@ -17,6 +17,7 @@ package com.intellij.openapi.actionSystem; import com.intellij.openapi.util.Comparing; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -30,7 +31,7 @@ public final class KeyboardShortcut extends Shortcut { /** * @throws IllegalArgumentException if firstKeyStroke is null */ - public KeyboardShortcut(@NotNull KeyStroke firstKeyStroke, KeyStroke secondKeyStroke) { + public KeyboardShortcut(@NotNull KeyStroke firstKeyStroke, @Nullable KeyStroke secondKeyStroke) { myFirstKeyStroke = firstKeyStroke; mySecondKeyStroke = secondKeyStroke; }