Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
import com.shuzijun.leetcode.plugin.model.Config;
import com.shuzijun.leetcode.plugin.setting.PersistentConfig;
import com.shuzijun.leetcode.plugin.setting.SettingConfigurable;
Expand All @@ -11,6 +14,7 @@
import com.shuzijun.leetcode.plugin.utils.PropertiesUtils;
import com.shuzijun.leetcode.plugin.utils.UpdateUtils;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;

/**
* @author shuzijun
Expand All @@ -34,8 +38,13 @@ public void actionPerformed(AnActionEvent anActionEvent) {
} catch (Exception e) {
}

ProgressManager.getInstance().run(new Task.Backgroundable(anActionEvent.getProject(),anActionEvent.getActionManager().getId(this),false) {
@Override
public void run(@NotNull ProgressIndicator progressIndicator) {
actionPerformed(anActionEvent, config);
}
});

actionPerformed(anActionEvent, config);
}

public abstract void actionPerformed(AnActionEvent anActionEvent, Config config);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
package com.shuzijun.leetcode.plugin.actions;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.shuzijun.leetcode.plugin.model.Config;

/**
* @author shuzijun
*/
public abstract class AbstractAsynAction extends AbstractAction {

@Override
public void actionPerformed(AnActionEvent anActionEvent, Config config) {
ApplicationManager.getApplication().executeOnPooledThread(new Runnable() {
@Override
public void run() {
perform(anActionEvent, config);
}
});
}

public abstract void perform(AnActionEvent anActionEvent, Config config);
}
//package com.shuzijun.leetcode.plugin.actions;
//
//import com.intellij.openapi.actionSystem.AnActionEvent;
//import com.intellij.openapi.application.ApplicationManager;
//import com.shuzijun.leetcode.plugin.model.Config;
//
///**
// * @author shuzijun
// */
//public abstract class AbstractAsynAction extends AbstractAction {
//
// @Override
// public void actionPerformed(AnActionEvent anActionEvent, Config config) {
// ApplicationManager.getApplication().executeOnPooledThread(new Runnable() {
// @Override
// public void run() {
// perform(anActionEvent, config);
// }
// });
// }
//
// public abstract void perform(AnActionEvent anActionEvent, Config config);
//}
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
package com.shuzijun.leetcode.plugin.actions.editor;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.shuzijun.leetcode.plugin.model.Config;
import com.shuzijun.leetcode.plugin.model.Question;

/**
* @author shuzijun
*/
public abstract class AbstractEditAsynAction extends AbstractEditAction {

@Override
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
ApplicationManager.getApplication().executeOnPooledThread(new Runnable() {
@Override
public void run() {
perform(anActionEvent, config, question);
}
});
}

