From 2307d6e64ce9d7253d419439cb2410a568528de2 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 31 Mar 2017 17:25:42 +0300 Subject: [PATCH] fix navigation to next/previous task for empty task list --- .../learning/navigation/StudyNavigator.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/python/educational-core/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java b/python/educational-core/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java index 91b8a0c7aaf8..85b709a9dc63 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/navigation/StudyNavigator.java @@ -41,7 +41,15 @@ public class StudyNavigator { if (nextLesson == null) { return null; } - return StudyUtils.getFirst(nextLesson.getTaskList()); + List nextLessonTaskList = nextLesson.getTaskList(); + while (nextLessonTaskList.isEmpty()) { + nextLesson = nextLesson(nextLesson); + if (nextLesson == null) { + return null; + } + nextLessonTaskList = nextLesson.getTaskList(); + } + return StudyUtils.getFirst(nextLessonTaskList); } public static Task previousTask(@NotNull final Task task) { @@ -55,7 +63,15 @@ public class StudyNavigator { return null; } //getting last task in previous lesson - return prevLesson.getTaskList().get(prevLesson.getTaskList().size() - 1); + List prevLessonTaskList = prevLesson.getTaskList(); + while (prevLessonTaskList.isEmpty()) { + prevLesson = previousLesson(prevLesson); + if (prevLesson == null) { + return null; + } + prevLessonTaskList = prevLesson.getTaskList(); + } + return prevLessonTaskList.get(prevLessonTaskList.size() - 1); } public static Lesson nextLesson(@NotNull final Lesson lesson) {