teichmann@5835: package org.dive4elements.river.client.client.ui.minfo; raimund@3527: raimund@3527: import java.util.HashMap; raimund@3527: import java.util.LinkedList; raimund@3527: import java.util.Set; raimund@3527: raimund@3527: import com.google.gwt.core.client.GWT; raimund@3527: import com.smartgwt.client.widgets.Canvas; raimund@3527: import com.smartgwt.client.widgets.Label; raimund@3527: import com.smartgwt.client.widgets.form.DynamicForm; raimund@3527: import com.smartgwt.client.widgets.form.fields.CheckboxItem; raimund@3527: import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; raimund@3527: import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; raimund@3527: import com.smartgwt.client.widgets.layout.HLayout; raimund@3527: import com.smartgwt.client.widgets.layout.VLayout; raimund@3527: teichmann@5835: import org.dive4elements.river.client.client.ui.AbstractUIProvider; teichmann@5835: import org.dive4elements.river.client.shared.model.Data; teichmann@5835: import org.dive4elements.river.client.shared.model.DataItem; teichmann@5835: import org.dive4elements.river.client.shared.model.DataList; teichmann@5835: import org.dive4elements.river.client.shared.model.DefaultData; teichmann@5835: import org.dive4elements.river.client.shared.model.DefaultDataItem; raimund@3527: raimund@3527: public class CheckboxPanel extends AbstractUIProvider { raimund@3527: raimund@3527: private String dataName; raimund@3527: HashMap values; raimund@3527: raimund@3527: protected DynamicForm form; raimund@3527: raimund@3527: public CheckboxPanel() { raimund@3527: super(); raimund@3527: values = new HashMap(); raimund@3527: } raimund@3527: raimund@3527: @Override raimund@3527: public Canvas createOld(DataList dataList) { raimund@3527: Data data = dataList.get(0); raimund@3527: DataItem[] items = data.getItems(); raimund@3527: raimund@3527: HLayout layout = new HLayout(); raimund@3527: Label label = new Label(dataList.getLabel()); raimund@3527: Label value = new Label(items[0].getLabel()); raimund@3527: raimund@3527: layout.setHeight(35); raimund@3527: layout.setWidth(400); raimund@3527: label.setWidth(200); raimund@3527: raimund@3527: layout.addMember(label); raimund@3527: layout.addMember(value); raimund@3527: layout.addMember(getBackButton(dataList.getState())); raimund@3527: raimund@3527: return layout; raimund@3527: } raimund@3527: raimund@3527: @Override raimund@3527: public Canvas create(DataList dataList) { raimund@3527: Data data = dataList.get(0); raimund@3527: DataItem[] items = data.getItems(); raimund@3527: raimund@3527: this.dataName = data.getLabel(); raimund@3527: form = new DynamicForm(); raimund@3527: raimund@3527: VLayout layout = new VLayout(); raimund@3527: Label label = new Label(data.getDescription()); raimund@3527: LinkedList cbItems = new LinkedList(); raimund@3527: for (int i = 0; i < items.length; i++) { raimund@3527: CheckboxItem item = new CheckboxItem(items[i].getLabel()); raimund@3527: GWT.log(items[i].getStringValue() + "; " + items[i].getLabel()); raimund@3527: item.addChangedHandler(new ChangedHandler() { raimund@3527: @Override raimund@3527: public void onChanged(ChangedEvent event) { raimund@3527: values.put( raimund@3527: event.getItem().getName(), raimund@3527: (Boolean)event.getItem().getValue()); raimund@3527: } raimund@3527: }); raimund@3527: cbItems.add(item); raimund@3527: } raimund@3527: raimund@3527: form.setFields(cbItems.toArray(new CheckboxItem[cbItems.size()])); raimund@3527: layout.setMembersMargin(10); raimund@3527: layout.setHeight(35); raimund@3527: label.setHeight(35); raimund@3527: raimund@3527: layout.addMember(label); raimund@3527: layout.addMember(form); raimund@3527: layout.addMember(getNextButton()); raimund@3527: layout.setMembersMargin(10); raimund@3527: raimund@3527: return layout; raimund@3527: } raimund@3527: raimund@3527: @Override raimund@3527: protected Data[] getData() { raimund@3527: String value = ""; raimund@3527: Set entries = values.keySet(); raimund@3527: boolean first = true; raimund@3527: for (String s: values.keySet()) { raimund@3527: if (!first) { raimund@3527: value += ";"; raimund@3527: } raimund@3527: if ((Boolean)values.get(s) == true) { raimund@3527: value += s; raimund@3527: } raimund@3527: first = false; raimund@3527: } raimund@3527: DataItem item = new DefaultDataItem("diameter", "diameter", value); raimund@3527: raimund@3527: return new Data[] {new DefaultData( raimund@3527: "diameter", raimund@3527: null, raimund@3527: null, raimund@3527: new DataItem[]{item})}; raimund@3527: } raimund@3527: raimund@3527: }