From 6846bc3b0695e152a6628a80e0c38294e397a00e Mon Sep 17 00:00:00 2001 From: shuzijun Date: Fri, 31 Dec 2021 09:53:17 +0800 Subject: [PATCH] Add enter to open the question; --- .../plugin/listener/JTableKeyAdapter.java | 43 +++++++++++++++++++ .../plugin/window/NavigatorTable.java | 2 + 2 files changed, 45 insertions(+) create mode 100644 src/main/java/com/shuzijun/leetcode/plugin/listener/JTableKeyAdapter.java diff --git a/src/main/java/com/shuzijun/leetcode/plugin/listener/JTableKeyAdapter.java b/src/main/java/com/shuzijun/leetcode/plugin/listener/JTableKeyAdapter.java new file mode 100644 index 00000000..f83ca4ea --- /dev/null +++ b/src/main/java/com/shuzijun/leetcode/plugin/listener/JTableKeyAdapter.java @@ -0,0 +1,43 @@ +package com.shuzijun.leetcode.plugin.listener; + +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.progress.Task; +import com.intellij.openapi.project.Project; +import com.shuzijun.leetcode.plugin.manager.CodeManager; +import com.shuzijun.leetcode.plugin.model.PluginConstant; +import com.shuzijun.leetcode.plugin.model.Question; +import com.shuzijun.leetcode.plugin.window.NavigatorTable; +import org.jetbrains.annotations.NotNull; + +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +/** + * @author shuzijun + */ +public class JTableKeyAdapter extends KeyAdapter { + + private NavigatorTable navigatorTable; + private Project project; + + public JTableKeyAdapter(NavigatorTable navigatorTable, Project project) { + this.navigatorTable = navigatorTable; + this.project = project; + } + + @Override + public void keyTyped(KeyEvent e) { + Question question = navigatorTable.getSelectedRowData(); + if (question != null) { + if (e.getKeyChar() == KeyEvent.VK_ENTER) { + ProgressManager.getInstance().run(new Task.Backgroundable(project, PluginConstant.LEETCODE_EDITOR_OPEN_CODE, false) { + @Override + public void run(@NotNull ProgressIndicator progressIndicator) { + CodeManager.openCode(question, project); + } + }); + } + } + } +} diff --git a/src/main/java/com/shuzijun/leetcode/plugin/window/NavigatorTable.java b/src/main/java/com/shuzijun/leetcode/plugin/window/NavigatorTable.java index 1b56b3a2..55733a18 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/window/NavigatorTable.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/window/NavigatorTable.java @@ -7,6 +7,7 @@ import com.intellij.openapi.project.Project; import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.table.JBTable; +import com.shuzijun.leetcode.plugin.listener.JTableKeyAdapter; import com.shuzijun.leetcode.plugin.listener.QuestionStatusListener; import com.shuzijun.leetcode.plugin.listener.TreeMouseListener; import com.shuzijun.leetcode.plugin.manager.ViewManager; @@ -123,6 +124,7 @@ public Component prepareRenderer(TableCellRenderer renderer, int row, int column table.setRowSelectionAllowed(true); table.setFillsViewportHeight(true); table.addMouseListener(new TreeMouseListener(this, project)); + table.addKeyListener(new JTableKeyAdapter(this, project)); table.setRowHeight(0, 200); this.add(new JBScrollPane(table, JBScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JBScrollPane.HORIZONTAL_SCROLLBAR_NEVER), BorderLayout.CENTER);