package com.jcommerce.gwt.client.panels.orders;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
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.EditorGrid;
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.ui.CheckBox;
import com.jcommerce.gwt.client.ModelNames;
import com.jcommerce.gwt.client.form.BeanObject;
import com.jcommerce.gwt.client.model.IOrder;
import com.jcommerce.gwt.client.model.IShipping;
import com.jcommerce.gwt.client.service.Criteria;
import com.jcommerce.gwt.client.service.ListService;
import com.jcommerce.gwt.client.widgets.ActionCellRenderer;
import com.jcommerce.gwt.client.widgets.ColumnPanel;
public class ShippingPanel extends ContentPanel{
private String usrAddrInfo = "";
// BasePagingLoader loader;
ListStore<BeanObject> store;
PagingToolBar toolBar = new PagingToolBar(10);
BeanObject shipping;
BeanObject order = new BeanObject(ModelNames.ORDER);
public BeanObject getOrder() {
order.set(IOrder.SHIPPINGNAME, shipping.getString(IShipping.NAME));
order.set(IOrder.SHIPPING, shipping.getString(IShipping.ID));
order.set(IOrder.SHIPPINGFEE, 0);
return order;
}
public void setOrder(BeanObject order)
{
this.order = order;
}
public void setUsrAddrInfo(String usrAddrInfo)
{
this.usrAddrInfo = usrAddrInfo;
}
private native void initJS(ShippingPanel me) /*-{
$wnd.chooseShipping = function (id) {
me.@com.jcommerce.gwt.client.panels.orders.ShippingPanel::chooseShipping(Ljava/lang/String;)(id);
};
}-*/;
public ShippingPanel(Criteria criteria)
{
initJS(this);
store = new ListStore<BeanObject>();
new ListService().listBeans(ModelNames.SHIPPING, criteria, new ListService.Listener(){
public void onSuccess(List<BeanObject> beans)
{
for(int i=0; i<beans.size(); i++)
{
store.add(beans.get(i));
}
}
});
List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
columns.add(new ColumnConfig(IShipping.NAME, "名称", 80));
columns.add(new ColumnConfig(IShipping.DESCRIPTION, "描述", 130));
columns.add(new ColumnConfig(IOrder.SHIPPINGFEE, "配送费", 80));
columns.add(new ColumnConfig("freeMoney", "免费额度", 80));
columns.add(new ColumnConfig(IShipping.INSURE, "保价费", 80));
ColumnConfig actcol = new ColumnConfig("Action", "操作", 100);
columns.add(actcol);
ColumnModel cm = new ColumnModel(columns);
Grid<BeanObject> grid = new EditorGrid<BeanObject>(store, cm);
grid.setLoadMask(true);
grid.setBorders(true);
grid.setSize(750, 200);
ActionCellRenderer render = new ActionCellRenderer(grid);
ActionCellRenderer.ActionInfo act = null;
act = new ActionCellRenderer.ActionInfo();
act.setImage("yes.gif");
act.setAction("chooseShipping($id)");
render.addAction(act);
actcol.setRenderer(render);
ColumnPanel wantedInsure = new ColumnPanel();
wantedInsure.createPanel(IShipping.SUPPORTCOD, "我要保价", new CheckBox());
final ContentPanel panel = new ContentPanel();
panel.setFrame(true);
panel.setCollapsible(true);
panel.setAnimCollapse(false);
panel.setButtonAlign(HorizontalAlignment.CENTER);
panel.setLayout(new FitLayout());
panel.add(grid);
panel.add(wantedInsure);
panel.setBottomComponent(toolBar);
this.setSize(750, 555);
this.setHeading("选择配送方式");
this.add(panel);
}
private void chooseShipping(String id)
{
int lineIndex = -1;
for(int i=0; i<store.getCount(); i++)
{
BeanObject theShipping = store.getAt(i);
if(theShipping.getString(IShipping.ID).equals(id))
{
shipping = theShipping;
lineIndex = i;
break;
}
else
{
continue;
}
}
if(lineIndex > -1)
{
final Listener<MessageBoxEvent> deleteListener = new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent ce) {
Button btn = ce.getButtonClicked();
if (btn.getText().equals("是"))
{
store.removeAll();
}
}
};
MessageBox.confirm("Confirm", "Are you sure you want to choose this Shipping: "
+ shipping.getString(IShipping.NAME) + " ?",
deleteListener);
}
else
{
Info.display("Error", "Cannot find the shippingObject you selected.");
}
}
public BeanObject getShipping()
{
return shipping;
}
}