org.jresearch.commons.gwt.client.model.localization.L18nStoreWithLoader Maven / Gradle / Ivy
package org.jresearch.commons.gwt.client.model.localization;
import java.util.List;
import org.fusesource.restygwt.client.Method;
import org.fusesource.restygwt.client.MethodCallback;
import org.fusesource.restygwt.client.REST;
import org.jresearch.commons.gwt.client.service.LocalizationRestService;
import org.jresearch.commons.gwt.shared.model.localization.LocaleModel;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.sencha.gxt.data.client.loader.RpcProxy;
import com.sencha.gxt.data.shared.loader.ListLoadConfig;
import com.sencha.gxt.data.shared.loader.ListLoadResult;
import com.sencha.gxt.data.shared.loader.ListLoadResultBean;
import com.sencha.gxt.data.shared.loader.ListLoader;
import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding;
@Singleton
public class L18nStoreWithLoader extends L18nStore {
private final ListLoader> loader;
@Inject
public L18nStoreWithLoader(final LocalizationRestService service) {
final RpcProxy> proxy = new RpcProxy>() {
@Override
public void load(final ListLoadConfig loadConfig, final AsyncCallback> callback) {
REST.withCallback(new MethodCallback>() {
@Override
public void onFailure(final Method method, final Throwable exception) {
callback.onFailure(exception);
}
@Override
public void onSuccess(final Method method, final List response) {
callback.onSuccess(new ListLoadResultBean<>(response));
}
}).call(service).getLanguages();
}
};
loader = new ListLoader<>(proxy);
loader.addLoadHandler(new LoadResultListStoreBinding>(this));
}
public ListLoader> getLoader() {
return loader;
}
}