From 34871f44798469ed855b9f5835de9be66e7004d7 Mon Sep 17 00:00:00 2001 From: Valentina Kiryushkina Date: Fri, 21 Jul 2017 19:41:25 +0300 Subject: [PATCH] EDU-1018 Notify recently added listeners: separate notifyListeners method from update updateCourseInfoPanel --- .../newproject/ui/EduCoursesPanel.java | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java b/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java index 7aa34423d129..a65c83e0b56f 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java @@ -133,12 +133,7 @@ public class EduCoursesPanel extends JPanel { myCoursesList.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { - Course selectedCourse = myCoursesList.getSelectedValue(); - if (selectedCourse == null) { - notifyListeners(false); - return; - } - updateCourseInfoPanel(selectedCourse); + processSelectionChanged(); } }); DefaultActionGroup group = new DefaultActionGroup(new AnAction("Import Course", "import local course", AllIcons.ToolbarDecorator.Import) { @@ -219,7 +214,16 @@ public class EduCoursesPanel extends JPanel { } } }); - updateCourseInfoPanel(myCoursesList.getSelectedValue()); + + processSelectionChanged(); + } + + private void processSelectionChanged() { + Course selectedCourse = myCoursesList.getSelectedValue(); + notifyListeners(canStartCourse(selectedCourse)); + if (selectedCourse != null) { + updateCourseInfoPanel(selectedCourse); + } } private void updateCourseInfoPanel(Course selectedCourse) { @@ -230,10 +234,6 @@ public class EduCoursesPanel extends JPanel { myErrorLabel.setText( UIUtil.toHtml("Log in to Stepik " + (selectedCourse.isAdaptive() ? "to start adaptive course" : "to see more courses"))); myErrorLabel.setForeground((selectedCourse.isAdaptive() ? MessageType.ERROR : MessageType.WARNING).getTitleForeground()); - notifyListeners(!selectedCourse.isAdaptive()); - } - else { - notifyListeners(true); } } @@ -424,6 +424,7 @@ public class EduCoursesPanel extends JPanel { public void addCourseValidationListener(CourseValidationListener listener) { myListeners.add(listener); + listener.validationStatusChanged(canStartCourse(myCoursesList.getSelectedValue())); } private void notifyListeners(boolean canStartCourse) { @@ -432,6 +433,18 @@ public class EduCoursesPanel extends JPanel { } } + private static boolean canStartCourse(Course selectedCourse) { + if (selectedCourse == null) { + return false; + } + + if (isLoggedIn()) { + return true; + } + + return !selectedCourse.isAdaptive(); + } + public interface CourseValidationListener { void validationStatusChanged(boolean canStartCourse); }