public abstract void perform(AnActionEvent anActionEvent, Config config, Question question);
}
//package com.shuzijun.leetcode.plugin.actions.editor;
//
//import com.intellij.openapi.actionSystem.AnActionEvent;
//import com.intellij.openapi.application.ApplicationManager;
//import com.shuzijun.leetcode.plugin.model.Config;
//import com.shuzijun.leetcode.plugin.model.Question;
//
///**
// * @author shuzijun
// */
//public abstract class AbstractEditAsynAction extends AbstractEditAction {
//
// @Override
// public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
// ApplicationManager.getApplication().executeOnPooledThread(new Runnable() {
// @Override
// public void run() {
// perform(anActionEvent, config, question);
// }
// });
// }
//
// public abstract void perform(AnActionEvent anActionEvent, Config config, Question question);
//}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.shuzijun.leetcode.plugin.actions.editor;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.shuzijun.leetcode.plugin.manager.CodeManager;
import com.shuzijun.leetcode.plugin.model.Config;
Expand All @@ -15,11 +14,7 @@ public class OpenContentAction extends AbstractEditAction {
@Override
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
Project project = anActionEvent.getProject();
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
CodeManager.openContent(question, project);
}
});
CodeManager.openContent(question, project);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
/**
* @author shuzijun
*/
public class ResetTimeAction extends AbstractEditAsynAction {
public class ResetTimeAction extends AbstractEditAction {

@Override
public void perform(AnActionEvent anActionEvent, Config config, Question question) {
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID);
if (timerBarWidget != null) {
timerBarWidget.reset();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
/**
* @author shuzijun
*/
public class RunCodeAction extends AbstractEditAsynAction {
public class RunCodeAction extends AbstractEditAction {

@Override
public void perform(AnActionEvent anActionEvent, Config config, Question question) {
CodeManager.RuncodeCode(question, anActionEvent.getProject());
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
CodeManager.RunCodeCode(question, anActionEvent.getProject());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
/**
* @author shuzijun
*/
public class StartTimeAction extends AbstractEditAsynAction {
public class StartTimeAction extends AbstractEditAction {

@Override
public void perform(AnActionEvent anActionEvent, Config config, Question question) {
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID);
if (timerBarWidget != null) {
timerBarWidget.startTimer(question.getTitle());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
/**
* @author shuzijun
*/
public class StopTimeAction extends AbstractEditAsynAction {
public class StopTimeAction extends AbstractEditAction {

@Override
public void perform(AnActionEvent anActionEvent, Config config, Question question) {
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
TimerBarWidget timerBarWidget = (TimerBarWidget) WindowManager.getInstance().getStatusBar(anActionEvent.getProject()).getWidget(TimerBarWidget.ID);
if (timerBarWidget != null) {
timerBarWidget.stopTimer();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package com.shuzijun.leetcode.plugin.actions.editor;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.shuzijun.leetcode.plugin.manager.SubmissionManager;
import com.shuzijun.leetcode.plugin.model.Config;
import com.shuzijun.leetcode.plugin.model.Question;
import com.shuzijun.leetcode.plugin.model.Submission;
import com.shuzijun.leetcode.plugin.window.SubmissionsPanel;

import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

/**
* @author shuzijun
Expand All @@ -20,12 +22,21 @@ public void actionPerformed(AnActionEvent anActionEvent, Config config, Question
if (submissionList == null || submissionList.isEmpty()) {
return;
}
SubmissionsPanel.TableModel tableModel = new SubmissionsPanel.TableModel(submissionList);
SubmissionsPanel dialog = new SubmissionsPanel(anActionEvent.getProject(), tableModel);
dialog.setTitle(question.getFormTitle() + " Submissions");

if (dialog.showAndGet()) {
SubmissionManager.openSubmission(submissionList.get(dialog.getSelectedRow()), question, anActionEvent.getProject());
AtomicReference<Submission> submission = new AtomicReference<>();
ApplicationManager.getApplication().invokeAndWait(()->{
SubmissionsPanel.TableModel tableModel = new SubmissionsPanel.TableModel(submissionList);
SubmissionsPanel dialog = new SubmissionsPanel(anActionEvent.getProject(), tableModel);
dialog.setTitle(question.getFormTitle() + " Submissions");

if (dialog.showAndGet()) {
submission.set(submissionList.get(dialog.getSelectedRow()));

}
});
if(submission.get() !=null){
SubmissionManager.openSubmission(submission.get(), question, anActionEvent.getProject());
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
/**
* @author shuzijun
*/
public class SubmitAction extends AbstractEditAsynAction {
public class SubmitAction extends AbstractEditAction {

@Override
public void perform(AnActionEvent anActionEvent, Config config, Question question) {
public void actionPerformed(AnActionEvent anActionEvent, Config config, Question question) {
CodeManager.SubmitCode(question, anActionEvent.getProject());
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.shuzijun.leetcode.plugin.actions.editor;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.shuzijun.leetcode.plugin.manager.CodeManager;
import com.shuzijun.leetcode.plugin.model.CodeTypeEnum;
import com.shuzijun.leetcode.plugin.model.Config;
Expand All @@ -11,6 +12,8 @@
import com.shuzijun.leetcode.plugin.window.TestcasePanel;
import org.apache.commons.lang.StringUtils;

import java.util.concurrent.atomic.AtomicReference;

/**
* @author shuzijun
*/
Expand All @@ -23,21 +26,23 @@ public void actionPerformed(AnActionEvent anActionEvent, Config config, Question

CodeManager.setTestCaeAndLang(question, codeTypeEnum, anActionEvent.getProject());
}
TestcasePanel dialog = new TestcasePanel(anActionEvent.getProject());
dialog.setTitle(question.getFormTitle() + " Testcase");
dialog.setText(question.getTestCase());
if (dialog.showAndGet()) {
String text = dialog.testcaseText();
if (StringUtils.isBlank(text)) {
AtomicReference<String> text = new AtomicReference<>(TestcaseAction.class.getName());
ApplicationManager.getApplication().invokeAndWait(() -> {
TestcasePanel dialog = new TestcasePanel(anActionEvent.getProject());
dialog.setTitle(question.getFormTitle() + " Testcase");
dialog.setText(question.getTestCase());
if (dialog.showAndGet()) {
text.set(dialog.testcaseText());
}
});
if (!TestcaseAction.class.getName().equals(text.get())) {
if (StringUtils.isBlank(text.get())) {
MessageUtils.getInstance(anActionEvent.getProject()).showWarnMsg("info", PropertiesUtils.getInfo("test.case"));
return;
} else {

question.setTestCase(text);
CodeManager.RuncodeCode(question, anActionEvent.getProject());
question.setTestCase(text.get());
CodeManager.RunCodeCode(question, anActionEvent.getProject());
}


}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.shuzijun.leetcode.plugin.actions.toolbar;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.components.JBPanel;
import com.shuzijun.leetcode.plugin.actions.AbstractAction;
import com.shuzijun.leetcode.plugin.model.Config;
Expand All @@ -23,41 +27,52 @@ public class ClearAllAction extends AbstractAction {
@Override
public void actionPerformed(AnActionEvent anActionEvent, Config config) {

ClearAllWarningPanel dialog = new ClearAllWarningPanel(anActionEvent.getProject());
dialog.setTitle("Clear All");
ApplicationManager.getApplication().invokeAndWait(() -> {
ClearAllWarningPanel dialog = new ClearAllWarningPanel(anActionEvent.getProject());
dialog.setTitle("Clear All");

if (dialog.showAndGet()) {
String filePath = PersistentConfig.getInstance().getTempFilePath();
if (dialog.showAndGet()) {
String filePath = PersistentConfig.getInstance().getTempFilePath();

File file = new File(filePath);
if (!file.exists() || !file.isDirectory()) {
MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("clear.success"));
return;
}
File file = new File(filePath);
if (!file.exists() || !file.isDirectory()) {
MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("clear.success"));
return;
}

try {
delFile(file);
MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("clear.success"));
} catch (Exception ee) {
LogUtils.LOG.error("清理文件错误", ee);
MessageUtils.getInstance(anActionEvent.getProject()).showErrorMsg("error", PropertiesUtils.getInfo("clear.failed"));
try {
delFile(file, anActionEvent.getProject());
MessageUtils.getInstance(anActionEvent.getProject()).showInfoMsg("info", PropertiesUtils.getInfo("clear.success"));
} catch (Exception ee) {
LogUtils.LOG.error("清理文件错误", ee);
MessageUtils.getInstance(anActionEvent.getProject()).showErrorMsg("error", PropertiesUtils.getInfo("clear.failed"));
}
}
}
});

}

public void delFile(File file) {
public void delFile(File file, Project project) {
if (!file.exists()) {
return;
}

if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
delFile(f);
delFile(f, project);
}
}
file.delete();
try {
VirtualFile vf = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file);
if (FileEditorManager.getInstance(project).isFileOpen(vf)) {
FileEditorManager.getInstance(project).closeFile(vf);
}
file.delete();
} catch (Exception e) {
LogUtils.LOG.error("Error deleting file", e);
}

}

private class ClearAllWarningPanel extends DialogWrapper {
Expand Down
Loading