Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/ContinuePanel.java @ 785:3ae0facd4cab
Added a panel that lets users step to a next state without feeding the current artifact with new data.
flys-client/trunk@2282 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 05 Jul 2011 16:12:34 +0000 |
parents | |
children | 3fa8583434b2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ContinuePanel.java Tue Jul 05 16:12:34 2011 +0000 @@ -0,0 +1,94 @@ +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.widgets.Canvas; +import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.LinkItem; +import com.smartgwt.client.widgets.form.fields.events.ClickEvent; +import com.smartgwt.client.widgets.form.fields.events.ClickHandler; + +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.FLYSConstants; +import de.intevation.flys.client.client.event.AdvanceHandler; + + +/** + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class ContinuePanel extends AbstractUIProvider { + + protected static FLYSConstants MSG = GWT.create(FLYSConstants.class); + + protected List<AdvanceHandler> advHandlers; + + + @Override + public Canvas create(DataList dataList) { + DynamicForm form = new DynamicForm(); + form.setWidth(200); + form.setHeight(35); + + LinkItem next = new LinkItem(); + next.setShowTitle(false); + next.setLinkTitle(MSG.next()); + + final ArtifactDescription desc = artifact.getArtifactDescription(); + final String[] reachable = desc.getReachableStates(); + + next.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent e) { + fireOnAdvance(reachable[0]); + } + }); + + form.setFields(next); + + return form; + } + + + @Override + public Canvas createOld(DataList dataList) { + Canvas c = new Canvas(); + c.setHeight(1); + c.setWidth(1); + + return c; + } + + + @Override + protected Data[] getData() { + return new Data[0]; + } + + + public void addAdvanceHandler(AdvanceHandler handler) { + if (advHandlers == null) { + advHandlers = new ArrayList<AdvanceHandler>(); + } + + if (handler != null) { + advHandlers.add(handler); + } + } + + + public void fireOnAdvance(String target) { + if (advHandlers == null || advHandlers.isEmpty()) { + return; + } + + for (AdvanceHandler handler: advHandlers) { + handler.onAdvance(target); + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :