1
1
package org .sakaiproject .gradebookng .tool .panels ;
2
2
3
+ import java .util .ArrayList ;
4
+ import java .util .List ;
5
+
6
+ import org .apache .commons .lang .StringUtils ;
3
7
import org .apache .wicket .ajax .AjaxRequestTarget ;
4
8
import org .apache .wicket .ajax .form .AjaxFormComponentUpdatingBehavior ;
5
9
import org .apache .wicket .ajax .markup .html .form .AjaxCheckBox ;
6
10
import org .apache .wicket .markup .html .WebMarkupContainer ;
11
+ import org .apache .wicket .markup .html .basic .Label ;
7
12
import org .apache .wicket .markup .html .panel .Panel ;
8
13
import org .apache .wicket .model .IModel ;
14
+ import org .apache .wicket .model .Model ;
9
15
import org .apache .wicket .model .PropertyModel ;
10
16
import org .apache .wicket .spring .injection .annot .SpringBean ;
11
17
import org .sakaiproject .gradebookng .business .GradebookNgBusinessService ;
12
18
import org .sakaiproject .gradebookng .tool .model .GbSettings ;
19
+ import org .sakaiproject .service .gradebook .shared .GradebookInformation ;
13
20
14
21
public class SettingsGradeReleasePanel extends Panel {
15
22
@@ -20,6 +27,8 @@ public class SettingsGradeReleasePanel extends Panel {
20
27
21
28
IModel <GbSettings > model ;
22
29
30
+ Label preview ;
31
+
23
32
public SettingsGradeReleasePanel (String id , IModel <GbSettings > model ) {
24
33
super (id , model );
25
34
this .model = model ;
@@ -47,7 +56,8 @@ protected void onUpdate(AjaxRequestTarget target) {
47
56
48
57
@ Override
49
58
protected void onUpdate (AjaxRequestTarget target ) {
50
- //nothing required
59
+ //update preview
60
+ target .add (preview );
51
61
}
52
62
};
53
63
displayCourseGrade .setOutputMarkupId (true );
@@ -72,7 +82,8 @@ public boolean isVisible() {
72
82
73
83
@ Override
74
84
protected void onUpdate (AjaxRequestTarget target ) {
75
- //nothing required
85
+ //update preview
86
+ target .add (preview );
76
87
}
77
88
};
78
89
letterGrade .setOutputMarkupId (true );
@@ -84,7 +95,8 @@ protected void onUpdate(AjaxRequestTarget target) {
84
95
85
96
@ Override
86
97
protected void onUpdate (AjaxRequestTarget target ) {
87
- //nothing required
98
+ //update preview
99
+ target .add (preview );
88
100
}
89
101
};
90
102
percentage .setOutputMarkupId (true );
@@ -96,12 +108,68 @@ protected void onUpdate(AjaxRequestTarget target) {
96
108
97
109
@ Override
98
110
protected void onUpdate (AjaxRequestTarget target ) {
99
- //nothing required
111
+ //update preview
112
+ target .add (preview );
100
113
}
101
114
};
102
115
points .setOutputMarkupId (true );
103
116
courseGradeType .add (points );
104
117
118
+ //preview model, uses settings to determine out what to display
119
+ Model <String > previewModel = new Model <String >() {
120
+ private static final long serialVersionUID = 1L ;
121
+ public String getObject () {
122
+
123
+ List <String > parts = new ArrayList <>();
124
+
125
+ GradebookInformation settings = model .getObject ().getGradebookInformation ();
126
+
127
+ if (settings .isCourseLetterGradeDisplayed ()) {
128
+ parts .add (getString ("settingspage.displaycoursegrade.preview-letter" ));
129
+ }
130
+
131
+ if (settings .isCourseAverageDisplayed ()) {
132
+ if (parts .isEmpty ()) {
133
+ parts .add (getString ("settingspage.displaycoursegrade.preview-percentage-first" ));
134
+ } else {
135
+ parts .add (getString ("settingspage.displaycoursegrade.preview-percentage-second" ));
136
+ }
137
+ }
138
+
139
+ if (settings .isCoursePointsDisplayed ()) {
140
+ if (parts .isEmpty ()) {
141
+ parts .add (getString ("settingspage.displaycoursegrade.preview-points-first" ));
142
+ } else {
143
+ parts .add (getString ("settingspage.displaycoursegrade.preview-points-second" ));
144
+ }
145
+ }
146
+
147
+ if (parts .isEmpty ()) {
148
+ parts .add (getString ("settingspage.displaycoursegrade.preview-none" ));
149
+ }
150
+
151
+ return StringUtils .join (parts , " " );
152
+ }
153
+ };
154
+
155
+ //course grade type container
156
+ final WebMarkupContainer courseGradePreview = new WebMarkupContainer ("courseGradePreview" ) {
157
+ private static final long serialVersionUID = 1L ;
158
+
159
+ @ Override
160
+ public boolean isVisible () {
161
+ return displayCourseGrade .getModelObject ();
162
+ }
163
+
164
+ };
165
+ courseGradePreview .setOutputMarkupPlaceholderTag (true );
166
+ add (courseGradePreview );
167
+
168
+ //preview
169
+ preview = new Label ("preview" , previewModel );
170
+ preview .setOutputMarkupId (true );
171
+ courseGradePreview .add (preview );
172
+
105
173
//behaviour for when the 'display course grade' checkbox is changed
106
174
displayCourseGrade .add (new AjaxFormComponentUpdatingBehavior ("onchange" ) {
107
175
private static final long serialVersionUID = 1L ;
@@ -111,7 +179,9 @@ protected void onUpdate(AjaxRequestTarget target) {
111
179
112
180
boolean checked = displayCourseGrade .getModelObject ();
113
181
courseGradeType .setVisible (checked );
182
+ courseGradePreview .setVisible (checked );
114
183
target .add (courseGradeType );
184
+ target .add (courseGradePreview );
115
185
116
186
}
117
187
});
0 commit comments