use last subtask index instead of subtask number
authorLiana.Bakradze <liana.bakradze@jetbrains.com>
Wed, 26 Oct 2016 16:49:20 +0000 (19:49 +0300)
committerliana.bakradze <liana.bakradze@jetbrains.com>
Thu, 17 Nov 2016 14:08:34 +0000 (17:08 +0300)
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCSubtaskEditorNotificationProvider.java
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCNewSubtaskAction.java
python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java
python/educational-core/student/src/com/jetbrains/edu/learning/courseFormat/Task.java
python/educational-core/student/src/com/jetbrains/edu/learning/projectView/TaskDirectoryNode.java
python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCLanguageManager.java

index f56dddc7e6858cec736308e37296df79b2235ea1..b049e851fef573656692dde3ae8fff0421040fb0 100644 (file)
@@ -66,10 +66,11 @@ public class CCSubtaskEditorNotificationProvider extends EditorNotifications.Pro
     };
     String header = isTestFile ? "test" : "task file";
     int activeSubtaskIndex = task.getActiveSubtaskIndex() + 1;
-    panel.setText("This is " + header + " for " + EduNames.SUBTASK + " " + activeSubtaskIndex + "/" + task.getSubtaskNum());
+    int subtaskSize = task.getLastSubtaskIndex() + 1;
+    panel.setText("This is " + header + " for " + EduNames.SUBTASK + " " + activeSubtaskIndex + "/" + subtaskSize);
     panel.createActionLabel(SWITCH_SUBTASK, () -> {
       ArrayList<Integer> values = new ArrayList<>();
-      for (int i = 0; i < task.getSubtaskNum(); i++) {
+      for (int i = 0; i <= task.getLastSubtaskIndex(); i++) {
         values.add(i);
       }
       values.add(ADD_SUBTASK_ID);
@@ -155,7 +156,7 @@ public class CCSubtaskEditorNotificationProvider extends EditorNotifications.Pro
         if (selectedValue.equals(SELECT)) {
           StudySubtaskUtils.switchStep(myProject, myTask, mySubtaskIndex);
         } else {
-          if (mySubtaskIndex != myTask.getSubtaskNum() - 1) {
+          if (mySubtaskIndex != myTask.getLastSubtaskIndex()) {
             //TODO: implement
           } else {
             //TODO: delete last subtask
index 4e224d258f5e18a0911a2304156a58b4405f67f6..11581f3d8830b75b0131d69afd8b41feda0581b8 100644 (file)
@@ -60,9 +60,9 @@ public class CCNewSubtaskAction extends DumbAwareAction {
       return;
     }
     createTestsForNewSubtask(project, task);
-    int num = task.getSubtaskNum();
+    int num = task.getLastSubtaskIndex() + 1;
     createTaskDescriptionFile(project, taskDir, num);
-    task.setSubtaskNum(num + 1);
+    task.setLastSubtaskIndex(num);
     StudySubtaskUtils.switchStep(project, task, num);
   }
 
index b38f438a078dca52f122d385b4799138c0ef08d1..cf054406f5d8f6fbc39324c348251d1bbb17ad0e 100644 (file)
@@ -189,10 +189,12 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun
           });
       }
       else {
-        boolean hasMoreSubtasks = myTask.hasSubtasks() && myTask.getActiveSubtaskIndex() != myTask.getSubtaskNum() - 1;
+        boolean hasMoreSubtasks = myTask.hasSubtasks() && myTask.getActiveSubtaskIndex() != myTask.getLastSubtaskIndex();
         int visibleSubtaskIndex = myTask.getActiveSubtaskIndex() + 1;
         ApplicationManager.getApplication().invokeLater(() -> {
-          String resultMessage = !hasMoreSubtasks ? message : "Subtask " + visibleSubtaskIndex + "/" + myTask.getSubtaskNum() + " solved";
+          int subtaskSize = myTask.getLastSubtaskIndex() + 1;
+          String resultMessage = !hasMoreSubtasks ? message : "Subtask " + visibleSubtaskIndex + "/" +
+                                                              subtaskSize + " solved";
           StudyCheckUtils.showTestResultPopUp(resultMessage, MessageType.INFO.getPopupBackground(), myProject);
           if (hasMoreSubtasks) {
             int nextSubtaskIndex = myTask.getActiveSubtaskIndex() + 1;
index d16950df17ae6ac27c3330747e9c3d0a6b9e59a2..81512cb9ac0b0f95cc5a794f2c32f41971e3f189 100644 (file)
@@ -43,7 +43,7 @@ public class Task implements StudyItem {
   @Expose @SerializedName("update_date") private Date myUpdateDate;
 
   private int myActiveSubtaskIndex = 0;
-  @Expose private int mySubtaskNum = 1;
+  @Expose private int myLastSubtaskIndex = 0;
 
   public Task() {}
 
@@ -230,7 +230,7 @@ public class Task implements StudyItem {
         placeholder.setStatus(status);
       }
     }
-    if (status == StudyStatus.Solved && hasSubtasks() && getActiveSubtaskIndex() != getSubtaskNum() - 1) {
+    if (status == StudyStatus.Solved && hasSubtasks() && getActiveSubtaskIndex() != getLastSubtaskIndex()) {
       return;
     }
     myStatus = status;
@@ -270,15 +270,15 @@ public class Task implements StudyItem {
     myActiveSubtaskIndex = activeSubtaskIndex;
   }
 
-  public int getSubtaskNum() {
-    return mySubtaskNum;
+  public int getLastSubtaskIndex() {
+    return myLastSubtaskIndex;
   }
 
-  public void setSubtaskNum(int subtaskNum) {
-    mySubtaskNum = subtaskNum;
+  public void setLastSubtaskIndex(int lastSubtaskIndex) {
+    myLastSubtaskIndex = lastSubtaskIndex;
   }
 
   public boolean hasSubtasks() {
-    return mySubtaskNum > 1;
+    return myLastSubtaskIndex > 0;
   }
 }
index 2f092a206b1323b7e6affa81da2d75583955f6e4..22577d618fa20ff48e4498a1b33ee33a2044ed4c 100644 (file)
@@ -57,7 +57,8 @@ public class TaskDirectoryNode extends StudyDirectoryNode {
 
   private String getSubtaskInfo() {
     int index = myTask.getActiveSubtaskIndex() + 1;
-    return EduNames.SUBTASK + " " + index + "/" + myTask.getSubtaskNum();
+    int subtasksNum = myTask.getLastSubtaskIndex() + 1;
+    return EduNames.SUBTASK + " " + index + "/" + subtasksNum;
   }
 
   @Override
index d0c342227b94f3ad0775ae416f59f9631b0f2d1d..6748590975f13c553b5ef9cbcab21f71b30969db 100644 (file)
@@ -70,7 +70,7 @@ public class PyCCLanguageManager implements CCLanguageManager {
       return;
     }
 
-    int prevSubtaskIndex = task.getSubtaskNum() - 1;
+    int prevSubtaskIndex = task.getLastSubtaskIndex();
     String name = prevSubtaskIndex == 0 ? EduNames.TESTS_FILE : getSubtaskTestsFileName(prevSubtaskIndex);
     VirtualFile testsFile = taskDir.findChild(name);
     if (testsFile == null) {