Skip to content

Commit 6f283c7

Browse files
authored
Merge pull request #155 from shuzijun/gradle
Next version updated
2 parents 306d25c + 51573b8 commit 6f283c7

26 files changed

+1214
-56
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.shuzijun.leetcode.plugin.actions.editor;
2+
3+
import com.intellij.openapi.actionSystem.AnActionEvent;
4+
import com.intellij.openapi.actionSystem.PlatformDataKeys;
5+
import com.intellij.openapi.application.ApplicationManager;
6+
import com.intellij.openapi.project.Project;
7+
import com.intellij.openapi.vfs.VirtualFile;
8+
import com.shuzijun.leetcode.plugin.manager.ArticleManager;
9+
import com.shuzijun.leetcode.plugin.manager.ViewManager;
10+
import com.shuzijun.leetcode.plugin.model.*;
11+
import com.shuzijun.leetcode.plugin.setting.ProjectConfig;
12+
import com.shuzijun.leetcode.plugin.window.SolutionPanel;
13+
import org.jetbrains.annotations.NotNull;
14+
15+
import java.util.List;
16+
import java.util.concurrent.atomic.AtomicReference;
17+
18+
/**
19+
* @author shuzijun
20+
*/
21+
public class OpenSolutionAction extends AbstractEditAction {
22+
23+
@Override
24+
public void update(@NotNull AnActionEvent anActionEvent) {
25+
VirtualFile vf = anActionEvent.getData(PlatformDataKeys.VIRTUAL_FILE);
26+
LeetcodeEditor leetcodeEditor = ProjectConfig.getInstance(anActionEvent.getProject()).getEditor(vf.getPath());
27+
if (leetcodeEditor == null) {
28+
return;
29+
}
30+
Question question = ViewManager.getQuestionById(leetcodeEditor.getQuestionId(), anActionEvent.getProject());
31+
if (question == null) {
32+
anActionEvent.getPresentation().setEnabled(false);
33+
return;
34+
}
35+
anActionEvent.getPresentation().setEnabled(!Constant.ARTICLE_LIVE_NONE.equals(question.getArticleLive()));
36+
}
37+
38+
@Override
39+
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
40+
Project project = anActionEvent.getProject();
41+
if (Constant.ARTICLE_LIVE_ONE.equals(question.getArticleLive())) {
42+
ArticleManager.openArticle(question, project);
43+
} else if (Constant.ARTICLE_LIVE_LIST.equals(question.getArticleLive())) {
44+
List<Solution> solutionList = ArticleManager.getSolutionList(question, anActionEvent.getProject());
45+
if (solutionList.isEmpty()) {
46+
return;
47+
}
48+
AtomicReference<Solution> solution = new AtomicReference<>();
49+
ApplicationManager.getApplication().invokeAndWait(() -> {
50+
SolutionPanel.TableModel tableModel = new SolutionPanel.TableModel(solutionList);
51+
SolutionPanel dialog = new SolutionPanel(anActionEvent.getProject(), tableModel);
52+
dialog.setTitle(question.getFormTitle() + " Solutions");
53+
54+
if (dialog.showAndGet()) {
55+
solution.set(solutionList.get(dialog.getSelectedRow()));
56+
}
57+
});
58+
if(solution.get() !=null){
59+
question.setArticleSlug(solution.get().getSlug());
60+
ArticleManager.openArticle(question, project);
61+
}
62+
63+
}
64+
65+
}
66+
}

src/main/java/com/shuzijun/leetcode/plugin/actions/toolbar/LogoutAction.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
import com.intellij.openapi.actionSystem.AnActionEvent;
44
import com.shuzijun.leetcode.plugin.actions.AbstractAction;
5+
import com.shuzijun.leetcode.plugin.manager.ViewManager;
56
import com.shuzijun.leetcode.plugin.model.Config;
67
import com.shuzijun.leetcode.plugin.utils.*;
8+
import com.shuzijun.leetcode.plugin.window.WindowFactory;
9+
10+
import javax.swing.*;
711

