mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
get rid of lessonInfo completely
This commit is contained in:
+4
-4
@@ -205,7 +205,7 @@ public class StudyCheckAction extends DumbAwareAction {
|
||||
@Override
|
||||
public void onCancel() {
|
||||
StudyStatus currentStatus = task.getStatus();
|
||||
task.setStatus(statusBeforeCheck, currentStatus);
|
||||
task.setStatus(statusBeforeCheck);
|
||||
deleteWindowDescriptions(task, taskDir);
|
||||
selectedEditor.getCheckButton().setEnabled(true);
|
||||
}
|
||||
@@ -226,7 +226,7 @@ public class StudyCheckAction extends DumbAwareAction {
|
||||
}
|
||||
final String failedMessage = testRunner.getTestsOutput(output);
|
||||
if (StudyTestRunner.TEST_OK.equals(failedMessage)) {
|
||||
task.setStatus(StudyStatus.Solved, statusBeforeCheck);
|
||||
task.setStatus(StudyStatus.Solved);
|
||||
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -239,12 +239,12 @@ public class StudyCheckAction extends DumbAwareAction {
|
||||
@Override
|
||||
public void run() {
|
||||
if (taskDir == null) return;
|
||||
task.setStatus(StudyStatus.Failed, statusBeforeCheck);
|
||||
task.setStatus(StudyStatus.Failed);
|
||||
for (Map.Entry<String, TaskFile> entry : taskFiles.entrySet()) {
|
||||
final String name = entry.getKey();
|
||||
final TaskFile taskFile = entry.getValue();
|
||||
if (taskFile.getAnswerPlaceholders().size() < 2) {
|
||||
taskFile.setStatus(StudyStatus.Failed, StudyStatus.Unchecked);
|
||||
taskFile.setStatus(StudyStatus.Failed);
|
||||
continue;
|
||||
}
|
||||
CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() {
|
||||
|
||||
+5
-10
@@ -21,8 +21,10 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.problems.WolfTheProblemSolver;
|
||||
import com.jetbrains.edu.StudyNames;
|
||||
import com.jetbrains.edu.courseFormat.*;
|
||||
import com.jetbrains.edu.courseFormat.info.LessonInfo;
|
||||
import com.jetbrains.edu.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.StudyAnswerPlaceholderPainter;
|
||||
import com.jetbrains.edu.learning.StudyState;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
@@ -86,10 +88,9 @@ public class StudyRefreshTaskFileAction extends DumbAwareAction {
|
||||
if (!resetDocument(project, document, taskFile, name)) {
|
||||
return false;
|
||||
}
|
||||
updateLessonInfo(taskFile.getTask());
|
||||
StudyUtils.updateStudyToolWindow(project);
|
||||
resetTaskWindows(taskFile);
|
||||
ProjectView.getInstance(project).refresh();
|
||||
StudyUtils.updateStudyToolWindow(project);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -109,12 +110,6 @@ public class StudyRefreshTaskFileAction extends DumbAwareAction {
|
||||
}
|
||||
}
|
||||
|
||||
private static void updateLessonInfo(Task currentTask) {
|
||||
StudyStatus oldStatus = currentTask.getStatus();
|
||||
LessonInfo lessonInfo = currentTask.getLesson().getLessonInfo();
|
||||
lessonInfo.update(oldStatus, -1);
|
||||
lessonInfo.update(StudyStatus.Unchecked, +1);
|
||||
}
|
||||
|
||||
private static boolean resetDocument(@NotNull final Project project,
|
||||
@NotNull final Document document,
|
||||
|
||||
-4
@@ -6,7 +6,6 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.jetbrains.edu.StudyNames;
|
||||
import com.jetbrains.edu.courseFormat.*;
|
||||
import com.jetbrains.edu.courseFormat.info.LessonInfo;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -136,10 +135,7 @@ public class StudyGenerator {
|
||||
|
||||
public static void initLesson(@NotNull final Lesson lesson, final Course course, boolean isRestarted) {
|
||||
lesson.setCourse(course);
|
||||
final LessonInfo info = lesson.getLessonInfo();
|
||||
final List<Task> taskList = lesson.getTaskList();
|
||||
info.setTaskNum(taskList.size());
|
||||
info.setTaskUnchecked(taskList.size());
|
||||
for (Task task : taskList) {
|
||||
initTask(task, lesson, isRestarted);
|
||||
}
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ public class StudySmartChecker {
|
||||
final CapturingProcessHandler handler = new CapturingProcessHandler(smartTestProcess);
|
||||
final ProcessOutput output = handler.runProcess();
|
||||
boolean res = testRunner.getTestsOutput(output).equals(StudyTestRunner.TEST_OK);
|
||||
userAnswerPlaceholder.setStatus(res ? StudyStatus.Solved : StudyStatus.Failed, StudyStatus.Unchecked);
|
||||
userAnswerPlaceholder.setStatus(res ? StudyStatus.Solved : StudyStatus.Failed);
|
||||
StudyUtils.deleteFile(windowCopy);
|
||||
if (fileWindows != null) {
|
||||
StudyUtils.deleteFile(fileWindows);
|
||||
|
||||
+13
-4
@@ -10,7 +10,7 @@ import com.intellij.util.ui.UIUtil;
|
||||
import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.info.LessonInfo;
|
||||
import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -50,9 +50,8 @@ public class StudyToolWindowFactory implements ToolWindowFactory, DumbAware {
|
||||
if (lesson.getStatus() == StudyStatus.Solved) {
|
||||
lessonsCompleted++;
|
||||
}
|
||||
LessonInfo lessonInfo = lesson.getLessonInfo();
|
||||
taskNum += lessonInfo.getTaskNum();
|
||||
taskSolved += lessonInfo.getTaskSolved();
|
||||
taskNum += lesson.getTaskList().size();
|
||||
taskSolved += getTaskSolved(lesson);
|
||||
}
|
||||
String completedLessons = String.format("%d of %d lessons completed", lessonsCompleted, course.getLessons().size());
|
||||
String completedTasks = String.format("%d of %d tasks completed", taskSolved, taskNum);
|
||||
@@ -72,6 +71,16 @@ public class StudyToolWindowFactory implements ToolWindowFactory, DumbAware {
|
||||
}
|
||||
}
|
||||
|
||||
private static int getTaskSolved(@NotNull final Lesson lesson) {
|
||||
int solved = 0;
|
||||
for (Task task : lesson.getTaskList()) {
|
||||
if (task.getStatus() == StudyStatus.Solved) {
|
||||
solved += 1;
|
||||
}
|
||||
}
|
||||
return solved;
|
||||
}
|
||||
|
||||
private static void addStatistics(String statistics, JPanel contentPanel) {
|
||||
String labelText = UIUtil.toHtml(statistics, 5);
|
||||
contentPanel.add(Box.createRigidArea(new Dimension(0, 10)));
|
||||
|
||||
@@ -16,6 +16,7 @@ public class AnswerPlaceholder implements Comparable, StudyStateful {
|
||||
@Expose private int line = 0;
|
||||
@Expose private int start = 0;
|
||||
@Expose private String hint = "";
|
||||
|
||||
@SerializedName("possible_answer")
|
||||
@Expose private String possibleAnswer = "";
|
||||
@Expose private int length = 0;
|
||||
@@ -24,14 +25,13 @@ public class AnswerPlaceholder implements Comparable, StudyStateful {
|
||||
private String myTaskText;
|
||||
private MyInitialState myInitialState;
|
||||
|
||||
|
||||
@Transient private TaskFile myTaskFile;
|
||||
|
||||
public StudyStatus getStatus() {
|
||||
return myStatus;
|
||||
}
|
||||
|
||||
public void setStatus(StudyStatus status, StudyStatus oldStatus) {
|
||||
public void setStatus(StudyStatus status) {
|
||||
myStatus = status;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.jetbrains.edu.courseFormat;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.intellij.util.xmlb.annotations.Transient;
|
||||
import com.jetbrains.edu.courseFormat.info.LessonInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -24,8 +23,6 @@ public class Lesson implements StudyStateful {
|
||||
@Transient
|
||||
private Course myCourse = null;
|
||||
private int myIndex = -1;
|
||||
private LessonInfo myLessonInfo = new LessonInfo();
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
@@ -43,10 +40,6 @@ public class Lesson implements StudyStateful {
|
||||
myIndex = index;
|
||||
}
|
||||
|
||||
public LessonInfo getLessonInfo() {
|
||||
return myLessonInfo;
|
||||
}
|
||||
|
||||
@Transient
|
||||
public StudyStatus getStatus() {
|
||||
for (Task task : taskList) {
|
||||
@@ -59,9 +52,9 @@ public class Lesson implements StudyStateful {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStatus(StudyStatus status, StudyStatus oldStatus) {
|
||||
public void setStatus(StudyStatus status) {
|
||||
for (Task task : taskList) {
|
||||
task.setStatus(status, oldStatus);
|
||||
task.setStatus(status);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,5 +2,5 @@ package com.jetbrains.edu.courseFormat;
|
||||
|
||||
public interface StudyStateful {
|
||||
StudyStatus getStatus();
|
||||
void setStatus(StudyStatus status, StudyStatus oldStatus);
|
||||
void setStatus(StudyStatus status);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.xmlb.annotations.Transient;
|
||||
import com.jetbrains.edu.StudyNames;
|
||||
import com.jetbrains.edu.courseFormat.info.LessonInfo;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -80,14 +79,9 @@ public class Task implements StudyStateful {
|
||||
return StudyStatus.Solved;
|
||||
}
|
||||
|
||||
public void setStatus(@NotNull final StudyStatus status, @NotNull final StudyStatus oldStatus) {
|
||||
LessonInfo lessonInfo = myLesson.getLessonInfo();
|
||||
if (status != oldStatus) {
|
||||
lessonInfo.update(oldStatus, -1);
|
||||
lessonInfo.update(status, +1);
|
||||
}
|
||||
public void setStatus(@NotNull final StudyStatus status) {
|
||||
for (TaskFile taskFile : taskFiles.values()) {
|
||||
taskFile.setStatus(status, oldStatus);
|
||||
taskFile.setStatus(status);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@ public class TaskFile implements StudyStateful {
|
||||
return StudyStatus.Solved;
|
||||
}
|
||||
|
||||
public void setStatus(@NotNull final StudyStatus status, @NotNull final StudyStatus oldStatus) {
|
||||
public void setStatus(@NotNull final StudyStatus status) {
|
||||
for (AnswerPlaceholder answerPlaceholder : myAnswerPlaceholders) {
|
||||
answerPlaceholder.setStatus(status, oldStatus);
|
||||
answerPlaceholder.setStatus(status);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
package com.jetbrains.edu.courseFormat.info;
|
||||
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
|
||||
/**
|
||||
* Implementation of class which contains information about student progress in current lesson
|
||||
*/
|
||||
public class LessonInfo {
|
||||
private int myTaskNum;
|
||||
private int myTaskFailed;
|
||||
private int myTaskSolved;
|
||||
private int myTaskUnchecked;
|
||||
|
||||
public int getTaskNum() {
|
||||
return myTaskNum;
|
||||
}
|
||||
|
||||
public void setTaskNum(int taskNum) {
|
||||
myTaskNum = taskNum;
|
||||
}
|
||||
|
||||
public int getTaskFailed() {
|
||||
return myTaskFailed;
|
||||
}
|
||||
|
||||
public void setTaskFailed(int taskFailed) {
|
||||
myTaskFailed = taskFailed;
|
||||
}
|
||||
|
||||
public int getTaskSolved() {
|
||||
return myTaskSolved;
|
||||
}
|
||||
|
||||
public void setTaskSolved(int taskSolved) {
|
||||
myTaskSolved = taskSolved;
|
||||
}
|
||||
|
||||
public int getTaskUnchecked() {
|
||||
return myTaskUnchecked;
|
||||
}
|
||||
|
||||
public void setTaskUnchecked(int taskUnchecked) {
|
||||
myTaskUnchecked = taskUnchecked;
|
||||
}
|
||||
|
||||
public void update(StudyStatus status, int delta) {
|
||||
switch (status) {
|
||||
case Solved: {
|
||||
myTaskSolved += delta;
|
||||
break;
|
||||
}
|
||||
case Failed: {
|
||||
myTaskFailed += delta;
|
||||
break;
|
||||
}
|
||||
case Unchecked: {
|
||||
myTaskUnchecked += delta;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user