package com.smartgwt.sample.showcase.client.forms.dependencies; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.events.ChangeEvent; import com.smartgwt.client.widgets.form.fields.events.ChangeHandler; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; import java.util.HashMap; import java.util.Map; public class FormDependentSelectsSample extends ShowcasePanel { private static final String DESCRIPTION = "Select a \"Division\" to cause the \"Department\" select to be populated with departments from that division."; public static class Factory implements PanelFactory { private String id; public Canvas create() { FormDependentSelectsSample panel = new FormDependentSelectsSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } public Canvas getViewPanel() { final DynamicForm form = new DynamicForm(); form.setWidth(500); form.setNumCols(4); final Map<String, String[]> departments = new HashMap<String, String[]>(); departments.put("Marketing", new String[]{"Advertising", "Community Relations"}); departments.put("Sales", new String[]{"Channel Sales", "Direct Sales"}); departments.put("Manufacturing", new String[]{"Design", "Development", "QA"}); departments.put("Services", new String[]{"Support", "Consulting"}); SelectItem divisionItem = new SelectItem(); divisionItem.setName("division"); divisionItem.setTitle("Division"); divisionItem.setValueMap("Marketing", "Sales", "Manufacturing", "Services"); divisionItem.addChangeHandler(new ChangeHandler() { public void onChange(ChangeEvent event) { String selectedItem = (String) event.getValue(); form.getField("department").setValueMap(departments.get(selectedItem)); } }); SelectItem departmentItem = new SelectItem(); departmentItem.setName("department"); departmentItem.setTitle("Department"); departmentItem.setAddUnknownValues(false); form.setItems(divisionItem, departmentItem); return form; } public String getIntro() { return DESCRIPTION; } }