package com.mycompany.mywebapp.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.RootPanel; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.fields.DataSourceTextField; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.widgets.Button; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.SearchForm; import com.smartgwt.client.widgets.form.fields.PickTreeItem; import com.smartgwt.client.widgets.layout.VLayout; public class MyWebApp implements EntryPoint { public void onModuleLoad() { RootPanel.get().add(getViewPanel()); } public Canvas getViewPanel() { PickTreeItem searchPickTree = new PickTreeItem(); searchPickTree.setTitle("Subjects"); searchPickTree.setWidth(210); searchPickTree.setTitleAlign(Alignment.LEFT); searchPickTree.setTextBoxStyle("ClientAreaStaticFieldLabel"); searchPickTree.setTitleStyle("ClientAreaFieldTitle"); searchPickTree.setDisplayField("LABEL"); searchPickTree.setValueField("NOMCOMPLET"); searchPickTree.setOptionDataSource(SubjectsXmlDS.getInstance()); searchPickTree.setCanSelectParentItems(false); searchPickTree.setLoadDataOnDemand(false); Button refreshList = new Button("Refresh List"); refreshList.setShowRollOver(true); refreshList.setShowDisabled(true); refreshList.setShowDown(true); refreshList.setAutoFit(true); refreshList.setAlign(Alignment.CENTER); refreshList.setWidth(150); SearchForm searchForm = new SearchForm(); searchForm.setWidth(200); searchForm.setHeight(30); searchForm.setFields(searchPickTree); VLayout mainView = new VLayout(15); mainView.setPadding(15); mainView.setHeight(300); mainView.setWidth(300); mainView.setBorder("2px solid blue"); mainView.addMember(refreshList); mainView.addMember(searchForm); refreshList.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { PickTreeItem newSearchPickTree = new PickTreeItem(); newSearchPickTree.setTitle("Subjects refreshed"); newSearchPickTree.setWidth(210); newSearchPickTree.setTitleAlign(Alignment.LEFT); newSearchPickTree.setTextBoxStyle("ClientAreaStaticFieldLabel"); newSearchPickTree.setTitleStyle("ClientAreaFieldTitle"); newSearchPickTree.setDisplayField("LABEL"); newSearchPickTree.setValueField("NOMCOMPLET"); newSearchPickTree.setOptionDataSource(new SubjectsXmlDS("employeesDS")); newSearchPickTree.setCanSelectParentItems(false); newSearchPickTree.setLoadDataOnDemand(false); searchForm.setFields(newSearchPickTree); searchForm.redraw(); } }); return mainView; } } class SubjectsXmlDS extends DataSource { private static SubjectsXmlDS instance = null; public static SubjectsXmlDS getInstance() { if (instance == null) { instance = new SubjectsXmlDS("employeesDS"); } return instance; } public SubjectsXmlDS(String id) { this.setID(id); this.setRecordXPath("/List/Sujet[@ACTIF=1]"); DataSourceTextField itemIdField = new DataSourceTextField("ID", "Item", 128, true); itemIdField.setPrimaryKey(true); DataSourceTextField itemParentIdField = new DataSourceTextField("PARENTID", null); itemParentIdField.setHidden(true); itemParentIdField.setRequired(true); itemParentIdField.setRootValue("1"); itemParentIdField.setForeignKey("DS.ID"); DataSourceTextField itemLabelField = new DataSourceTextField("LABEL", "Label"); itemLabelField.setRequired(true); DataSourceTextField itemActifField = new DataSourceTextField("ACTIF", "Actif"); itemActifField.setValueMap("0", "1"); itemActifField.setRequired(true); DataSourceTextField itemNomcompletField = new DataSourceTextField("NOMCOMPLET", "Nom"); itemNomcompletField.setRequired(false); DataSourceTextField itemP1Field = new DataSourceTextField("P1", "P1"); itemP1Field.setRequired(false); DataSourceTextField itemP2Field = new DataSourceTextField("P2", "P2"); itemP2Field.setRequired(false); this.setFields(itemIdField, itemParentIdField, itemLabelField, itemActifField, itemNomcompletField, itemP1Field, itemP2Field); setDataURL("ds/test_data/admintoolsservice.xml"); this.setClientOnly(true); } }