package org.activityinfo.ui.client.page.home;
import com.google.common.base.Strings;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.HTMLPanel;
import org.activityinfo.core.shared.application.FolderClass;
import org.activityinfo.model.form.FormInstance;
import org.activityinfo.ui.client.component.list.ListItemRenderer;
import org.activityinfo.ui.client.page.NavigationCallback;
import org.activityinfo.ui.client.page.Page;
import org.activityinfo.ui.client.page.PageId;
import org.activityinfo.ui.client.page.PageState;
import org.activityinfo.ui.client.pageView.IconStyleProvider;
import java.util.List;
/**
* Page that shows a list of root folder accessible by the user
*/
public class HomePage implements Page {
public static final PageId PAGE_ID = new PageId("home");
private final HTMLPanel panel;
interface RootPageUiBinder extends UiBinder<HTMLPanel, HomePage> {
}
private static RootPageUiBinder ourUiBinder = GWT.create(RootPageUiBinder.class);
@UiField DivElement folderListElement;
public HomePage(List<FormInstance> rootItems) {
panel = ourUiBinder.createAndBindUi(this);
ListItemRenderer renderer = GWT.create(ListItemRenderer.class);
SafeHtmlBuilder html = new SafeHtmlBuilder();
for (FormInstance instance : rootItems) {
renderer.render(html,
IconStyleProvider.getIconStyleForFormClass(instance.getClassId()),
instance.getString(FolderClass.LABEL_FIELD_ID),
Strings.nullToEmpty(instance.getString(FolderClass.DESCRIPTION_FIELD_ID)),
"#i/" + instance.getId().asString());
}
folderListElement.setInnerSafeHtml(html.toSafeHtml());
}
@Override
public PageId getPageId() {
return PAGE_ID;
}
@Override
public Object getWidget() {
return panel;
}
@Override
public void requestToNavigateAway(PageState place, NavigationCallback callback) {
callback.onDecided(true);
}
@Override
public String beforeWindowCloses() {
return null;
}
@Override
public boolean navigate(PageState place) {
return false;
}
@Override
public void shutdown() {
}
}