package de.swm.mobile.kitchensink.client.showcase.animations;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Widget;
import de.swm.commons.mobile.client.event.SelectionChangedEvent;
import de.swm.commons.mobile.client.widgets.DecoratedListItem;
import de.swm.commons.mobile.client.widgets.HeaderPanel;
import de.swm.commons.mobile.client.widgets.ListItem;
import de.swm.commons.mobile.client.widgets.PagingListPanel;
import de.swm.commons.mobile.client.widgets.PagingListPanel.ListItemProvider;
import de.swm.mobile.kitchensink.client.base.ShowcaseDetailPage;
import de.swm.mobile.kitchensink.client.theme.TestResources;
import java.util.ArrayList;
import java.util.List;
import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseSource;
import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseUiXML;
@ShowcaseSource
@ShowcaseUiXML({"LoadPage.ui.xml"})
public class LoadPage extends ShowcaseDetailPage {
@UiField
PagingListPanel list;
@UiField
HeaderPanel header;
private static LoadPageUiBinder uiBinder = GWT.create(LoadPageUiBinder.class);
interface LoadPageUiBinder extends UiBinder<Widget, LoadPage> {
}
private final TestResources resources;
public LoadPage() {
super(LoadPage.class);
initWidget(uiBinder.createAndBindUi(this));
resources = GWT.create(TestResources.class);
list.setShowLoadingIndicator(true);
list.setPageSize(5);
list.setProvider(new ListItemProvider() {
@Override
public void provideItems(final int startIndex, final int numEntries, final AsyncCallback<List<ListItem>> callback) {
Timer t = new Timer() {
@Override
public void run() {
List<ListItem> result = new ArrayList<ListItem>();
for (int i = 0; i < numEntries; i++) {
DecoratedListItem item = new DecoratedListItem(resources.info(), "Test Entry " + (startIndex + i), "Sub Label " + (startIndex + i));
result.add(item);
}
callback.onSuccess(result);
}
};
if (startIndex == 0) {
t.schedule(10);
} else {
t.schedule(2000);
}
}
});
}
@UiHandler("list")
void onListSelectionChanged(SelectionChangedEvent e) {
switch (e.getSelection()) {
case 0:
break;
case 1:
break;
}
}
@Override
public String getName() {
return "Async loading";
}
@Override
public HeaderPanel getHeaderPanel() {
return header;
}
}