Skip to content

Commit 12ef19e

Browse files
authored
Merge pull request #626 from shuzijun/gradle
fix #613
2 parents a383d6a + 5a30b97 commit 12ef19e

12 files changed

+76
-28
lines changed

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@
77
[![捐赠][badge:donate-zh]][shuzijun-donate]
88
[![内推][badge:referrals]][shuzijun-referrals]
99

10+
## 8.7.0
11+
12+
### Added
13+
14+
### Changed
15+
16+
### Deprecated
17+
18+
### Fixed
19+
- fix [#613](https://github.com/shuzijun/leetcode-editor/issues/613)
20+
- fix [#625](https://github.com/shuzijun/leetcode-editor/issues/625)
21+
22+
### Removed
23+
1024
## 8.6.0
1125

1226
### Added

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
[![捐赠][badge:donate]][shuzijun-donate]
1414
[![内推][badge:referrals]][shuzijun-referrals]
1515

16-
<p align="center"><img src="https://s1.imagehub.cc/images/2022/07/10/leetcode-demo.gif" alt="demo" style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
16+
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/blog-comment@v0.0.1/doc/leetcode-demo.gif" alt="demo" style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
1717

1818
---
1919

@@ -27,6 +27,8 @@
2727
- Useful Links
2828
- [Login Help][gh:login-help]
2929
- [Custom Code][gh:custom-code] ([demo][gh:leetcode-question])
30+
31+
- **More open functions**: [shuzijun/lc-sdk](https://github.com/shuzijun/lc-sdk)
3032

3133
## Getting Started
3234
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/leetcode-editor@master/doc/leetcode-editor-3.0.gif" alt="start" style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>

README_ZH.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
[![捐赠][badge:donate]][shuzijun-donate]
1414
[![内推][badge:referrals]][shuzijun-referrals]
1515

16-
<p align="center"><img src="https://s1.imagehub.cc/images/2022/07/10/leetcode-demo.gif" alt="demo" style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
16+
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/blog-comment@v0.0.1/doc/leetcode-demo.gif" alt="demo" style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
1717

1818
---
1919

@@ -27,6 +27,8 @@
2727
- 有用的链接
2828
- [登录帮助][gh:login-help]
2929
- [自定义代码生成][gh:custom-code-zh] ([示例][gh:leetcode-question])
30+
31+
- **更开放的功能**: [shuzijun/lc-sdk](https://github.com/shuzijun/lc-sdk)
3032

3133

3234
## 开始使用

doc/description.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ <h2>Introduction</h2>
1717
</div>
1818
<br>
1919
<h2 >Getting Started</h2>
20-
<p align="center"><img src="https://s1.imagehub.cc/images/2022/07/17/leetcode-editor-3.0.gif"
20+
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/leetcode-editor@v8.6/doc/leetcode-editor-3.0.gif"
2121
alt="start" style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
2222

2323
<h2 >Local debugging</h2>
24-
<p align="center"><img src="https://s1.imagehub.cc/images/2022/07/17/customConfig-100.gif"
24+
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/leetcode-editor@v8.6/doc/customConfig-100.gif"
2525
alt="loacl" style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
2626

2727
<h3 >Configuration (configuration for first installation)</h3>
28-
<p align="center"><img src="https://s1.imagehub.cc/images/2022/07/17/config-3.0.jpg" alt="config"
28+
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/leetcode-editor@v8.6/doc/config-3.0.jpg" alt="config"
2929
style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
3030

3131
<ul>
@@ -52,7 +52,7 @@ <h3 >Configuration (configuration for first installation)</h3>
5252
</li>
5353
</ul>
5454
<h3 >Window</h3>
55-
<p align="center"><img src="https://s1.imagehub.cc/images/2022/07/17/window-3.0.jpg" alt="window"
55+
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/leetcode-editor@v8.6/doc/window-3.0.jpg" alt="window"
5656
style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
5757

5858
<ul>
@@ -87,7 +87,7 @@ <h3 >Window</h3>
8787
</li>
8888
</ul>
8989
<h3 >Menu</h3>
90-
<p align="center"><img src="https://s1.imagehub.cc/images/2022/07/17/menu-3.0.jpg" alt="menu"
90+
<p align="center"><img src="https://cdn.jsdelivr.net/gh/shuzijun/leetcode-editor@v8.6/doc/menu-3.0.jpg" alt="menu"
9191
style="width: auto;height: auto;max-width: 90%; max-height: 90%;"></p>
9292

9393

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
pluginGroup = com.shuzijun.leetcode
22
pluginName = leetcode-editor
3-
pluginVersion = 8.6
3+
pluginVersion = 8.7
44

55
pluginSinceBuild = 203.0
66
pluginUntilBuild =

src/main/java/com/shuzijun/leetcode/plugin/actions/editor/OpenSolutionAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ public void update(@NotNull AnActionEvent anActionEvent) {
4141
anActionEvent.getPresentation().setEnabled(false);
4242
return;
4343
}
44-
Question question = QuestionManager.getQuestionByTitleSlug(leetcodeEditor.getTitleSlug(), anActionEvent.getProject());
44+
Question question = QuestionManager.getQuestionByTitleSlug(leetcodeEditor.getTitleSlug(), anActionEvent.getProject(), true);
4545
if (question != null) {
4646
anActionEvent.getPresentation().setEnabled(!Constant.ARTICLE_LIVE_NONE.equals(question.getArticleLive()));
4747
} else {
48-
anActionEvent.getPresentation().setEnabled(false);
48+
anActionEvent.getPresentation().setEnabled(true);
4949
}
5050
}
5151

src/main/java/com/shuzijun/leetcode/plugin/actions/tree/FavoriteAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public boolean isSelected(AnActionEvent anActionEvent) {
3838
if (questionView == null) {
3939
return false;
4040
}
41-
Question cacheQuestion = QuestionManager.getQuestionByTitleSlug(questionView.getTitleSlug(), anActionEvent.getProject());
41+
Question cacheQuestion = QuestionManager.getQuestionByTitleSlug(questionView.getTitleSlug(), anActionEvent.getProject(),true);
4242
if (cacheQuestion == null) {
4343
return false;
4444
}

src/main/java/com/shuzijun/leetcode/plugin/actions/tree/FavoriteActionGroup.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public class FavoriteActionGroup extends ActionGroup implements DumbAware {
2121
@Override
2222
public AnAction[] getChildren(AnActionEvent anActionEvent) {
2323
NavigatorAction navigatorAction = WindowFactory.getDataContext(anActionEvent.getProject()).getData(DataKeys.LEETCODE_PROJECTS_NAVIGATORACTION);
24+
if (navigatorAction == null){
25+
return new AnAction[0];
26+
}
2427
List<AnAction> anActionList = Lists.newArrayList();
2528
List<Tag> tags = navigatorAction.getFind().getFilter(Constant.FIND_TYPE_LISTS);
2629
if (tags != null && !tags.isEmpty()) {

src/main/java/com/shuzijun/leetcode/plugin/actions/tree/OpenSolutionAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void update(@NotNull AnActionEvent anActionEvent) {
3939
anActionEvent.getPresentation().setEnabled(false);
4040
return;
4141
}
42-
Question question = QuestionManager.getQuestionByTitleSlug(questionView.getTitleSlug(), anActionEvent.getProject());
42+
Question question = QuestionManager.getQuestionByTitleSlug(questionView.getTitleSlug(), anActionEvent.getProject(), true);
4343
if (question == null) {
4444
return;
4545
}

src/main/java/com/shuzijun/leetcode/plugin/manager/QuestionManager.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import java.text.SimpleDateFormat;
1818
import java.util.*;
19+
import java.util.concurrent.Future;
1920
import java.util.concurrent.TimeUnit;
2021

2122
/**
@@ -317,6 +318,11 @@ public static User getUser() {
317318
}
318319

319320
public static Question getQuestionByTitleSlug(String titleSlug, Project project) {
321+
return getQuestionByTitleSlug(titleSlug,project, false);
322+
}
323+
324+
public static Question getQuestionByTitleSlug(String titleSlug, Project project, boolean readOnlyCache) {
325+
320326
if (StringUtils.isBlank(titleSlug)) {
321327
return null;
322328
}
@@ -327,9 +333,13 @@ public static Question getQuestionByTitleSlug(String titleSlug, Project project)
327333
try {
328334
Question question = new Question();
329335
question.setTitleSlug(titleSlug);
330-
if (ApplicationManager.getApplication().executeOnPooledThread(() -> {
336+
Future<Boolean> questionFuture = ApplicationManager.getApplication().executeOnPooledThread(() -> {
331337
return getQuestion(question, project);
332-
}).get()) {
338+
});
339+
if (readOnlyCache) {
340+
return null;
341+
}
342+
if (questionFuture.get()) {
333343
questionCache.put(key, question);
334344
} else {
335345
return null;

src/main/java/com/shuzijun/leetcode/plugin/manager/ViewManager.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,11 @@ public static void loadAllServiceData(NavigatorAction navigatorAction, Project p
7272
PageInfo.Filters filters = pageInfo.getFilters();
7373
if (StringUtils.isNotBlank(filters.getListId())) {
7474
List<Tag> tagList = navigatorAction.getFind().getFilter(Constant.FIND_TYPE_LISTS);
75-
Tag tag = tagList.stream().filter(t -> t.getSlug().equalsIgnoreCase(filters.getListId())).findAny().get();
76-
conformSet.retainAll(tag.getQuestions());
75+
Optional<Tag> optional = tagList.stream().filter(t -> t.getSlug().equalsIgnoreCase(filters.getListId())).findAny();
76+
if (optional.isPresent()){
77+
Tag tag = optional.get();
78+
conformSet.retainAll(tag.getQuestions());
79+
}
7780
}
7881
if (CollectionUtils.isNotEmpty(filters.getTags())) {
7982
List<Tag> tagList = navigatorAction.getFind().getFilter(Constant.FIND_TYPE_TAGS);

src/main/java/com/shuzijun/leetcode/plugin/window/WindowFactory.java

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.shuzijun.leetcode.plugin.window;
22

3-
import com.intellij.ide.DataManager;
43
import com.intellij.openapi.actionSystem.DataContext;
4+
import com.intellij.openapi.actionSystem.DataProvider;
55
import com.intellij.openapi.application.ApplicationManager;
66
import com.intellij.openapi.project.DumbAware;
77
import com.intellij.openapi.project.Project;
@@ -16,9 +16,9 @@
1616
import icons.LeetCodeEditorIcons;
1717
import org.apache.commons.lang.StringUtils;
1818
import org.jetbrains.annotations.NotNull;
19+
import org.jetbrains.annotations.Nullable;
1920

2021
import javax.swing.*;
21-
import java.util.concurrent.atomic.AtomicReference;
2222

2323
/**
2424
* @author shuzijun
@@ -48,16 +48,17 @@ public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindo
4848

4949
@NotNull
5050
public static DataContext getDataContext(@NotNull Project project) {
51-
AtomicReference<DataContext> dataContext = new AtomicReference<>();
52-
ApplicationManager.getApplication().invokeAndWait(() -> {
53-
ToolWindow leetcodeToolWindows = ToolWindowManager.getInstance(project).getToolWindow(ID);
54-
if (leetcodeToolWindows == null) {
55-
dataContext.set(DataContext.EMPTY_CONTEXT);
56-
} else {
57-
dataContext.set(DataManager.getInstance().getDataContext(leetcodeToolWindows.getContentManager().getContent(0).getComponent()));
58-
}
59-
});
60-
return dataContext.get();
51+
ToolWindow leetcodeToolWindows = ToolWindowManager.getInstance(project).getToolWindow(ID);
52+
if (leetcodeToolWindows == null) {
53+
return DataContext.EMPTY_CONTEXT;
54+
}
55+
56+
JComponent navigatorPanel = leetcodeToolWindows.getContentManager().getContent(0).getComponent();
57+
if (navigatorPanel instanceof DataProvider){
58+
return new MyDataContext((DataProvider) navigatorPanel);
59+
}
60+
61+
return DataContext.EMPTY_CONTEXT;
6162
}
6263

6364
public static void updateTitle(@NotNull Project project, String userName) {
@@ -77,4 +78,17 @@ public static void activateToolWindow(@NotNull Project project) {
7778
leetcodeToolWindows.activate(null);
7879
}
7980

81+
public static class MyDataContext implements DataContext{
82+
private final DataProvider dataProvider;
83+
84+
public MyDataContext(DataProvider dataProvider) {
85+
this.dataProvider = dataProvider;
86+
}
87+
88+
@Override
89+
public @Nullable Object getData(@NotNull String dataId) {
90+
return dataProvider.getData(dataId);
91+
}
92+
}
93+
8094
}

0 commit comments

Comments
 (0)