package com.smartgwt.sample.showcase.client.tree; import com.smartgwt.client.data.Criteria; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.form.SearchForm; import com.smartgwt.client.widgets.form.fields.IPickTreeItem; import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.tree.TreeGrid; import com.smartgwt.client.widgets.tree.TreeGridField; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; import com.smartgwt.sample.showcase.client.data.EmployeeXmlDS; public class TreeEditingSample extends ShowcasePanel { private static final String DESCRIPTION = "" + "<p>First choose an employee via the menu to see that employee's direct reports in the ListGrid.</p>" + "<p>Click on employees in the tree to edit them, and drag and drop employees to rearrange them. " + "<p>Changing an employee's salary in the grid will be automatically reflected in the tree.</p>" + "<p>Dragging an employee to another manager in the tree will make that employee appear or disappear " + "in the grid if the grid is showing the original or new manager's employees.</p>" + "<p>Changes made in the tree or ListGrid are automatically saved to the server and reflected in the other components.</p>"; public static class Factory implements PanelFactory { private String id; public ShowcasePanel create() { TreeEditingSample panel = new TreeEditingSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } public Canvas getViewPanel() { TreeGridField fieldName = new TreeGridField("Name", 150); TreeGridField fieldJob = new TreeGridField("Job", 150); TreeGridField fieldSalary = new TreeGridField("Salary"); TreeGrid employeeTree = new TreeGrid(); employeeTree.setID("employeeTree"); employeeTree.setWidth(500); employeeTree.setHeight(250); employeeTree.setDataSource(EmployeeXmlDS.getInstance()); employeeTree.setNodeIcon("icons/16/person.png"); employeeTree.setFolderIcon("icons/16/person.png"); employeeTree.setAutoFetchData(true); employeeTree.setLoadDataOnDemand(false); employeeTree.setCanEdit(true); employeeTree.setCanReorderRecords(true); employeeTree.setCanAcceptDroppedRecords(true); employeeTree.setShowDropIcons(false); employeeTree.setShowOpenIcons(false); employeeTree.setClosedIconSuffix(""); employeeTree.setFields(fieldName, fieldJob, fieldSalary); final ListGrid employeeGrid = new ListGrid(); employeeGrid.setID("employeeGrid"); employeeGrid.setWidth(500); employeeGrid.setHeight(250); employeeGrid.setEmptyMessage("Select an Employee from the PickTree Item above."); employeeGrid.setDataSource(EmployeeXmlDS.getInstance()); employeeGrid.setCanEdit(true); employeeGrid.setFields(new TreeGridField("Name", 150), new TreeGridField("Job", 150), new TreeGridField("Salary")); IPickTreeItem searchPickTree = new IPickTreeItem(); searchPickTree.setCanSelectParentItems(true); searchPickTree.setShowTitle(false); searchPickTree.setDataSource(EmployeeXmlDS.getInstance()); searchPickTree.setDisplayField("Name"); searchPickTree.setValueField("EmployeeId"); searchPickTree.addChangedHandler(new ChangedHandler() { public void onChanged(ChangedEvent event) { Criteria c = new Criteria(); c.addCriteria("ReportsTo", (Integer)event.getValue()); employeeGrid.fetchData(c); } }); SearchForm searchForm = new SearchForm(); searchForm.setID("employeeSearchForm"); searchForm.setWidth(200); searchForm.setHeight(30); searchForm.setFields(searchPickTree); VLayout mainView = new VLayout(10); mainView.setHeight100(); mainView.setWidth100(); mainView.addMember(searchForm); mainView.addMember(employeeGrid); mainView.addMember(employeeTree); return mainView; } public String getIntro() { return DESCRIPTION; } }