@@ -102,6 +102,8 @@ private Image annotationIconForExericse(Exercise exercise) throws IOException {
102102 private String annotationIconNameForExercise (Exercise exercise ) {
103103 if (exercise .isAttempted () && exercise .isCompleted () && exercise .isAllReviewPointsGiven ()) {
104104 return "green-project-dot.png" ;
105+ } else if (exercise .hasSoftDeadlinePassed ()) {
106+ return "soft-deadline-passed-project-dot.png" ;
105107 } else if (exercise .hasDeadlinePassed ()) {
106108 return "expired-project-dot.png" ;
107109 } else if (exercise .isAttempted () && exercise .isCompleted ()) {
@@ -136,15 +138,23 @@ private String tooltipForExercise(Exercise exercise) {
136138 parts .add ("exercise not yet submitted" );
137139 }
138140
139- final Date deadlineDate = exercise .getDeadlineDate ();
140- if (!exercise .isCompleted () && deadlineDate != null ) {
141- parts .add ("deadline: " + deadlineDate );
141+ final Date softDeadlineDate = exercise .getSoftDeadlineDate ();
142+ if (!exercise .isCompleted () && softDeadlineDate != null ) {
143+ parts .add ("Soft deadline: " + softDeadlineDate );
144+ if (exercise .hasSoftDeadlinePassed ()) {
145+ parts .add ("expired" );
146+ }
147+ }
148+
149+ final Date hardDeadlineDate = exercise .getDeadlineDate ();
150+ if (!exercise .isCompleted () && hardDeadlineDate != null ) {
151+ parts .add ("Hard deadline: " + hardDeadlineDate );
142152 if (exercise .hasDeadlinePassed ()) {
143153 parts .add ("expired" );
144154 }
145155 }
146156
147- return StringUtils .capitalize (StringUtils .join (parts , " - " ));
157+ return StringUtils .capitalize (StringUtils .join (parts , "<br> " ));
148158 }
149159
150160 public void updateAllIcons () {
0 commit comments