package com.smartgwt.sample.showcase.client.tree; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.ButtonItem; import com.smartgwt.client.widgets.form.fields.CheckboxItem; import com.smartgwt.client.widgets.form.fields.events.ChangeEvent; import com.smartgwt.client.widgets.form.fields.events.ChangeHandler; import com.smartgwt.client.widgets.form.fields.events.ClickEvent; import com.smartgwt.client.widgets.form.fields.events.ClickHandler; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.tree.TreeGrid; import com.smartgwt.client.widgets.tree.TreeGridField; import com.smartgwt.client.data.AdvancedCriteria; import com.smartgwt.client.data.Criteria; import com.smartgwt.client.data.Criterion; import com.smartgwt.client.types.OperatorId; import com.smartgwt.client.data.DataSource; import com.google.gwt.core.client.EntryPoint; public class KeepParentsLODSample implements EntryPoint { private TreeGrid employeeTreeGrid; private VLayout mainLayout; @Override public void onModuleLoad() { mainLayout = new VLayout(); mainLayout.setWidth100(); mainLayout.setHeight100(); mainLayout.setMembersMargin(5); DynamicForm form = new DynamicForm(); form.setWidth(600); form.setNumCols(8); ButtonItem showContractButton = new ButtonItem(); showContractButton.setTitle("Show Contract"); showContractButton.setStartRow(false); showContractButton.setEndRow(false); showContractButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { Criteria criteria = new Criteria(); criteria.addCriteria("EmployeeType", "contract"); employeeTreeGrid.filterData(criteria); } }); ButtonItem showFullTimeButton = new ButtonItem(); showFullTimeButton.setTitle("Show Full Time"); showFullTimeButton.setStartRow(false); showFullTimeButton.setEndRow(false); showFullTimeButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { Criteria criteria = new Criteria(); criteria.addCriteria("EmployeeType", "full time"); employeeTreeGrid.filterData(criteria); } }); ButtonItem showEngineersButton = new ButtonItem(); showEngineersButton.setTitle("Show Engineers"); showEngineersButton.setStartRow(false); showEngineersButton.setEndRow(false); showEngineersButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { AdvancedCriteria adCriteria = new AdvancedCriteria(OperatorId.AND, new Criterion[]{ new Criterion("Job", OperatorId.ICONTAINS, "engineer") }); employeeTreeGrid.filterData(adCriteria); } }); final CheckboxItem keepParents = new CheckboxItem("keepParents", "Keep parents"); keepParents.setDefaultValue(true); keepParents.addChangeHandler(new ChangeHandler() { public void onChange(ChangeEvent event) { Criteria criteria = employeeTreeGrid.getCriteria(); boolean selected = keepParents.getValueAsBoolean(); if (criteria !=null && criteria.getValues().size() != 0) recreateListGrid(criteria, selected); } }); form.setFields(showContractButton, showFullTimeButton, showEngineersButton, keepParents); mainLayout.addMember(form); recreateListGrid(new Criteria(), true); mainLayout.draw(); } private void recreateListGrid (Criteria criteria, boolean keepParents) { if (mainLayout.hasMember(employeeTreeGrid)) mainLayout.removeMember(employeeTreeGrid); employeeTreeGrid = new TreeGrid(); employeeTreeGrid.setLoadDataOnDemand(true); employeeTreeGrid.setWidth(600); employeeTreeGrid.setHeight(400); employeeTreeGrid.setDataSource(DataSource.get("employees")); employeeTreeGrid.setShowFilterEditor(true); employeeTreeGrid.setFilterOnKeypress(true); employeeTreeGrid.setKeepParentsOnFilter(keepParents); employeeTreeGrid.setInitialCriteria(criteria); employeeTreeGrid.setAutoOpenTree("all"); employeeTreeGrid.setAutoFetchData(true); TreeGridField nameField = new TreeGridField("Name", 150); TreeGridField jobField = new TreeGridField("Job", 150); TreeGridField employeeTypeField = new TreeGridField("EmployeeType"); employeeTreeGrid.setFields(nameField, jobField, employeeTypeField); mainLayout.addMember(employeeTreeGrid); } }