查看列表框问题

时间:2015-07-27 19:58:24

标签: java list zk

我正在使用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;

}

0 个答案:

没有答案