package com.jetbrains.edu.learning.checker;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
import com.jetbrains.edu.learning.stepic.StepicUser;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class StudyTaskChecker<T extends Task> {
@NotNull protected final T myTask;
@NotNull protected final Project myProject;
public StudyTaskChecker(@NotNull T task, @NotNull Project project) {
myTask = task;
myProject = project;
}
public void onTaskSolved(@NotNull String message) {
ApplicationManager.getApplication().invokeLater(
() -> StudyCheckUtils.showTestResultPopUp(message, MessageType.INFO.getPopupBackground(), myProject));
}
public void onTaskFailed(@NotNull String message) {
ApplicationManager.getApplication()
.invokeLater(() -> StudyCheckUtils.showTestResultPopUp(message, MessageType.ERROR.getPopupBackground(), myProject));
}
public StudyCheckResult check() {
return new StudyCheckResult(StudyStatus.Unchecked, "Check for " + myTask.getTaskType() + " task isn't available");
}
public StudyCheckResult checkOnRemote(@Nullable StepicUser user) {
return new StudyCheckResult(StudyStatus.Unchecked, "Remote check for " + myTask.getTaskType() + " task isn't available");
}
public void clearState() {
}
}