/**
*
*/
package com.jcommerce.gwt.client.panels.article;
//import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.jcommerce.gwt.client.ContentWidget;
import com.jcommerce.gwt.client.ModelNames;
import com.jcommerce.gwt.client.PageState;
import com.jcommerce.gwt.client.form.BeanObject;
import com.jcommerce.gwt.client.model.IGoods;
import com.jcommerce.gwt.client.model.ITagManager;
import com.jcommerce.gwt.client.service.Condition;
import com.jcommerce.gwt.client.service.CreateService;
import com.jcommerce.gwt.client.service.Criteria;
import com.jcommerce.gwt.client.service.ListService;
import com.jcommerce.gwt.client.service.UpdateService;
import com.jcommerce.gwt.client.widgets.ColumnPanel;
/**
* @author Jill Zhang
*
*/
public class NewTag extends ContentWidget {
private Button btnSubmit = new Button();
private Button btnClear = new Button();
private ListBox goodsName = new ListBox();
private ColumnPanel contentPanel = new ColumnPanel();
private TextBox searchText = new TextBox();
private TextBox tagName = new TextBox();
private Button btnSearch = new Button();
Criteria criteria = new Criteria();
// private boolean editting = false;
//
// private BeanObject tag = null;
//
// leon to integrate with history-based page navigation mechnism.
// State should contain all info needed to render this page.
// This is a minimum skeleton, more fields may be added, see
// leontest.Attribute
public static class State extends PageState {
private BeanObject tag = null;
public BeanObject getTag() {
return tag;
}
public void setTag(BeanObject tag) {
this.tag = tag;
setEditting(tag != null);
}
public String getPageClassName() {
return NewTag.class.getName();
}
public String getMenuDisplayName() {
return !isEditting() ? "添加标签" : "编辑标签";
}
}
public State getCurState() {
return (State)curState;
}
/**
* Initialize this example.
*/
private static NewTag instance;
public static NewTag getInstance() {
if (instance == null) {
instance = new NewTag();
}
return instance;
}
private NewTag() {
curState = new State();
}
public String getDescription() {
return "cwBasicTextDescription";
}
public String getName() {
if (!getCurState().isEditting())
return "添加标签";
else
return "编辑标签";
}
// public void setTag(BeanObject tag) {
// this.tag = tag;
// editting = tag != null;
// }
//
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
contentPanel.createPanel(ITagManager.TAGWORDS, "标签名称", tagName);
btnSearch.setText("搜索");
contentPanel.createPanel(ITagManager.CONTENT, "根据商品的名称或货号搜索商品", searchText, btnSearch);
contentPanel.createPanel(ITagManager.GOODS, "商品名称", goodsName);
// goodsName.addItem("请选择商品", "choose");
HorizontalPanel panel = new HorizontalPanel();
panel.setSpacing(10);
btnSubmit.setText("确定");
btnClear.setText("重置");
panel.add(btnSubmit);
panel.add(btnClear);
contentPanel.createPanel(null, null, panel);
add(contentPanel);
btnSearch.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent arg0) {
search();
goodsName.setFocus(true);
}
});
btnSubmit.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent arg0) {
BeanObject tag = getCurState().getTag();
Long id = tag != null ? tag.getLong(ITagManager.ID) : null;
tag = new BeanObject(ModelNames.TAG, contentPanel.getValues());
if (tagName.getText().trim().equals("") || goodsName.getItemCount() == 0) {
MessageBox.alert("ERROR", "请输入完整", null);
} else {
if (getCurState().isEditting()) {
new UpdateService().updateBean(id, tag, null);
Info.display("恭喜", "完成修改标签.");
TagManager.State state = new TagManager.State();
state.execute();
} else {
new CreateService().createBean(tag, new CreateService.Listener() {
public void onSuccess(String id) {
Info.display("恭喜", "完成添加新标签.");
TagManager.State state = new TagManager.State();
state.execute();
}
});
}
}
}
});
btnClear.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent arg0) {
contentPanel.clearValues();
}
});
}
public void refresh() {
BeanObject tag = getCurState().getTag();
if (tag != null && tag.getString(ITagManager.ID) != null) {
Map<String, Object> mapTag = tag.getProperties();
contentPanel.updateValues(mapTag);
} else {
contentPanel.clearValues();
search();
getCurState().setEditting(false);
}
}
private void search() {
goodsName.clear();
criteria.removeAll();
String content = searchText.getText().trim();
if (content == null) {
new ListService().listBeans(ModelNames.GOODS, new ListService.Listener() {
public void onSuccess(List<BeanObject> beans) {
for (Iterator<BeanObject> it = beans.iterator(); it.hasNext();) {
BeanObject goods = it.next();
goodsName.addItem(goods.getString(IGoods.NAME), goods.getString(IGoods.ID));
}
}
});
}
Condition cond = new Condition();
// 按商品货号查找
cond.setField(IGoods.SN);
cond.setOperator(Condition.EQUALS);
cond.setValue(Long.valueOf(content));
criteria.addCondition(cond);
new ListService().listBeans(ModelNames.GOODS, criteria, new ListService.Listener() {
public void onSuccess(List<BeanObject> beans) {
for (Iterator<BeanObject> it = beans.iterator(); it.hasNext();) {
BeanObject goods = it.next();
goodsName.addItem(goods.getString(IGoods.NAME), goods.getString(IGoods.ID));
}
}
});
// 按商品名称查找
cond.setField(IGoods.NAME);
cond.setOperator(Condition.GREATERTHAN);
cond.setValue(Long.valueOf(content));
criteria.addCondition(cond);
new ListService().listBeans(ModelNames.GOODS, criteria, new ListService.Listener() {
public void onSuccess(List<BeanObject> beans) {
for (Iterator<BeanObject> it = beans.iterator(); it.hasNext();) {
BeanObject goods = it.next();
goodsName.addItem(goods.getString(IGoods.NAME), goods.getString(IGoods.ID));
}
}
});
}
}