package org.vaadin.smartgwt; import static argo.jdom.JsonNodeBuilders.*; import static argo.jdom.JsonNodeFactories.*; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; import org.vaadin.smartgwt.server.BaseWidget; import org.vaadin.smartgwt.server.Button; import org.vaadin.smartgwt.server.Canvas; import org.vaadin.smartgwt.server.Label; import org.vaadin.smartgwt.server.data.Record; import org.vaadin.smartgwt.server.events.ClickEvent; import org.vaadin.smartgwt.server.events.ClickHandler; import org.vaadin.smartgwt.server.extra.HSplitLayout; import org.vaadin.smartgwt.server.extra.RefreshListener; import org.vaadin.smartgwt.server.extra.Refresher; import org.vaadin.smartgwt.server.extra.VSplitLayout; import org.vaadin.smartgwt.server.form.DynamicForm; import org.vaadin.smartgwt.server.form.fields.DateItem; import org.vaadin.smartgwt.server.form.fields.FormItem; import org.vaadin.smartgwt.server.form.fields.PickerIcon; import org.vaadin.smartgwt.server.form.fields.SelectItem; import org.vaadin.smartgwt.server.form.fields.TextItem; import org.vaadin.smartgwt.server.form.fields.events.FormItemClickHandler; import org.vaadin.smartgwt.server.form.fields.events.FormItemIconClickEvent; import org.vaadin.smartgwt.server.grid.ListGrid; import org.vaadin.smartgwt.server.grid.ListGridField; import org.vaadin.smartgwt.server.grid.ListGridRecord; import org.vaadin.smartgwt.server.grid.events.RecordDoubleClickEvent; import org.vaadin.smartgwt.server.grid.events.RecordDoubleClickHandler; import org.vaadin.smartgwt.server.grid.events.SelectionChangedHandler; import org.vaadin.smartgwt.server.grid.events.SelectionEvent; import org.vaadin.smartgwt.server.grid.events.SelectionUpdatedEvent; import org.vaadin.smartgwt.server.grid.events.SelectionUpdatedHandler; import org.vaadin.smartgwt.server.layout.BorderLayout; import org.vaadin.smartgwt.server.layout.HLayout; import org.vaadin.smartgwt.server.layout.Layout; import org.vaadin.smartgwt.server.layout.MasterContainer; import org.vaadin.smartgwt.server.layout.SectionStack; import org.vaadin.smartgwt.server.layout.SectionStackSection; import org.vaadin.smartgwt.server.layout.VLayout; import org.vaadin.smartgwt.server.tab.Tab; import org.vaadin.smartgwt.server.tab.TabSet; import org.vaadin.smartgwt.server.toolbar.ToolStrip; import org.vaadin.smartgwt.server.toolbar.ToolStripButton; import org.vaadin.smartgwt.server.types.Alignment; import org.vaadin.smartgwt.server.types.DragDataAction; import org.vaadin.smartgwt.server.types.ListGridEditEvent; import org.vaadin.smartgwt.server.types.ListGridFieldType; import org.vaadin.smartgwt.server.types.SelectionType; import org.vaadin.smartgwt.server.util.BooleanCallback; import argo.format.CompactJsonFormatter; import argo.format.JsonFormatter; import argo.jdom.JsonArrayNodeBuilder; import argo.jdom.JsonObjectNodeBuilder; import argo.jdom.JsonRootNode; import com.google.web.bindery.event.shared.HandlerRegistration; import com.vaadin.Application; import com.vaadin.ui.Window; public class SmartGWTApplication extends Application implements MasterContainerHolder { private static final long serialVersionUID = 1L; private TabSet tabset; private static final JsonFormatter JSON_FORMATTER = new CompactJsonFormatter(); private final MasterContainer masterContainer = new MasterContainer(); @Override public MasterContainer getMasterContainer() { return masterContainer; } @Override public void init() { setTheme("smartvaadin"); final Window mainWindow = new Window("BorderLayout Test 2"); setMainWindow(mainWindow); mainWindow.setStyleName(null); mainWindow.setSizeFull(); CountryXmlDS.reset(); masterContainer.addDataSource(CountryXmlDS.getInstance()); masterContainer.setPane(getMainPanel()); mainWindow.setContent(masterContainer); } public Canvas getSplitTest() { VSplitLayout split = new VSplitLayout(); split.setWidth100(); split.setAutoHeight(); Label label2 = new Label("right"); label2.setBackgroundColor("yellow"); split.setTopMember(getListGrid()); split.setBottomMember(label2); return split; } public SectionStack getStackView() { SectionStack sectionStack = new SectionStack(); sectionStack.setWidth(200); final ListGrid listGrid = new ListGrid(); listGrid.setCanEdit(true); listGrid.setEditEvent(ListGridEditEvent.CLICK); listGrid.setFields(new ListGridField("system", "System"), new ListGridField("monitor", "Monitor")); SectionStackSection section1 = new SectionStackSection("Monitors"); section1.addItem(listGrid); section1.setExpanded(true); SectionStackSection section2 = new SectionStackSection("Monitors"); section2.addItem(getVertical()); section2.setExpanded(true); sectionStack.addSection(section1); sectionStack.addSection(section2); return sectionStack; } public static String getJsonString(Object object) { if (object instanceof Map == false) return null; JsonObjectNodeBuilder builder = anObjectBuilder(); Map<String, Object> record = (Map<String, Object>) object; JsonObjectNodeBuilder nodeBuilder = anObjectBuilder(); for (Map.Entry<String, Object> entry : record.entrySet()) { nodeBuilder.withField(entry.getKey(), aJsonString(entry.getValue() == null ? "" : entry.getValue().toString())); } return JSON_FORMATTER.format(builder.build()); } public static String getJsonString2(Record[] records) { JsonObjectNodeBuilder builder = anObjectBuilder(); JsonArrayNodeBuilder recordBuilder = anArrayBuilder(); for (Record record : records) { JsonObjectNodeBuilder nodeBuilder = anObjectBuilder(); for (int i = 0; i < record.getAttributes().length; i++) { final String name = record.getAttributes()[i]; final Object value = record.getAttributeAsObject(name); nodeBuilder.withField(name, aJsonString(value == null ? "" : value.toString())); } recordBuilder.withElement(nodeBuilder); } builder.withField("records", recordBuilder); JsonRootNode jso = recordBuilder.build(); return JSON_FORMATTER.format(jso); } private Canvas getListGrid() { final ListGrid countryGrid = new ListGrid() { @Override public void selectionChanged(ListGridRecord[] selections) { System.out.print("records: "); for (ListGridRecord record : selections) { System.out.print(record.getAttributeAsString("countryName") + ","); } System.out.println(); } }; countryGrid.setWidth(500); countryGrid.setHeight(224); countryGrid.setShowAllRecords(true); countryGrid.setCanDragRecordsOut(true); countryGrid.setCanAcceptDroppedRecords(true); countryGrid.setCanReorderRecords(true); countryGrid.setDragDataAction(DragDataAction.MOVE); ListGridField countryCodeField = new ListGridField("countryCode", "Flag", 40); countryCodeField.setAlign(Alignment.CENTER); countryCodeField.setType(ListGridFieldType.IMAGE); countryCodeField.setImageURLPrefix("flags/16/"); countryCodeField.setImageURLSuffix(".png"); ListGridField nameField = new ListGridField("countryName", "Country"); ListGridField capitalField = new ListGridField("capital", "Capital"); ListGridField continentField = new ListGridField("continent", "Continent"); countryGrid.setFields(countryCodeField, nameField, capitalField, continentField); countryGrid.setCanResizeFields(true); countryGrid.setData(CountryData.getRecords()); return countryGrid; } private Canvas getEditableListGrid() { VLayout surrounding = new VLayout(); surrounding.setSizeFull(); ToolStrip toolStrip = new ToolStrip(); toolStrip.setWidth100(); ToolStripButton boldButton = new ToolStripButton(); boldButton.setIcon("[SKIN]/RichTextEditor/text_bold.png"); boldButton.setActionType(SelectionType.CHECKBOX); toolStrip.addButton(boldButton); toolStrip.addResizer(); ToolStripButton italicsButton = new ToolStripButton(); italicsButton.setIcon("[SKIN]/RichTextEditor/text_italic.png"); italicsButton.setActionType(SelectionType.CHECKBOX); toolStrip.addButton(italicsButton); ToolStripButton underlineButton = new ToolStripButton(); underlineButton.setIcon("[SKIN]/RichTextEditor/text_underline.png"); underlineButton.setActionType(SelectionType.CHECKBOX); toolStrip.addButton(underlineButton); toolStrip.addSeparator(); ToolStripButton alignLeftButton = new ToolStripButton(); alignLeftButton.setIcon("[SKIN]/RichTextEditor/text_align_left.png"); alignLeftButton.setActionType(SelectionType.RADIO); alignLeftButton.setRadioGroup("textAlign"); toolStrip.addButton(alignLeftButton); ToolStripButton alignRightButton = new ToolStripButton(); alignRightButton.setIcon("[SKIN]/RichTextEditor/text_align_right.png"); alignRightButton.setActionType(SelectionType.RADIO); alignRightButton.setRadioGroup("textAlign"); toolStrip.addButton(alignRightButton); ToolStripButton alignCenterButton = new ToolStripButton(); alignCenterButton.setIcon("[SKIN]/RichTextEditor/text_align_center.png"); alignCenterButton.setActionType(SelectionType.RADIO); alignCenterButton.setRadioGroup("textAlign"); toolStrip.addButton(alignCenterButton); toolStrip.addSeparator(); HLayout layout = new HLayout(); layout.setSizeFull(); final ListGrid countryGrid = new ListGrid(); countryGrid.setMargin(5); countryGrid.setWidth(550); countryGrid.setHeight(224); countryGrid.setShowAllRecords(true); countryGrid.setCellHeight(22); // use server-side dataSource so edits are retained across page transitions countryGrid.setDataSource(CountryXmlDS.getInstance()); countryGrid.setUseAllDataSourceFields(false); ListGridField countryCodeField = new ListGridField("countryCode", "Flag", 40); countryCodeField.setAlign(Alignment.CENTER); countryCodeField.setType(ListGridFieldType.IMAGE); countryCodeField.setImageURLPrefix("flags/16/"); countryCodeField.setImageURLSuffix(".png"); countryCodeField.setCanEdit(false); ListGridField nameField = new ListGridField("countryName", "Pays"); ListGridField continentField = new ListGridField("continent", "Continent"); ListGridField memberG8Field = new ListGridField("member_g8", "Member G8"); ListGridField populationField = new ListGridField("population", "Population"); populationField.setType(ListGridFieldType.INTEGER); // populationField.setCellFormatter(new NumericFormatter()); ListGridField independenceField = new ListGridField("independence", "Independence"); countryGrid.setFields(countryCodeField, nameField, continentField, memberG8Field, populationField, independenceField); countryGrid.setAutoFetchData(true); countryGrid.setCanEdit(false); layout.addMember(countryGrid); surrounding.addMember(toolStrip); surrounding.addMember(layout); countryGrid.addSelectionChangedHandler(new SelectionChangedHandler() { @Override public void onSelectionChanged(SelectionEvent event) { return; } }); countryGrid.addSelectionUpdatedHandler(new SelectionUpdatedHandler() { @Override public void onSelectionUpdated(SelectionUpdatedEvent event) { if (countryGrid.getSelectedRecords().length > 0) { System.out.println(countryGrid.getSelectedRecords()[0].getAttribute("countryName")); } } }); countryGrid.addRecordDoubleClickHandler(new RecordDoubleClickHandler() { @Override public void onRecordDoubleClick(RecordDoubleClickEvent event) { masterContainer.getSC().say(event.getRecord().getAttribute("countryName") + " double clicked!"); } }); return surrounding; } private Layout paintBorderLayout() { final VLayout outerLayout = new VLayout(); outerLayout.setSizeFull(); outerLayout.setBackgroundColor("cyan"); final HLayout northLayout = new HLayout(); northLayout.setBackgroundColor("blue"); northLayout.setHeight("25%"); final HLayout outerCenterLayout = new HLayout(); outerCenterLayout.setBackgroundColor("green"); outerCenterLayout.setHeight("*"); final HLayout southLayout = new HLayout(); southLayout.setBackgroundColor("red"); southLayout.setHeight("25%"); final HLayout westLayout = new HLayout(); westLayout.setBackgroundColor("orange"); westLayout.setWidth("25%"); final HLayout centerLayout = new HLayout(); centerLayout.setBackgroundColor("white"); centerLayout.setWidth("*"); final HLayout eastLayout = new HLayout(); eastLayout.setBackgroundColor("pink"); eastLayout.setWidth("25%"); outerCenterLayout.addMember(westLayout); outerCenterLayout.addMember(centerLayout); outerCenterLayout.addMember(eastLayout); outerLayout.addMember(northLayout); outerLayout.addMember(outerCenterLayout); outerLayout.addMember(southLayout); return outerLayout; } private Layout complexLayout(boolean subPanel) { BorderLayout layout = new BorderLayout(); layout.setSizeFull(); HLayout north = new HLayout(); Button button = new Button("north"); north.addMember(button); north.setBackgroundColor("red"); Label south = new Label("south"); south.setBackgroundColor("red"); south.setHeight("50"); BaseWidget west = getButtonLayout(); west.setWidth("150"); Label east = new Label("east"); east.setBackgroundColor("green"); east.setHeight100(); /* * TEMP layout.addMember(north, BorderLayout.Constraint.NORTH); * * if (subPanel) layout.addMember(getMainPanel(), BorderLayout.Constraint.CENTER); layout.addMember(south, BorderLayout.Constraint.SOUTH); * layout.addMember(west, BorderLayout.Constraint.WEST); layout.addMember(east, BorderLayout.Constraint.EAST); */ return layout; } private Layout getEricLayout() { HLayout layout = new HLayout(); layout.setWidth100(); layout.setHeight100(); layout.setMembersMargin(20); VLayout vLayout = new VLayout(); vLayout.setShowEdges(true); vLayout.setWidth(150); vLayout.setMembersMargin(5); vLayout.setLayoutMargin(10); vLayout.addMember(new BlueBox(null, 50, "height 50")); vLayout.addMember(new BlueBox((String) null, "*", "height *")); vLayout.addMember(new BlueBox((String) null, "30%", "height 30%")); layout.addMember(vLayout); HLayout hLayout = new HLayout(); hLayout.setShowEdges(true); hLayout.setHeight(150); hLayout.setMembersMargin(5); hLayout.setLayoutMargin(10); hLayout.addMember(new BlueBox(50, (Integer) null, "width 50")); hLayout.addMember(new BlueBox("*", null, "width *")); hLayout.addMember(new BlueBox("30%", null, "width 30%")); layout.addMember(hLayout); return layout; } class BlueBox extends Label { /** * */ private static final long serialVersionUID = 1L; public BlueBox(String contents) { super(""); setAlign(Alignment.CENTER); setBorder("1px solid #808080"); setBackgroundColor("#C3D9FF"); setContents(contents); } public BlueBox(Integer width, Integer height, String contents) { this(contents); if (width != null) setWidth(String.valueOf(width)); if (height != null) setHeight(String.valueOf(height)); } public BlueBox(Integer width, String height, String contents) { this(contents); if (width != null) setWidth(String.valueOf(width)); if (height != null) setHeight(String.valueOf(height)); } public BlueBox(String width, String height, String contents) { this(contents); if (width != null) setWidth(String.valueOf(width)); if (height != null) setHeight(String.valueOf(height)); } } private BaseWidget getButtonLayout() { VLayout layout = new VLayout(); layout.setWidth100(); layout.setHeight100(); for (int i = 0; i < 10; i++) { Button button = new Button("Button " + i); button.setHeight("*"); button.setWidth("100 px"); layout.addMember(button); } return layout; } private Canvas getMainPanel() { final List<Tab> tabs = new ArrayList<Tab>(); tabset = new TabSet(); tabset.setSizeFull(); final Tab tab = new Tab("premier"); final Tab tab2 = new Tab("deuxieme"); final Tab tab3 = new Tab("troisième"); final Tab tab4 = new Tab("un autre"); final Tab tab5 = new Tab("recursif"); final Tab tab6 = new Tab("avec event"); final Tab tab7 = new Tab("Fake border"); tab.setPane(createForm(4)); tab2.setPane(getEditableListGrid()); VLayout vl = new VLayout(); vl.setMembersMargin(4); vl.addMember(newButton("Press me 1!", new ClickHandler() { @Override public void onClick(ClickEvent event) { tabset.selectTab(1); } })); vl.addMember(newButton("Press me 2!", new ClickHandler() { public void onClick(ClickEvent event) { org.vaadin.smartgwt.server.Window window = new org.vaadin.smartgwt.server.Window(masterContainer); window.setTitle("Modal Window"); window.setWidth(900); window.setHeight(700); window.setShowMinimizeButton(false); window.setShowResizer(true); window.setIsModal(true); window.setShowModalMask(true); window.setAutoCenter(true); window.setCanDragReposition(true); window.setCanDragResize(true); window.addItem(getMainPanel()); window.show(); } })); vl.addMember(newButton("Press me 3!", new ClickHandler() { @Override public void onClick(ClickEvent event) { tabset.removeTab(tab3); } })); vl.addMember(new Button("Press me 4!")); vl.addMember(newButton("Add Tab", new ClickHandler() { @Override public void onClick(ClickEvent event) { tabset.addTab(newTab("Title", newLabel("LABEL", "blue"))); } })); vl.addMember(newButton("Add Tab Index 0", new ClickHandler() { @Override public void onClick(ClickEvent event) { tabset.addTab(newTab("Title", newLabel("INDEXED", "red")), 0); } })); vl.addMember(newButton("Remove Tab", new ClickHandler() { @Override public void onClick(ClickEvent event) { tabset.removeTab(tabset.getTabs()[tabset.getTabs().length - 1]); } })); Label filler = new Label(""); filler.setHeight("*"); filler.setWidth100(); vl.addMember(filler); tab5.setPane(complexLayout(false)); tab6.setPane(getVertical()); tab3.setPane(vl); tab4.setPane(getSpecial()); Tab tabEric = new Tab("Éric"); tabEric.setPane(getEricLayout()); tab7.setPane(paintBorderLayout()); tabs.add(tab); tabs.add(tab2); tabs.add(tab3); tabs.add(tab4); tabs.add(tab5); tabs.add(tab6); tabs.add(tab7); tabs.add(newTab("sections", getStackView())); tabs.add(newTab("splitLayout", newSplitLayoutPane())); tabs.add(newTab("postCreationModification", newPostCreationModifiedLayout())); tabs.add(newTab("confirmDialogs", newConfirmDialogsLayout())); tabs.add(newTab("windowClose", newWindowCloseHandlingLayout())); tabs.add(newTab("buttonDisabling", newButtonDisabingLayout())); tabs.add(newTab("refresh demo", newRefreshDemoLayout())); tabset.setTabs(tabs.toArray(new Tab[0])); return tabset; } private Layout getVertical() { final VLayout layout = new VLayout(); layout.setWidth100(); layout.setHeight100(); for (int i = 1; i <= 10; i++) { final Button button = new Button("Button " + i); button.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (new Random().nextBoolean() == true) { layout.removeMember(button); } else { layout.replaceMember(button, new Button("unclickable button")); } } }); layout.addMember(button); } return layout; } private Tab newTab(String title, Canvas pane) { final Tab tab = new Tab(title); tab.setPane(pane); return tab; } private Canvas newSplitLayoutPane() { final VSplitLayout vLayout = new VSplitLayout(); final HSplitLayout hLayout = new HSplitLayout(); vLayout.setWidth(500); hLayout.setLeftMember(newLabel("LEFT", "blue")); hLayout.getLeftMember().setShowResizeBar(true); hLayout.setRightMember(newLabel("RIGHT", "green")); vLayout.setTopMember(newLabel("TOP", "red")); vLayout.getTopMember().setShowResizeBar(true); vLayout.setBottomMember(hLayout); return vLayout; } private Label newLabel(String content, String bgColor) { final Label label = new Label(content); label.setBackgroundColor(bgColor); label.setAlign(Alignment.CENTER); return label; } private Canvas newPostCreationModifiedLayout() { final VLayout layout = new VLayout(); final Label yellow = newLabel("YELLOW", "yellow"); layout.addMember(newButton("Load Layout", new ClickHandler() { @Override public void onClick(ClickEvent event) { layout.removeMember(yellow); final Label blue = newLabel("BLUE", "blue"); layout.addMember(newLabel("GREEN", "green")); layout.addMember(blue); layout.addMember(newLabel("RED", "red")); layout.removeMember(blue); } })); layout.addMember(yellow); return layout; } private Canvas newConfirmDialogsLayout() { final VLayout mainLayout = new VLayout(); mainLayout.addMember(newButton("without title", new ClickHandler() { @Override public void onClick(ClickEvent event) { masterContainer.getSC().confirm("message", new BooleanCallback() { @Override public void execute(Boolean value) { masterContainer.getSC().say(value + " choosen."); } }); } })); mainLayout.addMember(newButton("with title", new ClickHandler() { @Override public void onClick(ClickEvent event) { masterContainer.getSC().confirm("this is a title", "message", new BooleanCallback() { @Override public void execute(Boolean value) { masterContainer.getSC().say(value + " choosen."); } }); } })); return mainLayout; } private Canvas newWindowCloseHandlingLayout() { final VLayout mainLayout = new VLayout(); mainLayout.addComponent(newButton("Open window", new ClickHandler() { @Override public void onClick(ClickEvent event) { final org.vaadin.smartgwt.server.Window window = new org.vaadin.smartgwt.server.Window(masterContainer); window.addItem(newButton("Close window", new ClickHandler() { @Override public void onClick(ClickEvent event) { window.dispose(); } })); window.show(); } })); return mainLayout; } private Canvas newButtonDisabingLayout() { final VLayout mainLayout = new VLayout(); final Button button2 = new Button(); mainLayout.addMember(newButton("Click Me", new ClickHandler() { @Override public void onClick(ClickEvent event) { button2.setEnabled(!button2.isEnabled()); } })); mainLayout.addMember(button2); return mainLayout; } private Canvas newRefreshDemoLayout() { final Refresher refresher = new Refresher(); refresher.setInterval(3000); masterContainer.addNonUIComponent(refresher); final VLayout mainLayout = new VLayout(); mainLayout.addComponent(newButton("Open window", new ClickHandler() { @Override public void onClick(ClickEvent event) { final org.vaadin.smartgwt.server.Window window = new org.vaadin.smartgwt.server.Window(masterContainer); class RefreshHandler extends RefreshListener { private HandlerRegistration registration; @Override public void refresh(Refresher source) { registration.removeHandler(); window.dispose(); } public void setRegistration(HandlerRegistration registration) { this.registration = registration; } } final RefreshHandler listener = new RefreshHandler(); listener.setRegistration(refresher.addListener(listener)); window.addItem(new Label("Hello World!")); window.show(); } })); return mainLayout; } public VLayout getSpecial() { VLayout vlayout = new VLayout(); vlayout.setMargin(15); vlayout.setWidth("100%"); vlayout.setMembersMargin(30); vlayout.addMember(createForm(4)); Button button = new Button("Click to switch"); button.setIcon("http://www.mricons.com/store/png/119004_36574_32_top_icon.png"); button.setWidth(200); button.setActionType(SelectionType.CHECKBOX); vlayout.addMember(button); vlayout.addMember(createForm(6)); return vlayout; } public DynamicForm createForm(int nbCols) { DynamicForm form = new DynamicForm(); form.setWidth("100%"); form.setNumCols(nbCols); form.setBackgroundColor("#F0F0F0"); form.setShowShadow(true); form.setShadowDepth(10); form.setBorder("1px solid gray"); form.setTitle("Un formulaire..."); form.setPadding(10); int i = 1; final FormItem tiEvent = new TextItem("blah" + i); tiEvent.setTitle("Edit Field " + i++); tiEvent.setValue("value!"); tiEvent.setWidth("100%"); final PickerIcon icon = new PickerIcon(PickerIcon.CLEAR); icon.addFormItemClickHandler(new FormItemClickHandler() { @Override public void onFormItemClick(FormItemIconClickEvent event) { tiEvent.setValue(""); } }); tiEvent.setIcons(icon); form.addField(tiEvent); FormItem ti = new TextItem("blah" + i); ti.setTitle("Edit Field " + i++); ti.setValue("value!"); ti.setWidth("100%"); form.addField(ti); ti = new TextItem("blah" + i); ti.setTitle("Edit Field " + i++); ti.setValue("value!"); ti.setWidth("100%"); form.addField(ti); SelectItem si = new SelectItem("blah" + i); si.setTitle("Autre Field " + i++); si.setWidth("100%"); ListGridField countryCodeField = new ListGridField("countryCode", "Flag", 40); countryCodeField.setAlign(Alignment.CENTER); countryCodeField.setType(ListGridFieldType.IMAGE); countryCodeField.setImageURLPrefix("flags/16/"); countryCodeField.setImageURLSuffix(".png"); countryCodeField.setCanEdit(false); ListGridField nameField = new ListGridField("countryName", "Pays"); ListGridField continentField = new ListGridField("continent", "Continent"); ListGridField memberG8Field = new ListGridField("member_g8", "Member G8"); ListGridField populationField = new ListGridField("population", "Population"); populationField.setType(ListGridFieldType.INTEGER); // populationField.setCellFormatter(new NumericFormatter()); ListGridField independenceField = new ListGridField("independence", "Independence"); si.setPickListFields(countryCodeField, nameField, continentField, memberG8Field, populationField, independenceField); si.setOptionDataSource(CountryXmlDS.getInstance()); form.addField(si); si = new SelectItem("blah" + i); si.setTitle("Autre Field " + i++); si.setWidth("100%"); form.addField(si); si = new SelectItem("blah" + i); si.setTitle("Autre Field " + i++); si.setWidth("100%"); form.addField(si); si = new SelectItem("blah" + i); si.setTitle("Autre Field " + i++); si.setWidth("100%"); form.addField(si); DateItem di = new DateItem("blah" + i); di.setWidth("100%"); di.setTitle("Edit Field " + i++); di.setUseTextField(true); form.addField(di); di = new DateItem("blah" + i); di.setWidth("100%"); di.setTitle("Edit Field " + i++); form.addField(di); di = new DateItem("blah" + i); di.setWidth("100%"); di.setTitle("Edit Field " + i++); di.setUseTextField(true); form.addField(di); di = new DateItem("blah" + i); di.setWidth("100%"); di.setTitle("Edit Field " + i++); form.addField(di); di = new DateItem("blah" + i); di.setWidth("100%"); di.setTitle("Edit Field " + i++); form.addField(di); ti = new TextItem("blah" + i); ti.setWidth("100%"); ti.setTitle("Edit Field " + i++); form.addField(ti); ti = new TextItem("blah" + i); ti.setWidth("100%"); ti.setTitle("Edit Field " + i++); form.addField(ti); return form; } private static Button newButton(String title, ClickHandler handler) { final Button button = new Button(title); button.addClickHandler(handler); return button; } public static <T> Iterable<T> iterate(final Enumeration<T> en) { final Iterator<T> iterator = new Iterator<T>() { @Override public boolean hasNext() { return en.hasMoreElements(); } @Override public T next() { return en.nextElement(); } @Override public void remove() { throw new UnsupportedOperationException(); } }; return new Iterable<T>() { @Override public Iterator<T> iterator() { return iterator; } }; } }