views:

26

answers:

1

Hi, This is my working code. What I was thinking of doing, is to add a few check boxes, and select an option from the List box. That option is applied to the ticked values, after clicking the apply button, preferably an async call. is that possible? I tried a few things like setting a listener for the button and then trying to get the ticked values, and run a query, or just output them.

public void onModuleLoad() {

    VerticalPanel panel = new VerticalPanel();
    Button applyButton = new Button("Apply");
    ListBox box = new ListBox(false);

    CheckBox cb = new CheckBox();
    TabPanel tabpanel = new TabPanel();
    FlowPanel flowpanel;

    flowpanel = new FlowPanel();
    flowpanel.setSize("500px", "250px");
    flowpanel.add(cb);

    tabpanel.add(flowpanel, "All");

    flowpanel = new FlowPanel();
    tabpanel.add(flowpanel, "Active");

    flowpanel = new FlowPanel();
    tabpanel.add(flowpanel, "In-active");

    tabpanel.selectTab(0);
    tabpanel.setSize("500px", "250px");

    box.addItem("Set Active");
    box.addItem("Set In-Active");


    panel.add(box);
    panel.add(applyButton);
    panel.add(tabpanel);

    RootPanel.get().add(panel);

}

Thanks.

+1  A: 

Something like that? Gathering the selected option as well as the checked items to send those values for processing to the server (do that in the onClick method):

    public void onModuleLoad() {
        final CheckBox[] items = new CheckBox[3];
        items[0] = new CheckBox("item 1");
        items[1] = new CheckBox("item 2");
        items[2] = new CheckBox("item 3");
        final ListBox options = new ListBox();
        Button apply = new Button("apply");
        FlowPanel panel = new FlowPanel();
        panel.add(items[0]);
        panel.add(items[1]);
        panel.add(items[2]);
        panel.add(options);
        panel.add(apply);

        options.addItem("option 1");
        options.addItem("option 2");

        apply.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                String selectedOption = options.getValue(options.getSelectedIndex());
                System.out.print("Apply " + selectedOption
                        + " to: ");
                for (CheckBox checkBox : items) {
                    if (checkBox.getValue()) {
                        System.out.print(checkBox.getText());
                    }
                }
                System.out.println();
            }
        });

        RootPanel.get().add(panel);
    }

Or should the ListBox contain the action (have a look at the Command interface of GWT) which should be applied on the selected check boxes?

z00bs
yeah, that should do it. but is it necessary to use array? My checkboxes will be filled depending upon the results of a query. And if I dont use an array, how do I iterate over the checkboxes?
Kaustubh P
use a list: `LinkedList<CheckBox> items = new LinkedList<CheckBox>();`. The foreach loop works exactly the same way.
z00bs