package org.vaadin.smartgwt.client.data; import org.vaadin.smartgwt.client.core.PaintableListListener; import org.vaadin.smartgwt.client.core.PaintablePropertyUpdater; import org.vaadin.smartgwt.client.core.VBaseClass; import org.vaadin.smartgwt.client.core.VDataClass; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.DataSourceField; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; public class VDataSource extends VBaseClass<DataSource> { private final PaintablePropertyUpdater propertyUpdater = new PaintablePropertyUpdater(); public VDataSource() { super(new DataSource()); propertyUpdater.addPaintableListListener("fields", new PaintableListListener() { @Override public void onAdd(Paintable[] source, Integer index, Paintable element) { getJSObject().addField(((VDataClass<DataSourceField>) element).getJSObject()); } @Override public void onRemove(Paintable[] source, Integer index, Paintable element) { } }); } @Override protected void preAttributeUpdateFromUIDL(UIDL uidl, ApplicationConnection client) { propertyUpdater.updateFromUIDL(uidl, client); } @Override protected void postAttributeUpdateFromUIDL(UIDL uidl, ApplicationConnection client) { if (uidl.hasAttribute("*ID") && getJSObject().getID() == null) { getJSObject().setID(uidl.getStringAttribute("*ID").substring(1)); } } }