/** * Sencha GXT 3.0.0b - Sencha for GWT * Copyright(c) 2007-2012, Sencha, Inc. * licensing@sencha.com * * http://www.sencha.com/products/gxt/license/ */ package com.sencha.gxt.explorer.client.app.ui; import com.google.gwt.core.client.GWT; import com.google.gwt.event.logical.shared.SelectionEvent; import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.gwt.place.shared.PlaceController; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.text.shared.AbstractSafeHtmlRenderer; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; import com.sencha.gxt.cell.core.client.SimpleSafeHtmlCell; import com.sencha.gxt.core.client.IdentityValueProvider; import com.sencha.gxt.core.client.XTemplates; import com.sencha.gxt.core.client.resources.CommonStyles; import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.explorer.client.app.place.ExamplePlace; import com.sencha.gxt.explorer.client.model.Example; import com.sencha.gxt.explorer.client.model.Example.Detail; import com.sencha.gxt.explorer.client.model.ExampleModel; import com.sencha.gxt.widget.core.client.ListView; import com.sencha.gxt.widget.core.client.ListViewCustomAppearance; import com.sencha.gxt.widget.core.client.container.SimpleContainer; @Detail(name = "Overview", icon = "overview", category = "overview", fit = true) public class OverviewExample implements IsWidget { public interface Renderer extends XTemplates { @XTemplate(source = "template.html") public SafeHtml renderItem(Example items); } private SimpleContainer overview = new SimpleContainer(); private ListStore<Example> overviewStore = new ListStore<Example>(Example.KP); private ListView<Example, Example> overviewView; private PlaceController placeController; @Override public Widget asWidget() { final Renderer r = GWT.create(Renderer.class); ListViewCustomAppearance<Example> appearance = new ListViewCustomAppearance<Example>(".sample-box", "sample-over", "none") { @Override public void renderEnd(SafeHtmlBuilder builder) { String markup = new StringBuilder("<div class=\"").append(CommonStyles.get().clear()).append("\"></div>").toString(); builder.appendHtmlConstant(markup); } @Override public void renderItem(SafeHtmlBuilder builder, SafeHtml content) { builder.appendHtmlConstant("<div class='sample-box' style='padding-top: 4px; border: none'>"); builder.append(content); builder.appendHtmlConstant("</div>"); } }; overviewView = new ListView<Example, Example>(overviewStore, new IdentityValueProvider<Example>() { @Override public void setValue(Example object, Example value) { } }, appearance); overviewView.setCell(new SimpleSafeHtmlCell<Example>(new AbstractSafeHtmlRenderer<Example>() { @Override public SafeHtml render(Example object) { return r.renderItem(object); } })); overviewView.addStyleName("overview-page"); overviewView.setBorders(false); overviewView.getSelectionModel().addSelectionHandler(new SelectionHandler<Example>() { @Override public void onSelection(SelectionEvent<Example> event) { if (event.getSelectedItem() != null) { placeController.goTo(new ExamplePlace(event.getSelectedItem().getId())); overviewView.getSelectionModel().deselectAll(); } } }); overview.add(overviewView); return overview; } public void loadData(ExampleModel exampleModel) { overviewStore.addAll(exampleModel.getExamplesAsList()); } public void onModuleLoad() { RootPanel.get().add(asWidget()); } public void setPlaceController(PlaceController placeController) { this.placeController = placeController; } }