From bbad2b53e8006c296ca9571404f8ec2d792f4952 Mon Sep 17 00:00:00 2001 From: "arseniy.nisnevich" <123> Date: Fri, 22 Nov 2019 20:15:07 +0300 Subject: [PATCH] IDEA-227295 replaced KeyListener for project actions list with ActionMap using ListActions GitOrigin-RevId: 99e33e1e59b01f06078d1cf1ba31eaea259bf05d --- .../welcomeScreen/NewRecentProjectPanel.java | 75 ++++++++++--------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java index 8ebe33982b9a..a279071f4aa2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/NewRecentProjectPanel.java @@ -9,10 +9,7 @@ import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.util.io.UniqueNameBuilder; import com.intellij.openapi.wm.IdeFocusManager; -import com.intellij.ui.ColorUtil; -import com.intellij.ui.ComponentUtil; -import com.intellij.ui.JBColor; -import com.intellij.ui.PopupHandler; +import com.intellij.ui.*; import com.intellij.ui.components.JBList; import com.intellij.ui.components.panels.NonOpaquePanel; import com.intellij.ui.scale.JBUIScale; @@ -27,6 +24,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; +import java.awt.event.ActionEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.Arrays; @@ -74,47 +72,52 @@ public class NewRecentProjectPanel extends RecentProjectPanel { final JBList list = super.createList(recentProjectActions, size); list.setBackground(FlatWelcomeFrame.getProjectsBackground()); - list.addKeyListener(new KeyAdapter() { + list.getActionMap().put(ListActions.Right.ID, new AbstractAction() { @Override - public void keyPressed(KeyEvent e) { + public void actionPerformed(ActionEvent e) { Object selected = list.getSelectedValue(); - final ProjectGroup group; + ProjectGroup group = null; if (selected instanceof ProjectGroupActionGroup) { group = ((ProjectGroupActionGroup)selected).getGroup(); - } else { - group = null; } - int keyCode = e.getKeyCode(); - if (keyCode == KeyEvent.VK_RIGHT) { - if (group != null) { - if (!group.isExpanded()) { - group.setExpanded(true); - ListModel model = ((NameFilteringListModel)list.getModel()).getOriginalModel(); - int index = list.getSelectedIndex(); - RecentProjectsWelcomeScreenActionBase.rebuildRecentProjectDataModel((DefaultListModel)model); - list.setSelectedIndex(group.getProjects().isEmpty() ? index : index + 1); - } - } else { - FlatWelcomeFrame frame = ComponentUtil.getParentOfType((Class)FlatWelcomeFrame.class, list); - if (frame != null) { - FocusTraversalPolicy policy = frame.getFocusTraversalPolicy(); - if (policy != null) { - Component next = policy.getComponentAfter(frame, list); - if (next != null) { - IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> IdeFocusManager.getGlobalInstance().requestFocus(next, true)); - } + if (group != null) { + if (!group.isExpanded()) { + group.setExpanded(true); + ListModel model = ((NameFilteringListModel)list.getModel()).getOriginalModel(); + int index = list.getSelectedIndex(); + RecentProjectsWelcomeScreenActionBase.rebuildRecentProjectDataModel((DefaultListModel)model); + list.setSelectedIndex(group.getProjects().isEmpty() ? index : index + 1); + } + } else { + FlatWelcomeFrame frame = ComponentUtil.getParentOfType((Class)FlatWelcomeFrame.class, list); + if (frame != null) { + FocusTraversalPolicy policy = frame.getFocusTraversalPolicy(); + if (policy != null) { + Component next = policy.getComponentAfter(frame, list); + if (next != null) { + IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> IdeFocusManager.getGlobalInstance().requestFocus(next, true)); } } } - } else if (keyCode == KeyEvent.VK_LEFT ) { - if (group != null && group.isExpanded()) { - group.setExpanded(false); - int index = list.getSelectedIndex(); - ListModel model = ((NameFilteringListModel)list.getModel()).getOriginalModel(); - RecentProjectsWelcomeScreenActionBase.rebuildRecentProjectDataModel((DefaultListModel)model); - list.setSelectedIndex(index); - } + } + } + }); + list.getActionMap().put(ListActions.Left.ID, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + Object selected = list.getSelectedValue(); + ProjectGroup group = null; + if (selected instanceof ProjectGroupActionGroup) { + group = ((ProjectGroupActionGroup)selected).getGroup(); + } + + if (group != null && group.isExpanded()) { + group.setExpanded(false); + int index = list.getSelectedIndex(); + ListModel model = ((NameFilteringListModel)list.getModel()).getOriginalModel(); + RecentProjectsWelcomeScreenActionBase.rebuildRecentProjectDataModel((DefaultListModel)model); + list.setSelectedIndex(index); } } });