package com.rectang.xsm.pages; import com.rectang.xsm.UserData; import com.rectang.xsm.Theme; import com.rectang.xsm.AccessControl; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.ChoiceRenderer; import org.apache.wicket.model.CompoundPropertyModel; import java.util.*; /** * Created by IntelliJ IDEA. * * @author Andrew Williams * @version $Id: EditPreferences.java 826 2011-09-25 12:17:36Z andy $ * @since 2.0 */ public class EditPreferences extends XSMPage implements Secure { public EditPreferences( PageParameters parameters ) { super( parameters ); } public int getLevel() { return AccessControl.MEMBER; } public void layout() { super.layout(); UserData user = getXSMSession().getUser(); add( new EditPreferences.PreferencesForm( "preferences", user ) ); } class PreferencesForm extends Form { UserData user; public PreferencesForm( String id, UserData user ) { super( id ); this.user = user; setModel( new CompoundPropertyModel( user ) ); add( new ThemeDropDownChoice( "theme" ) ); add( new EditorDropDownChoice( "htmlEditor" ) ); // add(new LangDropDownChoice("locale", getXSMSession())); } public void onSubmit() { if ( user.getLocale() != null ) { this.getSession().setLocale( new Locale( user.getLocale() ) ); } if ( user.save() ) { this.setResponsePage( Preferences.class ); } } } } class ThemeDropDownChoice extends DropDownChoice { public ThemeDropDownChoice( String id ) { super( id, Theme.listThemes() ); } } class EditorDropDownChoice extends DropDownChoice { static Map editors; static { editors = new LinkedHashMap(); editors.put( "tinymce", "TinyMCE - (default) An advanced WYSIWYG HTML editor" ); editors.put( "textarea", "Textarea (advanced) - for editing the HTML source code manually" ); } public EditorDropDownChoice( String id ) { super( id, new LinkedList( editors.keySet() ) ); this.setChoiceRenderer( new EditorRenderer() ); } class EditorRenderer extends ChoiceRenderer { public Object getDisplayValue( Object object ) { return editors.get( object ); } } }