20
20
import java .util .Collections ;
21
21
import java .util .Iterator ;
22
22
import java .util .List ;
23
+ import java .util .Locale ;
23
24
24
25
import org .apache .wicket .PageParameters ;
25
26
import org .apache .wicket .behavior .SimpleAttributeModifier ;
26
27
import org .apache .wicket .extensions .markup .html .form .palette .Palette ;
27
28
import org .apache .wicket .markup .html .form .Button ;
28
29
import org .apache .wicket .markup .html .form .CheckBox ;
30
+ import org .apache .wicket .markup .html .form .DropDownChoice ;
29
31
import org .apache .wicket .markup .html .form .Form ;
30
32
import org .apache .wicket .markup .html .form .TextField ;
31
33
import org .apache .wicket .model .CompoundPropertyModel ;
34
+ import org .apache .wicket .model .IModel ;
32
35
import org .apache .wicket .model .Model ;
33
36
import org .apache .wicket .model .util .CollectionModel ;
34
37
import org .apache .wicket .model .util .ListModel ;
@@ -108,6 +111,30 @@ protected void setupPage(final UserModel userModel) {
108
111
final Palette <String > teams = new Palette <String >("teams" , new ListModel <String >(
109
112
new ArrayList <String >(userTeams )), new CollectionModel <String >(app ().users ()
110
113
.getAllTeamNames ()), new StringChoiceRenderer (), 10 , false );
114
+ Locale locale = userModel .getPreferences ().getLocale ();
115
+ if (locale == null ) {
116
+ locale = Locale .ENGLISH ;
117
+ }
118
+
119
+ List <Language > languages = UserPage .getLanguages ();
120
+ Language preferredLanguage = null ;
121
+ if (locale != null ) {
122
+ String localeCode = locale .getLanguage ();
123
+ if (!StringUtils .isEmpty (locale .getCountry ())) {
124
+ localeCode += "_" + locale .getCountry ();
125
+ }
126
+
127
+ for (Language lang : languages ) {
128
+ if (lang .code .equals (localeCode )) {
129
+ // language_COUNTRY match
130
+ preferredLanguage = lang ;
131
+ } else if (preferredLanguage != null && lang .code .startsWith (locale .getLanguage ())) {
132
+ // language match
133
+ preferredLanguage = lang ;
134
+ }
135
+ }
136
+ }
137
+ final IModel <Language > language = Model .of (preferredLanguage );
111
138
Form <UserModel > form = new Form <UserModel >("editForm" , model ) {
112
139
113
140
private static final long serialVersionUID = 1L ;
@@ -123,6 +150,10 @@ protected void onSubmit() {
123
150
error (getString ("gb.pleaseSetUsername" ));
124
151
return ;
125
152
}
153
+ Language lang = language .getObject ();
154
+ if (lang != null ) {
155
+ userModel .getPreferences ().setLocale (lang .code );
156
+ }
126
157
// force username to lower-case
127
158
userModel .username = userModel .username .toLowerCase ();
128
159
String username = userModel .username ;
@@ -251,7 +282,10 @@ protected void onSubmit() {
251
282
form .add (confirmPasswordField .setEnabled (editCredentials ));
252
283
form .add (new TextField <String >("displayName" ).setEnabled (editDisplayName ));
253
284
form .add (new TextField <String >("emailAddress" ).setEnabled (editEmailAddress ));
285
+
254
286
287
+ DropDownChoice <Language > choice = new DropDownChoice <Language >("language" ,language ,languages );
288
+ form .add ( choice .setEnabled (languages .size ()>0 ) );
255
289
if (userModel .canAdmin () && !userModel .canAdmin ) {
256
290
// user inherits Admin permission
257
291
// display a disabled-yet-checked checkbox
0 commit comments