diff --git a/build.gradle b/build.gradle index f8d7245d..2caed6f4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group 'com.shuzijun.leetcode' -version "6.1" + (project.build_env.isEmpty() ? "" : "-") + project.build_env +version "6.2" + (project.build_env.isEmpty() ? "" : "-") + project.build_env sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/AbstractTimeAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/AbstractTimeAction.java new file mode 100644 index 00000000..e470ef85 --- /dev/null +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/AbstractTimeAction.java @@ -0,0 +1,42 @@ +package com.shuzijun.leetcode.plugin.actions; + +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.WindowManager; +import com.shuzijun.leetcode.plugin.manager.ViewManager; +import com.shuzijun.leetcode.plugin.model.Config; +import com.shuzijun.leetcode.plugin.model.LeetcodeEditor; +import com.shuzijun.leetcode.plugin.model.Question; +import com.shuzijun.leetcode.plugin.setting.ProjectConfig; +import com.shuzijun.leetcode.plugin.timer.TimerBarWidget; +import com.shuzijun.leetcode.plugin.utils.MessageUtils; +import com.shuzijun.leetcode.plugin.utils.PropertiesUtils; + +/** + * @author shuzijun + */ +public abstract class AbstractTimeAction extends AbstractAsynAction { + + @Override + public void perform(AnActionEvent anActionEvent, Config config) { + VirtualFile vf = anActionEvent.getData(PlatformDataKeys.VIRTUAL_FILE); + LeetcodeEditor leetcodeEditor = ProjectConfig.getInstance(anActionEvent.getProject()).getEditor(vf.getPath()); + if (leetcodeEditor == null) { + return; + } + Question question = ViewManager.getQuestionById(leetcodeEditor.getQuestionId(), anActionEvent.getProject()); + if (question == null) { + MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("tree.null")); + return; + } + TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID); + if (timerBarWidget != null) { + perform(anActionEvent, config, timerBarWidget, question); + } else { + //For possible reasons, the IDE version is not supported + } + } + + public abstract void perform(AnActionEvent anActionEvent, Config config, TimerBarWidget timerBarWidget, Question question); +} diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/EditorMenuActionGroup.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/EditorMenuActionGroup.java index 7d4d16fb..17b1b2aa 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/EditorMenuActionGroup.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/EditorMenuActionGroup.java @@ -15,10 +15,12 @@ public class EditorMenuActionGroup extends DefaultActionGroup { @Override public void update(AnActionEvent e) { VirtualFile vf = e.getData(PlatformDataKeys.VIRTUAL_FILE); - LeetcodeEditor leetcodeEditor = ProjectConfig.getInstance(e.getProject()).getEditor(vf.getPath()); boolean menuAllowed = false; - if (leetcodeEditor != null) { - menuAllowed = true; + if (vf != null) { + LeetcodeEditor leetcodeEditor = ProjectConfig.getInstance(e.getProject()).getEditor(vf.getPath()); + if (leetcodeEditor != null) { + menuAllowed = true; + } } e.getPresentation().setEnabledAndVisible(menuAllowed); } diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/FindAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/FindAction.java index 004723f7..8b1b67ec 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/FindAction.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/FindAction.java @@ -15,6 +15,10 @@ public class FindAction extends ToggleAction { @Override public boolean isSelected(AnActionEvent anActionEvent) { + if (anActionEvent.getProject() == null) { + //Why is it null? + return false; + } JPanel panel = WindowFactory.getDataContext(anActionEvent.getProject()).getData(DataKeys.LEETCODE_PROJECTS_TERRFIND); if (panel == null) { return false; diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/ResetTimeAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/ResetTimeAction.java index 6a6ec04c..359fb427 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/ResetTimeAction.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/ResetTimeAction.java @@ -1,17 +1,16 @@ package com.shuzijun.leetcode.plugin.actions; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.wm.WindowManager; import com.shuzijun.leetcode.plugin.model.Config; +import com.shuzijun.leetcode.plugin.model.Question; import com.shuzijun.leetcode.plugin.timer.TimerBarWidget; /** * @author shuzijun */ -public class ResetTimeAction extends AbstractAsynAction { +public class ResetTimeAction extends AbstractTimeAction { @Override - public void perform(AnActionEvent anActionEvent, Config config) { - TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID); + public void perform(AnActionEvent anActionEvent, Config config, TimerBarWidget timerBarWidget, Question question) { timerBarWidget.reset(); } } diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/StartTimeAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/StartTimeAction.java index 4d8d2e70..5ff4dd3a 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/StartTimeAction.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/StartTimeAction.java @@ -1,28 +1,16 @@ package com.shuzijun.leetcode.plugin.actions; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.wm.WindowManager; -import com.shuzijun.leetcode.plugin.manager.ViewManager; import com.shuzijun.leetcode.plugin.model.Config; import com.shuzijun.leetcode.plugin.model.Question; import com.shuzijun.leetcode.plugin.timer.TimerBarWidget; -import com.shuzijun.leetcode.plugin.utils.DataKeys; -import com.shuzijun.leetcode.plugin.window.WindowFactory; - -import javax.swing.*; /** * @author shuzijun */ -public class StartTimeAction extends AbstractAsynAction { +public class StartTimeAction extends AbstractTimeAction { @Override - public void perform(AnActionEvent anActionEvent, Config config) { - JTree tree = WindowFactory.getDataContext(anActionEvent.getProject()).getData(DataKeys.LEETCODE_PROJECTS_TREE); - Question question = ViewManager.getTreeQuestion(tree, anActionEvent.getProject()); - if (question == null) { - return; - } - TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID); - timerBarWidget.startTimer(question.getTitle()); + public void perform(AnActionEvent anActionEvent, Config config, TimerBarWidget timerBarWidget, Question question) { + timerBarWidget.reset(); } } diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/StopTimeAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/StopTimeAction.java index 695513ea..96fd12fa 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/StopTimeAction.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/StopTimeAction.java @@ -1,17 +1,16 @@ package com.shuzijun.leetcode.plugin.actions; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.wm.WindowManager; import com.shuzijun.leetcode.plugin.model.Config; +import com.shuzijun.leetcode.plugin.model.Question; import com.shuzijun.leetcode.plugin.timer.TimerBarWidget; /** * @author shuzijun */ -public class StopTimeAction extends AbstractAsynAction { +public class StopTimeAction extends AbstractTimeAction { @Override - public void perform(AnActionEvent anActionEvent, Config config) { - TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID); - timerBarWidget.stopTimer(); + public void perform(AnActionEvent anActionEvent, Config config, TimerBarWidget timerBarWidget, Question question) { + timerBarWidget.reset(); } } diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/ResetTimeAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/ResetTimeAction.java index b64ec93e..468fe169 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/ResetTimeAction.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/ResetTimeAction.java @@ -1,36 +1,17 @@ package com.shuzijun.leetcode.plugin.actions.editor; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.wm.WindowManager; -import com.shuzijun.leetcode.plugin.actions.AbstractAsynAction; -import com.shuzijun.leetcode.plugin.manager.ViewManager; +import com.shuzijun.leetcode.plugin.actions.AbstractTimeAction; import com.shuzijun.leetcode.plugin.model.Config; -import com.shuzijun.leetcode.plugin.model.LeetcodeEditor; import com.shuzijun.leetcode.plugin.model.Question; -import com.shuzijun.leetcode.plugin.setting.ProjectConfig; import com.shuzijun.leetcode.plugin.timer.TimerBarWidget; -import com.shuzijun.leetcode.plugin.utils.MessageUtils; -import com.shuzijun.leetcode.plugin.utils.PropertiesUtils; /** * @author shuzijun */ -public class ResetTimeAction extends AbstractAsynAction { +public class ResetTimeAction extends AbstractTimeAction { @Override - public void perform(AnActionEvent anActionEvent, Config config) { - VirtualFile vf = anActionEvent.getData(PlatformDataKeys.VIRTUAL_FILE); - LeetcodeEditor leetcodeEditor = ProjectConfig.getInstance(anActionEvent.getProject()).getEditor(vf.getPath()); - if (leetcodeEditor == null) { - return; - } - Question question = ViewManager.getQuestionById(leetcodeEditor.getQuestionId(), anActionEvent.getProject()); - if (question == null) { - MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("tree.null")); - return; - } - TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID); + public void perform(AnActionEvent anActionEvent, Config config, TimerBarWidget timerBarWidget, Question question) { timerBarWidget.reset(); } } diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StartTimeAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StartTimeAction.java index a5b5b195..793c0157 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StartTimeAction.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StartTimeAction.java @@ -1,36 +1,17 @@ package com.shuzijun.leetcode.plugin.actions.editor; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.wm.WindowManager; -import com.shuzijun.leetcode.plugin.actions.AbstractAsynAction; -import com.shuzijun.leetcode.plugin.manager.ViewManager; +import com.shuzijun.leetcode.plugin.actions.AbstractTimeAction; import com.shuzijun.leetcode.plugin.model.Config; -import com.shuzijun.leetcode.plugin.model.LeetcodeEditor; import com.shuzijun.leetcode.plugin.model.Question; -import com.shuzijun.leetcode.plugin.setting.ProjectConfig; import com.shuzijun.leetcode.plugin.timer.TimerBarWidget; -import com.shuzijun.leetcode.plugin.utils.MessageUtils; -import com.shuzijun.leetcode.plugin.utils.PropertiesUtils; /** * @author shuzijun */ -public class StartTimeAction extends AbstractAsynAction { +public class StartTimeAction extends AbstractTimeAction { @Override - public void perform(AnActionEvent anActionEvent, Config config) { - VirtualFile vf = anActionEvent.getData(PlatformDataKeys.VIRTUAL_FILE); - LeetcodeEditor leetcodeEditor = ProjectConfig.getInstance(anActionEvent.getProject()).getEditor(vf.getPath()); - if (leetcodeEditor == null) { - return; - } - Question question = ViewManager.getQuestionById(leetcodeEditor.getQuestionId(), anActionEvent.getProject()); - if (question == null) { - MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("tree.null")); - return; - } - TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID); + public void perform(AnActionEvent anActionEvent, Config config, TimerBarWidget timerBarWidget, Question question) { timerBarWidget.startTimer(question.getTitle()); } } diff --git a/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StopTimeAction.java b/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StopTimeAction.java index 0e939ebe..16cee06b 100644 --- a/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StopTimeAction.java +++ b/src/main/java/com/shuzijun/leetcode/plugin/actions/editor/StopTimeAction.java @@ -1,36 +1,17 @@ package com.shuzijun.leetcode.plugin.actions.editor; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.wm.WindowManager; -import com.shuzijun.leetcode.plugin.actions.AbstractAsynAction; -import com.shuzijun.leetcode.plugin.manager.ViewManager; +import com.shuzijun.leetcode.plugin.actions.AbstractTimeAction; import com.shuzijun.leetcode.plugin.model.Config; -import com.shuzijun.leetcode.plugin.model.LeetcodeEditor; import com.shuzijun.leetcode.plugin.model.Question; -import com.shuzijun.leetcode.plugin.setting.ProjectConfig; import com.shuzijun.leetcode.plugin.timer.TimerBarWidget; -import com.shuzijun.leetcode.plugin.utils.MessageUtils; -import com.shuzijun.leetcode.plugin.utils.PropertiesUtils; /** * @author shuzijun */ -public class StopTimeAction extends AbstractAsynAction { +public class StopTimeAction extends AbstractTimeAction { @Override - public void perform(AnActionEvent anActionEvent, Config config) { - VirtualFile vf = anActionEvent.getData(PlatformDataKeys.VIRTUAL_FILE); - LeetcodeEditor leetcodeEditor = ProjectConfig.getInstance(anActionEvent.getProject()).getEditor(vf.getPath()); - if (leetcodeEditor == null) { - return; - } - Question question = ViewManager.getQuestionById(leetcodeEditor.getQuestionId(), anActionEvent.getProject()); - if (question == null) { - MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("tree.null")); - return; - } - TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID); + public void perform(AnActionEvent anActionEvent, Config config, TimerBarWidget timerBarWidget, Question question) { timerBarWidget.stopTimer(); } } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 598e1add..c213800a 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -1,7 +1,7 @@ leetcode-editor leetcode editor - 6.1 + 6.2 shuzijun +
  • v6.2
    + 1.修复计时器显示错误.
    + 2.修复提交问题时异常.
    + 3.修复IDE低版本部分功能不支持出现异常
    +
  • +
  • v6.2
    + 1.fix wrong minute elapsed of timer.
    + 2.Fix the submit failure prompt.
    + 3.Fix IDE low version exception
    +
  • v6.1
    1.增加 Editor 右键菜单.
    2.增加 Bash SQL 支持.