package com.jcommerce.gwt.client.panels.member; import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.data.BasePagingLoader; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.store.Record; import com.extjs.gxt.ui.client.store.Store; import com.extjs.gxt.ui.client.store.StoreEvent; import com.extjs.gxt.ui.client.store.StoreListener; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.Info; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; import com.extjs.gxt.ui.client.widget.grid.ColumnModel; import com.extjs.gxt.ui.client.widget.grid.Grid; import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar; import com.google.gwt.user.client.Element; import com.jcommerce.gwt.client.ContentWidget; import com.jcommerce.gwt.client.ModelNames; import com.jcommerce.gwt.client.form.AttributeForm; import com.jcommerce.gwt.client.form.BeanObject; import com.jcommerce.gwt.client.model.IAdminUser; import com.jcommerce.gwt.client.model.IUserAddress; import com.jcommerce.gwt.client.panels.BaseEntityEditPanel; import com.jcommerce.gwt.client.panels.data.ImportPanel.State; import com.jcommerce.gwt.client.panels.goods.AttributeListPanel; import com.jcommerce.gwt.client.resources.Resources; import com.jcommerce.gwt.client.service.Condition; import com.jcommerce.gwt.client.service.Criteria; import com.jcommerce.gwt.client.service.DeleteService; import com.jcommerce.gwt.client.service.ListService; import com.jcommerce.gwt.client.service.PagingListService; import com.jcommerce.gwt.client.service.ReadService; import com.jcommerce.gwt.client.service.UpdateService; import com.jcommerce.gwt.client.util.MyRpcProxy; import com.jcommerce.gwt.client.widgets.ActionCellRenderer; import com.jcommerce.gwt.client.widgets.UserAddressCellRenderer; public class ShippingAddressPanel extends ContentWidget { public static interface Constants { String ShippingAddress_address(); String ShippingAddress_bestTime(); String ShippingAddress_build(); String ShippingAddress_consignee(); String ShippingAddress_contactManner(); String ShippingAddress_email(); String ShippingAddress_mobilePhone(); String ShippingAddress_other(); String ShippingAddress_phone(); String ShippingAddress_title(); } public static class State extends BaseEntityEditPanel.State { public String getPageClassName() { return ShippingAddressPanel.class.getName(); } public String getMenuDisplayName() { return Resources.constants.ShippingAddress_title(); } } public State getCurState() { if (curState == null ) { curState = new State(); } return (State)curState; } int pageSize = 5; PagingToolBar toolBar; public static ShippingAddressPanel getInstance(){ if(instance==null) { instance = new ShippingAddressPanel(); } return instance; } private static ShippingAddressPanel instance; private ShippingAddressPanel() { super(); } @Override public String getDescription() { return "cwBasicTextDescription"; } @Override public String getName() { return Resources.constants.ShippingAddress_title(); } Grid<BeanObject> grid = null; BasePagingLoader loader = null; UserAddressCellRenderer addressRender = null; UserAddressCellRenderer contactRender = null; UserAddressCellRenderer otherRender = null; ColumnConfig addressCol = null; ColumnConfig contactCol = null; ColumnConfig otherCol = null; ColumnModel cm = null; protected void onRender(Element parent, int index) { super.onRender(parent, index); String pkId = getCurState().getId(); Criteria c = new Criteria(); c.addCondition(new Condition(IUserAddress.USER, Condition.EQUALS, pkId)); loader = new PagingListService().getLoader(ModelNames.USERADDRESS, c); // loader.load(0, 50); final ListStore<BeanObject> store = new ListStore<BeanObject>(loader); store.addStoreListener(new StoreListener<BeanObject>() { public void storeUpdate(StoreEvent<BeanObject> se) { List<Record> changed = store.getModifiedRecords(); } @Override public void storeDataChanged(StoreEvent<BeanObject> se) { // TODO Auto-generated method stub super.storeDataChanged(se); List storeData = se.getStore().getModels(); for (Object object : storeData) { BeanObject bean = (BeanObject) object; contactRender = new UserAddressCellRenderer(grid, "contact"); contactRender.setMobile(bean.getString("mobile")); contactRender.setTel(bean.getString("tel")); contactRender.setEmail(bean.getString("email")); contactCol.setRenderer(contactRender); otherRender = new UserAddressCellRenderer(grid, "other"); otherRender.setTime(bean.getString("bestTime")); otherRender.setBuild(bean.getString("signBuilding")); otherCol.setRenderer(otherRender); addressRender = new UserAddressCellRenderer(grid, "address"); addressRender.setZipcode(bean.getString("zipcode")); final String countryId = bean.getString("country"); final String provinceId = bean.getString("province"); final String cityId = bean.getString("city"); final String districtId = bean.getString("district"); new ListService().listBeans(ModelNames.REGION,null,new ListService.Listener(){ @Override public void onSuccess(List<BeanObject> beans) { for(BeanObject bean : beans) { String id = bean.getString("pkId"); if(id.equals(countryId)) { addressRender.setCountry(bean.getString("regionName")); } else if(id.equals(provinceId)) { addressRender.setProvince(bean.getString("regionName")); } else if(id.equals(cityId)) { addressRender.setCity(bean.getString("regionName")); } else if(id.equals(districtId)) { addressRender.setDistrict(bean.getString("regionName")); } } addressCol.setRenderer(addressRender); grid.reconfigure(store, cm); } }); } } }); toolBar = new PagingToolBar(50); toolBar.bind(loader); List<ColumnConfig> columns = new ArrayList<ColumnConfig>(); columns.add(new ColumnConfig(IUserAddress.CONSIGNEE, Resources.constants.ShippingAddress_consignee(), 140)); addressCol = new ColumnConfig(Resources.constants.ShippingAddress_address(), Resources.constants.ShippingAddress_address(), 150); contactCol = new ColumnConfig(Resources.constants.ShippingAddress_contactManner(), Resources.constants.ShippingAddress_contactManner(), 170); otherCol = new ColumnConfig(Resources.constants.ShippingAddress_other(), Resources.constants.ShippingAddress_other(), 170); columns.add(addressCol); columns.add(contactCol); columns.add(otherCol); cm = new ColumnModel(columns); grid = new Grid<BeanObject>(store, cm); grid.setLoadMask(true); grid.setBorders(true); // addressRender = new TextCellRender(grid, "a"); // addressCol.setRenderer(addressRender); // contactRender = new TextCellRender(grid, "b"); // contactCol.setRenderer(contactRender); // otherRender = new TextCellRender(grid, "c"); // otherCol.setRenderer(otherRender); ContentPanel panel = new ContentPanel(); panel.setFrame(true); panel.setCollapsible(true); panel.setAnimCollapse(false); panel.setButtonAlign(HorizontalAlignment.CENTER); panel.setIconStyle("icon-table"); panel.setHeading("Paging Grid"); panel.setLayout(new FitLayout()); panel.add(grid); panel.setSize(800, 350); // panel.setSize("100%", "350px"); panel.setBottomComponent(toolBar); panel.setButtonAlign(HorizontalAlignment.CENTER); add(panel); } public void refresh() { refreshAddressList(); toolBar.refresh(); } private void refreshAddressList() { String pkId = getCurState().getId(); Criteria criteria = new Criteria(); criteria.addCondition(new Condition(IUserAddress.USER, Condition.EQUALS, pkId)); MyRpcProxy proxy = (MyRpcProxy)loader.getProxy(); proxy.setCriteria(criteria); } public Button getShortCutButton() { // return btnAdd; Button buttonAddClone = new Button(Resources.constants.UserList_title()); buttonAddClone.addSelectionListener(new SelectionListener<ButtonEvent>() { public void componentSelected(ButtonEvent ce) { onButtonAddClicked(); } }); return buttonAddClone; } public void onButtonAddClicked() { UserListPanel.State newState = new UserListPanel.State(); newState.execute(); } }