812
/**
913
* @author shuzijun
@@ -16,5 +20,10 @@ public void actionPerformed(AnActionEvent anActionEvent, Config config) {
1620
HttpResponse httpResponse = HttpRequestUtils.executeGet(httpRequest);
1721
HttpRequestUtils.resetHttpclient();
1822
MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("login.out"));
23+
JTree tree = WindowFactory.getDataContext(anActionEvent.getProject()).getData(DataKeys.LEETCODE_PROJECTS_TREE);
24+
if(tree == null){
25+
return;
26+
}
27+
ViewManager.loadServiceData(tree, anActionEvent.getProject());
1928
}
2029
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.shuzijun.leetcode.plugin.actions.toolbar;
2+
3+
import com.intellij.openapi.actionSystem.AnActionEvent;
4+
import com.intellij.openapi.application.ApplicationManager;
5+
import com.intellij.openapi.project.Project;
6+
import com.intellij.openapi.ui.DialogWrapper;
7+
import com.shuzijun.leetcode.plugin.actions.AbstractAction;
8+
import com.shuzijun.leetcode.plugin.manager.SessionManager;
9+
import com.shuzijun.leetcode.plugin.manager.ViewManager;
10+
import com.shuzijun.leetcode.plugin.model.Config;
11+
import com.shuzijun.leetcode.plugin.model.Session;
12+
import com.shuzijun.leetcode.plugin.utils.DataKeys;
13+
import com.shuzijun.leetcode.plugin.utils.HttpRequestUtils;
14+
import com.shuzijun.leetcode.plugin.utils.MessageUtils;
15+
import com.shuzijun.leetcode.plugin.utils.PropertiesUtils;
16+
import com.shuzijun.leetcode.plugin.window.ProgressPanel;
17+
import com.shuzijun.leetcode.plugin.window.WindowFactory;
18+
import org.jetbrains.annotations.Nullable;
19+
20+
import javax.swing.*;
21+
import java.util.List;
22+
import java.util.concurrent.atomic.AtomicReference;
23+
24+
/**
25+
* @author shuzijun
26+
*/
27+
public class ProgressAction extends AbstractAction {
28+
29+
@Override
30+
public void actionPerformed(AnActionEvent anActionEvent, Config config) {
31+
if (!HttpRequestUtils.isLogin()) {
32+
MessageUtils.getInstance(anActionEvent.getProject()).showWarnMsg("info", PropertiesUtils.getInfo("login.not"));
33+
return;
34+
}
35+
36+
List<Session> sessionList = SessionManager.getSession(anActionEvent.getProject());
37+
if (sessionList.isEmpty()) {
38+
return;
39+
}
40+
AtomicReference<Session> sessionAtomic = new AtomicReference<>();
41+
ApplicationManager.getApplication().invokeAndWait(() -> {
42+
ProgressDialogPanel dialogPanel = new ProgressDialogPanel(anActionEvent.getProject(), sessionList);
43+
dialogPanel.setTitle("Progress");
44+
if (dialogPanel.showAndGet()) {
45+
sessionAtomic.set(dialogPanel.select());
46+
}
47+
});
48+
if (sessionAtomic.get() != null) {
49+
Session session = sessionAtomic.get();
50+
if (session.getId() == null) {
51+
return;
52+
} else {
53+
if (SessionManager.switchSession(anActionEvent.getProject(), session.getId())) {
54+
JTree tree = WindowFactory.getDataContext(anActionEvent.getProject()).getData(DataKeys.LEETCODE_PROJECTS_TREE);
55+
ViewManager.loadServiceData(tree, anActionEvent.getProject());
56+
actionPerformed(anActionEvent, config);
57+
}
58+
}
59+
}
60+
}
61+
62+
63+
private class ProgressDialogPanel extends DialogWrapper {
64+
65+
private JPanel jpanel;
66+
private ProgressPanel progressPanel;
67+
68+
public ProgressDialogPanel(@Nullable Project project, List<Session> sessionList) {
69+
super(project, true);
70+
progressPanel = new ProgressPanel(sessionList, project);
71+
jpanel = progressPanel.getPanel();
72+
setModal(true);
73+
init();
74+
}
75+
76+
@Nullable
77+
@Override
78+
protected JComponent createCenterPanel() {
79+
return jpanel;
80+
}
81+
82+
public Session select() {
83+
return progressPanel.select();
84+
}
85+
86+
87+
}
88+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.shuzijun.leetcode.plugin.actions.tree;
2+
3+
import com.intellij.openapi.actionSystem.AnActionEvent;
4+
import com.intellij.openapi.application.ApplicationManager;
5+
import com.intellij.openapi.project.Project;
6+
import com.shuzijun.leetcode.plugin.manager.ArticleManager;
7+
import com.shuzijun.leetcode.plugin.manager.ViewManager;
8+
import com.shuzijun.leetcode.plugin.model.Config;
9+
import com.shuzijun.leetcode.plugin.model.Constant;
10+
import com.shuzijun.leetcode.plugin.model.Question;
11+
import com.shuzijun.leetcode.plugin.model.Solution;
12+
import com.shuzijun.leetcode.plugin.utils.DataKeys;
13+
import com.shuzijun.leetcode.plugin.window.SolutionPanel;
14+
import com.shuzijun.leetcode.plugin.window.WindowFactory;
15+
import org.jetbrains.annotations.NotNull;
16+
17+
import javax.swing.*;
18+
import java.util.List;
19+
import java.util.concurrent.atomic.AtomicReference;
20+
21+
/**
22+
* @author shuzijun
23+
*/
24+
public class OpenSolutionAction extends AbstractTreeAction {
25+
26+
@Override
27+
public void update(@NotNull AnActionEvent anActionEvent) {
28+
JTree tree = WindowFactory.getDataContext(anActionEvent.getProject()).getData(DataKeys.LEETCODE_PROJECTS_TREE);
29+
if (tree == null) {
30+
anActionEvent.getPresentation().setEnabled(false);
31+
return;
32+
}
33+
Question question = ViewManager.getTreeQuestion(tree, anActionEvent.getProject());
34+
if (question == null) {
35+
anActionEvent.getPresentation().setEnabled(false);
36+
return;
37+
}
38+
if (Constant.ARTICLE_LIVE_NONE.equals(question.getArticleLive())) {
39+
anActionEvent.getPresentation().setEnabled(false);
40+
} else {
41+
anActionEvent.getPresentation().setEnabled(true);
42+
}
43+
}
44+
45+
@Override
46+
public void actionPerformed(AnActionEvent anActionEvent, Config config, JTree tree, Question question) {
47+
Project project = anActionEvent.getProject();
48+
if (Constant.ARTICLE_LIVE_ONE.equals(question.getArticleLive())) {
49+
ArticleManager.openArticle(question, project);
50+
} else if (Constant.ARTICLE_LIVE_LIST.equals(question.getArticleLive())) {
51+
List<Solution> solutionList = ArticleManager.getSolutionList(question, anActionEvent.getProject());
52+
if (solutionList.isEmpty()) {
53+
return;
54+
}
55+
AtomicReference<Solution> solution = new AtomicReference<>();
56+
ApplicationManager.getApplication().invokeAndWait(() -> {
57+
SolutionPanel.TableModel tableModel = new SolutionPanel.TableModel(solutionList);
58+
SolutionPanel dialog = new SolutionPanel(anActionEvent.getProject(), tableModel);
59+
dialog.setTitle(question.getFormTitle() + " Solutions");
60+
61+
if (dialog.showAndGet()) {
62+
solution.set(solutionList.get(dialog.getSelectedRow()));
63+
}
64+
});
65+
if(solution.get() !=null){
66+
question.setArticleSlug(solution.get().getSlug());
67+
ArticleManager.openArticle(question, project);
68+
}
69+
70+
}
71+
72+
}
73+
}

0 commit comments

Comments
 (0)