ingo@23: package de.intevation.flys.client.client.ui; ingo@23: ingo@23: import java.util.ArrayList; ingo@23: import java.util.List; ingo@23: ingo@23: import com.smartgwt.client.types.VerticalAlignment; ingo@23: import com.smartgwt.client.widgets.Label; ingo@23: import com.smartgwt.client.widgets.layout.HLayout; ingo@23: import com.smartgwt.client.widgets.layout.VLayout; ingo@23: ingo@23: import de.intevation.flys.client.shared.model.Data; ingo@23: import de.intevation.flys.client.shared.model.DataItem; ingo@23: ingo@23: ingo@23: public class ParameterList extends VLayout { ingo@23: ingo@23: protected List old; ingo@23: protected Data current; ingo@23: ingo@23: protected UIProvider uiProvider; ingo@23: ingo@23: protected VLayout oldItems; ingo@23: protected VLayout currentItems; ingo@23: ingo@23: public ParameterList() { ingo@23: old = new ArrayList(); ingo@23: oldItems = new VLayout(); ingo@23: currentItems = new VLayout(); ingo@23: ingo@23: init(); ingo@23: } ingo@23: ingo@23: ingo@23: protected void init() { ingo@23: oldItems.setHeight(20); ingo@23: currentItems.setHeight("*"); ingo@23: currentItems.setAlign(VerticalAlignment.TOP); ingo@23: ingo@23: addMember(oldItems); ingo@23: addMember(currentItems); ingo@23: } ingo@23: ingo@23: ingo@23: public void addOldData(Data old) { ingo@23: if (old != null) { ingo@23: this.old.add(old); ingo@23: } ingo@23: ingo@23: refreshOld(); ingo@23: } ingo@23: ingo@23: ingo@23: public void addOldDatas(Data[] old) { ingo@23: if (old != null && old.length > 0) { ingo@23: for (Data o: old) { ingo@23: addOldData(o); ingo@23: } ingo@23: ingo@23: return; ingo@23: } ingo@23: ingo@23: addOldData(null); ingo@23: } ingo@23: ingo@23: ingo@23: public void setCurrentData(Data current, UIProvider uiProvider) { ingo@23: this.current = current; ingo@23: this.uiProvider = uiProvider; ingo@23: ingo@23: refreshCurrent(); ingo@23: } ingo@23: ingo@23: ingo@23: public void refreshOld() { ingo@23: // XXX maybe we should not remove all items but just add the newest item ingo@23: // to the list. ingo@23: oldItems.removeMembers(oldItems.getMembers()); ingo@23: ingo@23: for (Data data: old) { ingo@23: HLayout h = new HLayout(); ingo@23: h.setAlign(VerticalAlignment.TOP); ingo@23: h.setHeight(20); ingo@23: ingo@23: DataItem[] items = data.getItems(); ingo@23: Label label = new Label(data.getLabel()); ingo@23: Label value = new Label(items[0].getLabel()); ingo@23: ingo@23: h.addMember(label); ingo@23: h.addMember(value); ingo@23: ingo@23: oldItems.addMember(h); ingo@23: } ingo@23: ingo@23: int minHeight = oldItems.getMinHeight(); ingo@23: if (minHeight <= 20) { ingo@23: oldItems.setHeight(20); ingo@23: } ingo@23: else { ingo@23: oldItems.setHeight(minHeight); ingo@23: } ingo@23: } ingo@23: ingo@23: ingo@23: /** ingo@23: * This method refreshes the part displaying the data of the current state. ingo@23: * The UI is created using the UIProvider stored in the Data object. ingo@23: */ ingo@23: public void refreshCurrent() { ingo@23: currentItems.addMember(uiProvider.create(current)); ingo@23: } ingo@23: } ingo@23: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :