/* * Ext GWT - Ext for GWT * Copyright(c) 2007-2009, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.samples.client.examples.view; import java.util.List; import com.extjs.gxt.samples.client.ExampleServiceAsync; import com.extjs.gxt.samples.client.Examples; import com.extjs.gxt.samples.client.examples.model.Photo; import com.extjs.gxt.ui.client.Registry; import com.extjs.gxt.ui.client.data.BaseListLoader; import com.extjs.gxt.ui.client.data.BeanModel; import com.extjs.gxt.ui.client.data.BeanModelReader; import com.extjs.gxt.ui.client.data.ListLoadResult; import com.extjs.gxt.ui.client.data.ListLoader; import com.extjs.gxt.ui.client.data.RpcProxy; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.event.SelectionChangedEvent; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.util.Format; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.ListView; import com.extjs.gxt.ui.client.widget.layout.FlowLayout; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.rpc.AsyncCallback; public class ListViewExample extends LayoutContainer { public ListViewExample() { setLayout(new FlowLayout(10)); } @Override protected void onRender(Element parent, int index) { super.onRender(parent, index); final ExampleServiceAsync service = (ExampleServiceAsync) Registry.get(Examples.SERVICE); RpcProxy<List<Photo>> proxy = new RpcProxy<List<Photo>>() { @Override protected void load(Object loadConfig, AsyncCallback<List<Photo>> callback) { service.getPhotos(callback); } }; ListLoader<ListLoadResult<Photo>> loader = new BaseListLoader<ListLoadResult<Photo>>( proxy, new BeanModelReader()); ListStore<BeanModel> store = new ListStore<BeanModel>(loader); loader.load(); final ContentPanel panel = new ContentPanel(); panel.setCollapsible(true); panel.setAnimCollapse(false); panel.setFrame(true); panel.setId("images-view"); panel.setHeading("Simple ListView (0 items selected)"); panel.setWidth(535); panel.setAutoHeight(true); panel.setBodyBorder(false); ListView<BeanModel> view = new ListView<BeanModel>() { @Override protected BeanModel prepareData(BeanModel model) { String s = model.get("name"); model.set("shortName", Format.ellipse(s, 15)); return model; } }; view.setTemplate(getTemplate()); view.setStore(store); view.setItemSelector("div.thumb-wrap"); view.getSelectionModel().addListener(Events.SelectionChange, new Listener<SelectionChangedEvent<BeanModel>>() { public void handleEvent(SelectionChangedEvent<BeanModel> be) { panel.setHeading("Simple ListView (" + be.getSelection().size() + " items selected)"); } }); panel.add(view); add(panel); } private native String getTemplate() /*-{ return ['<tpl for=".">', '<div class="thumb-wrap" id="{name}" style="border: 1px solid white">', '<div class="thumb"><img src="{path}" title="{name}"></div>', '<span class="x-editable">{shortName}</span></div>', '</tpl>', '<div class="x-clear"></div>'].join(""); }-*/; }