/*******************************************************************************
* Copyright (c) 2012 Dmitry Tikhomirov.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* Dmitry Tikhomirov - initial API and implementation
******************************************************************************/
package org.opensheet.client.widges.combo;
import java.util.List;
import org.opensheet.client.dto.UserDTO;
import org.opensheet.client.services.UserService;
import org.opensheet.client.services.UserServiceAsync;
import org.opensheet.client.utils.Languages;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class LangComboBox extends ComboBox<Languages>{
private ListStore<Languages> store;
private UserServiceAsync userService = GWT.create(UserService.class);
public LangComboBox(String id){
List<Languages> list = Languages.get();
store = new ListStore<Languages>();
store.add(list);
setTriggerAction(TriggerAction.ALL);
setEditable(false);
setWidth(150);
setDisplayField("name");
setName("name");
setStore(store);
setAllowBlank(false);
setTemplate(getFlagTemplate());
setValue(getStore().findModel("id", id));
addSelectionChangedListener(new SelectionChangedListener<Languages>(){
@Override public void selectionChanged(SelectionChangedEvent<Languages> se) {
UserDTO user = (UserDTO) Registry.get("userCurrent");
user.setLang(se.getSelectedItem().getId());
userService.setLang(user, new AsyncCallback<Void>(){
@Override public void onFailure(Throwable caught) {
MessageBox.info("Error",caught.getMessage(),null);
}
@Override public void onSuccess(Void result) {
Window.Location.assign(GWT.getHostPageBaseURL().toString()+"Opensheet.htm");
}
});
}
});
setValue(getStore().findModel("id", id));
}
private native String getFlagTemplate() /*-{
return [
'<tpl for=".">',
'<div class="x-combo-list-item"><img width="16px" height="11px" src="resources/images/flags/{[values.id]}.png"> {[values.name]}</div>',
'</tpl>'
].join("");
}-*/;
public void setLang(String id){
setValue(getStore().findModel("id", id));
}
}