我正在使用ZK列表框,当我选择每个项目时仍然需要标记。
我每次登录时都需要" mostrarDialogo"不要删除以前选择的项目,显示以前加载的项目。
谢谢!
public class BeanListComposer extends GenericAutowireComposer {
private static final long serialVersionUID = 1L;
public BeanListComposer() {
Map args = Executions.getCurrent().getArg();
this.title = (String) args.get("title");
this.width = (String) args.get("width");
this.height = (String) args.get("height");
this.pageSize = (String) args.get("pageSize");
this.objectList = (List) args.get("list");
this.params = (LinkedHashMap) args.get("values");
this.multipleSelection = (Boolean) args.get("multipleSelection");
this.acceptMessage = (String) args.get("acceptMessage");
this.noResultsMessage = (String) args.get("noResultsMessage");
}
public void onInit(Event evt) {
Listheader header = null;
try {
Window window = (Window) this.self;
window.setTitle(title);
window.setWidth(width);
window.setHeight(height);
tblListaCustom.setPageSize(Integer.valueOf(pageSize).intValue());
if (this.noResultsMessage != null) {
this.noResultsLabel.setValue(noResultsMessage);
}
if(this.objectList != null && this.objectList.size() > 0) {
Map methods = BeanUtils.describe(objectList.get(0));
this.tblListaCustom.getListhead().getChildren().clear();
this.noResult.setVisible(false);
this.tblListaCustom.setMultiple(this.multipleSelection.booleanValue());
this.tblListaCustom.setVisible(true);
this.btnAceptar.setVisible(true);
this.btnCancelar.setLabel("Cancelar");
if(multipleSelection.booleanValue()){
header = new Listheader();
header.setWidth("2%");
this.tblListaCustom.getListhead().appendChild(header);
Checkbox chkAll = new Checkbox();
chkAll.setId("chkAll");
chkAll.addForward("onCheck", window, "onCheckAll");
header.appendChild(chkAll);
}
for (Iterator it = this.params.keySet().iterator(); it.hasNext();) {
String col = (String) it.next();
String[] values = params.get(col).toString().split(",");
header = new Listheader(values[0]);
header.setSort("auto");
header.setWidth(values[1]+"%");
this.tblListaCustom.getListhead().appendChild(header);
}
this.tblListaCustom.getItems().clear();
for (Iterator it = objectList.iterator(); it.hasNext();) {
Object row = (Object) it.next();
Listitem item = new Listitem();
item.setValue(row);
if(multipleSelection.booleanValue()){
Listcell cell = new Listcell("");
cell.appendChild(new Checkbox());
item.appendChild(cell);
}
for (Iterator itRow = params.keySet().iterator(); itRow.hasNext();) {
String col = itRow.next().toString();
Listcell cell = new Listcell("");
if(methods.containsKey(col)) {
cell = new Listcell(BeanUtils.getProperty(row, col));
}
item.appendChild(cell);
}
tblListaCustom.getItems().add(item);
}
} else {
this.btnAceptar.setVisible(false);
this.btnCancelar.setLabel("OK");
this.noResult.setVisible(true);
this.tblListaCustom.setVisible(false);
window.setWidth("300px");
window.setHeight("150px");
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
public Object getSelectedRow() {
Listitem selected = this.tblListaCustom.getSelectedItem();
if (selected != null) {
return (Object) selected.getValue();
} else {
return null;
}
}
//s
public void onAccept(Event evt) throws InterruptedException {
List selectedItems = getListSelectedItems(tblListaCustom);
if (selectedItems == null || selectedItems.isEmpty()) {
Messagebox.show(acceptMessage, title, Messagebox.OK, Messagebox.INFORMATION);
} else {
this.self.detach();
}
}
public void onCancel(Event evt) throws InterruptedException {
if(this.tblListaCustom.isCheckmark()){
this.tblListaCustom.clearSelection();
} else {
setCheckboxStatus(this.tblListaCustom, false);
}
this.self.detach();
}
public static Object mostrarDialogo(Window ui, Map values, String title, String width, String height, String pageSize, List objectList, String acceptMessage,
String noResultsMessage, Boolean multipleSelection) {
if (ui != null) {
try {
InputStreamReader reader = new InputStreamReader(ScriptingListener.class.getResourceAsStream("/beanlista.zul"));
LinkedMap params = new LinkedMap();
params.put("values", values);
params.put("title", title);
params.put("width", width);
params.put("height", height);
params.put("pageSize", pageSize);
params.put("list", objectList);
params.put("acceptMessage", acceptMessage);
params.put("noResultsMessage", noResultsMessage);
params.put("multipleSelection", multipleSelection);
Window window = (Window)ui.getFellowIfAny("beanlistaCustom");
ListaEventListener listener = new ListaEventListener();
ChkEventListener chkListener = new ChkEventListener();
if(window==null) {
window = (Window) Executions.createComponentsDirectly(reader, null, ui, params);
window.addEventListener("onSelectOperation", listener);
window.addEventListener("onCheckAll", chkListener);
window.getFellow("btnAceptar").addForward("onClick", window, "onSelectOperation");
}else {
listener = (ListaEventListener)window.getListenerIterator("onSelectOperation").next();
}
window.getChildren();
window.doModal();
return listener.getSelectedItems();
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
return null;
}
private static void setCheckboxStatus(Listbox list, boolean status){
for (Iterator iterator = list.getItems().iterator(); iterator.hasNext();) {
Listitem item = (Listitem) iterator.next();
for (Iterator iterator2 = item.getChildren().iterator(); iterator2.hasNext();) {
Listcell cell = (Listcell) iterator2.next();
if (!cell.getChildren().isEmpty() && cell.getChildren().get(0) instanceof Checkbox) {
Checkbox chk = (Checkbox) cell.getChildren().get(0);
if (!chk.isDisabled()) {
chk.setChecked(status);
}
break;
}
}
}
}
public static List getListSelectedItems2(Listbox list) {
List selectedItems = new ArrayList();
if(list.isCheckmark()){
if(!list.getSelectedItems().isEmpty()){
for(Iterator it=list.getSelectedItems().iterator(); it.hasNext();){
Listitem selectedItem = (Listitem) it.next();
selectedItems.add(selectedItem.getValue());
}
}
} else {
for (Iterator it = list.getItems().iterator(); it.hasNext();) {
Listitem selectedItem = (Listitem) it.next();
Listcell celda = (Listcell) selectedItem.getChildren().get(0);
if (!celda.getChildren().isEmpty() && celda.getChildren().get(0) instanceof Checkbox) {
Checkbox chk = (Checkbox) celda.getChildren().get(0);
if (chk.isChecked()) {
selectedItems.add(selectedItem.getValue());
}
}
}
}
return selectedItems;
}
private static List getListSelectedItems(Listbox list) {
List selectedItems = new ArrayList();
if(list.isCheckmark()){
if(!list.getSelectedItems().isEmpty()){
for(Iterator it=list.getSelectedItems().iterator(); it.hasNext();){
Listitem selectedItem = (Listitem) it.next();
selectedItems.add(selectedItem.getValue());
}
}
} else {
for (Iterator it = list.getItems().iterator(); it.hasNext();) {
Listitem selectedItem = (Listitem) it.next();
Listcell celda = (Listcell) selectedItem.getChildren().get(0);
if (!celda.getChildren().isEmpty() && celda.getChildren().get(0) instanceof Checkbox) {
Checkbox chk = (Checkbox) celda.getChildren().get(0);
if (chk.isChecked()) {
selectedItems.add(selectedItem.getValue());
}
}
}
}
return selectedItems;
}
public static class ChkEventListener implements EventListener {
public void onEvent(Event evt) throws Exception {
IdSpace owner = evt.getTarget().getSpaceOwner();
ForwardEvent event = (ForwardEvent) evt;
CheckEvent chkEvent = (CheckEvent) event.getOrigin();
Listbox list = (Listbox) owner.getFellow("tblListaCustom");
setCheckboxStatus(list, chkEvent.isChecked());
}
}
public static class ListaEventListener implements EventListener {
private List selectedItems = new ArrayList();
public List getSelectedItems() {
return selectedItems;
}
public void onEvent(Event evt) throws Exception {
IdSpace owner = evt.getTarget().getSpaceOwner();
Listbox list = (Listbox) owner.getFellow("tblListaCustom");
selectedItems = getListSelectedItems(list);
}
}
private String title = null;
private List objectList = null;
private Map params = null;
private String acceptMessage = null;
private String noResultsMessage = null;
private String width = null;
private String height = null;
private Boolean multipleSelection = Boolean.FALSE;
private String pageSize = null;
private Groupbox noResult = null;
private Listbox tblListaCustom = null;
private Label noResultsLabel = null;
private Button btnCancelar = null;
private Button btnAceptar = null;
}