continue;
}
ApplicationManager.getApplication().runWriteAction(() -> {
- EduUtils.createStudentFile(CCUtils.class, project, answerFile, studentDir, null);
+ EduUtils.createStudentFile(CCUtils.class, project, answerFile, studentDir, null, task.getActiveSubtaskIndex());
});
}
}
if (answerFile == null) {
continue;
}
- EduUtils.createStudentFile(this, project, answerFile, studentFileDir, task);
+ EduUtils.createStudentFile(this, project, answerFile, studentFileDir, task, 0);
}
}
}
@Override
public void run() {
Pair<VirtualFile, TaskFile> pair =
- EduUtils.createStudentFile(this, project, virtualFile, generatedFilesFolder, null);
+ EduUtils.createStudentFile(this, project, virtualFile, generatedFilesFolder, null, taskFile.getTask().getActiveSubtaskIndex());
if (pair != null) {
showPreviewDialog(project, pair.getFirst(), pair.getSecond());
}
continue;
}
TaskFile taskFile = entry.getValue();
- updatePlaceholderTexts(project, virtualFile, taskFile, fromSubtaskIndex, toSubtaskIndex);
+ Document document = FileDocumentManager.getInstance().getDocument(virtualFile);
+ if (document == null) {
+ continue;
+ }
+ updatePlaceholderTexts(project, document, taskFile, fromSubtaskIndex, toSubtaskIndex);
EditorNotifications.getInstance(project).updateNotifications(virtualFile);
}
task.setActiveSubtaskIndex(toSubtaskIndex);
}
}
- private static void updatePlaceholderTexts(@NotNull Project project,
- @NotNull VirtualFile virtualFile,
+ public static void updatePlaceholderTexts(@NotNull Project project,
+ @NotNull Document document,
@NotNull TaskFile taskFile,
int fromSubtaskIndex,
int toSubtaskIndex) {
- Document document = FileDocumentManager.getInstance().getDocument(virtualFile);
- if (document == null) {
- return;
- }
taskFile.setTrackLengths(false);
for (AnswerPlaceholder placeholder : taskFile.getAnswerPlaceholders()) {
+ AnswerPlaceholderSubtaskInfo fromSubtaskInfo = placeholder.getSubtaskInfos().get(fromSubtaskIndex);
+ if (fromSubtaskIndex == toSubtaskIndex && fromSubtaskInfo != null) {
+ String placeholderText = fromSubtaskInfo.getPlaceholderText();
+ if (placeholderText != null) {
+ EduUtils.replaceAnswerPlaceholder(project, document, placeholder, placeholder.getRealLength(), placeholderText);
+ }
+ continue;
+ }
Set<Integer> indexes = placeholder.getSubtaskInfos().keySet();
Integer minIndex = Collections.min(indexes);
int visibleLength = placeholder.getVisibleLength(fromSubtaskIndex);
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.PsiDirectory;
-import com.intellij.util.containers.ContainerUtil;
+import com.jetbrains.edu.learning.StudySubtaskUtils;
import com.jetbrains.edu.learning.StudyUtils;
import com.jetbrains.edu.learning.courseFormat.*;
import org.jetbrains.annotations.NonNls;
Project project,
VirtualFile answerFile,
VirtualFile parentDir,
- @Nullable Task task) {
+ @Nullable Task task,
+ int toSubtaskIndex) {
VirtualFile studentFile = copyFile(requestor, parentDir, answerFile);
if (studentFile == null) {
}
EduDocumentListener listener = new EduDocumentListener(taskFile, false);
studentDocument.addDocumentListener(listener);
-
- for (AnswerPlaceholder placeholder : taskFile.getActivePlaceholders()) {
- Set<Integer> indexes = placeholder.getSubtaskInfos().keySet();
- int activeSubtaskIndex = task.getActiveSubtaskIndex();
- if (Collections.min(indexes) < activeSubtaskIndex) {
- Integer max = Collections.max(ContainerUtil.filter(indexes, i -> i < activeSubtaskIndex));
- String possibleAnswer = placeholder.getSubtaskInfos().get(max).getPossibleAnswer();
- replaceAnswerPlaceholder(project, studentDocument, placeholder, placeholder.getRealLength(), possibleAnswer);
- continue;
- }
- replaceAnswerPlaceholder(project, studentDocument, placeholder, placeholder.getRealLength(), placeholder.getTaskText());
- }
+ StudySubtaskUtils.updatePlaceholderTexts(project, studentDocument, taskFile, task.getActiveSubtaskIndex(), toSubtaskIndex);
studentDocument.removeDocumentListener(listener);
return Pair.create(studentFile, taskFile);
}
}
String name = entry.getKey();
VirtualFile answerFile = taskDir.findChild(name);
- Pair<VirtualFile, TaskFile> pair = EduUtils.createStudentFile(StepicWrappers.class, project, answerFile, stepicDir, null);
+ Pair<VirtualFile, TaskFile> pair = EduUtils.createStudentFile(StepicWrappers.class, project, answerFile, stepicDir, null, 0);
if (pair == null) {
return;
}