Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java @ 72:9b726350ab07
Moved ParameterList specific code into the ParameterList.
flys-client/trunk@1575 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Sat, 26 Mar 2011 18:07:41 +0000 |
parents | f793d35bfb08 |
children | 39210a74db07 |
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.Canvas; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.shared.model.Artifact; import de.intevation.flys.client.shared.model.ArtifactDescription; import de.intevation.flys.client.shared.model.Data; import de.intevation.flys.client.shared.model.DataList; import de.intevation.flys.client.client.event.HasStepBackHandlers; import de.intevation.flys.client.client.event.HasStepForwardHandlers; import de.intevation.flys.client.client.event.ParameterChangeEvent; import de.intevation.flys.client.client.event.ParameterChangeHandler; import de.intevation.flys.client.client.event.StepBackEvent; import de.intevation.flys.client.client.event.StepBackHandler; public class ParameterList extends VLayout implements StepBackHandler, ParameterChangeHandler { protected CollectionView cView; protected List<DataList> old; protected DataList current; protected UIProvider uiProvider; protected VLayout oldItems; protected VLayout currentItems; public ParameterList(CollectionView cView) { this.cView = cView; old = new ArrayList<DataList>(); oldItems = new VLayout(); currentItems = new VLayout(); init(); } protected void init() { setWidth(300); oldItems.setHeight(20); oldItems.setMembersMargin(10); 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); String provider = dataList.getUIProvider(); UIProvider uiprovider = UIProviderFactory.getProvider(provider); ((HasStepBackHandlers) uiprovider).addStepBackHandler(cView); ((HasStepBackHandlers) uiprovider).addStepBackHandler(this); oldItems.addMember(uiprovider.createOld(dataList)); } 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()); if (current != null && uiProvider != null) { Canvas c = uiProvider.create(current); c.setLayoutAlign(VerticalAlignment.TOP); currentItems.addMember(c); } } /** * This method is used to remove all old items from this list after the user * has clicked the step back button. * * @param e The StepBackEvent. */ public void onStepBack(StepBackEvent e) { old.clear(); oldItems.removeMembers(oldItems.getMembers()); } /** * Implements the onCollectionChange() method to do update the GUI after the * parameterization has changed. * * @param event The ParameterChangeEvent. */ public void onParameterChange(ParameterChangeEvent event) { GWT.log("ParameterList.onParameterChange"); Artifact art = event.getNewValue(); ArtifactDescription desc = art.getArtifactDescription(); DataList currentData = desc.getCurrentData(); if (currentData != null) { // the user has to enter some attributes String uiProvider = currentData.getUIProvider(); UIProvider provider = UIProviderFactory.getProvider(uiProvider); ((HasStepForwardHandlers) provider).addStepForwardHandler(cView); ((HasStepBackHandlers) provider).addStepBackHandler(cView); setCurrentData(currentData, provider); } else { // we have reached a final state with no more user input setCurrentData(null, null); } addOldDatas(desc.getOldData()); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :