Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java @ 51:a2923d63f530
Introduced a data structure DataList to manage to list of Data objects of a single state.
flys-client/trunk@1505 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 17 Mar 2011 16:44:51 +0000 |
parents | 827eb4e06ebf |
children | 3d5d7788d471 |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import java.util.ArrayList; import java.util.List; import com.google.gwt.core.client.GWT; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.shared.model.Data; import de.intevation.flys.client.shared.model.DataItem; import de.intevation.flys.client.shared.model.DataList; public class ParameterList extends VLayout { protected List<DataList> old; protected DataList current; protected UIProvider uiProvider; protected VLayout oldItems; protected VLayout currentItems; public ParameterList() { old = new ArrayList<DataList>(); oldItems = new VLayout(); currentItems = new VLayout(); init(); } protected void init() { oldItems.setHeight(20); currentItems.setHeight("*"); currentItems.setAlign(VerticalAlignment.TOP); setMembersMargin(20); addMember(oldItems); addMember(currentItems); } protected void clearOldData() { old.clear(); } public void addOldData(DataList old) { if (old != null) { this.old.add(old); } refreshOld(); } public void addOldDatas(DataList[] old) { if (old != null && old.length > 0) { for (DataList o: old) { if (!exists(o)) { GWT.log("Data '" + o.getLabel() + "' is new."); addOldData(o); } } return; } addOldData(null); } public boolean exists(DataList data) { String stateName = data.getState(); for (DataList o: old) { if (stateName.equals(o.getState())) { return true; } } return false; } public void setCurrentData(DataList current, UIProvider uiProvider) { this.current = current; this.uiProvider = uiProvider; refreshCurrent(); } public void refreshOld() { // XXX maybe we should not remove all items but just add the newest item // to the list. oldItems.removeMembers(oldItems.getMembers()); for (DataList dataList: old) { HLayout h = new HLayout(); h.setAlign(VerticalAlignment.TOP); h.setHeight(20); int size = dataList.size(); for (int i = 0; i < size; i++) { // TODO Display all Data objects and use the UIProvider to do so! Data data = dataList.get(i); DataItem[] items = data.getItems(); Label label = new Label(data.getLabel()); Label value = new Label(items[0].getLabel()); h.addMember(label); h.addMember(value); oldItems.addMember(h); } } int minHeight = oldItems.getMinHeight(); if (minHeight <= 20) { oldItems.setHeight(20); } else { oldItems.setHeight(minHeight); } } /** * This method refreshes the part displaying the data of the current state. * The UI is created using the UIProvider stored in the Data object. */ public void refreshCurrent() { currentItems.removeMembers(currentItems.getMembers()); currentItems.addMember(uiProvider.create(current)); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :