Mercurial > dive4elements > river
changeset 1432:40f4137a2c31
Added a cancel button to the LoadingPanel which stops running WSPLGEN calculations (realized by returning to the previous state).
flys-client/trunk@3386 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 12 Dec 2011 09:11:28 +0000 |
parents | 987f95ceb623 |
children | d73f503f2465 |
files | flys-client/ChangeLog flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties flys-client/src/main/java/de/intevation/flys/client/client/ui/CollectionView.java flys-client/src/main/java/de/intevation/flys/client/client/ui/LoadingPanel.java flys-client/src/main/webapp/images/cancelCalculation.png |
diffstat | 8 files changed, 108 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-client/ChangeLog Mon Dec 12 09:02:13 2011 +0000 +++ b/flys-client/ChangeLog Mon Dec 12 09:11:28 2011 +0000 @@ -1,3 +1,21 @@ +2011-12-12 Ingo Weinzierl <ingo@intevation.de> + + * src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants.properties, + src/main/java/de/intevation/flys/client/client/FLYSConstants.java: Added + links to a cancel button and strings for a "Calculation canceled" message. + + * src/main/java/de/intevation/flys/client/client/ui/CollectionView.java: + Register the ParameterList as StepBackHandler on the LoadingPanel. + + * src/main/java/de/intevation/flys/client/client/ui/LoadingPanel.java: The + loading dialog now includes a button to stop a running calculation. + Stopping a running calculation means to return to the previous state. + + * src/main/webapp/images/cancelCalculation.png: New. An image for a cancel + button. + 2011-12-12 Raimund Renkert <raimund.renkert@intevation.de> * src/main/java/de/intevation/flys/client/client/ui/chart/ChartPropertiesEditor.java:
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Mon Dec 12 09:02:13 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Mon Dec 12 09:11:28 2011 +0000 @@ -274,6 +274,10 @@ String label_cancel(); + String cancelCalculationLabel(); + + String calculationCanceled(); + String flysLogo(); String bfgLogo(); @@ -286,6 +290,8 @@ String loadingImg(); + String cancelCalculation(); + String markerRed(); String markerGreen();
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Mon Dec 12 09:02:13 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Mon Dec 12 09:11:28 2011 +0000 @@ -72,6 +72,8 @@ removeTheme = Remove label_ok = Ok label_cancel = Cancel +cancelCalculationLabel = Stop the current calculation. +calculationCanceled = The calculation has been canceled. # Header images flysLogo = images/flys_logo.gif @@ -82,6 +84,7 @@ downloadPDF = images/downloadPDF.png downloadSVG = images/downloadSVG.png loadingImg = images/loading.gif +cancelCalculation = images/cancelCalculation.png markerRed = images/marker_red.png markerGreen = images/marker_green.png riverMap = images/gewkarte.png
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Mon Dec 12 09:02:13 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Mon Dec 12 09:11:28 2011 +0000 @@ -72,6 +72,8 @@ removeTheme = Entfernen label_ok = Ok label_cancel = Abbrechen +cancelCalculationLabel = Aktuelle Berechnung abbrechen. +calculationCanceled = Die Berechnung wurde abgebrochen. # Header images flysLogo = images/flys_logo.gif @@ -82,6 +84,7 @@ downloadPDF = images/downloadPDF.png downloadSVG = images/downloadSVG.png loadingImg = images/loading.gif +cancelCalculation = images/cancelCalculation.png markerRed = images/marker_red.png markerGreen = images/marker_green.png riverMap = images/gewkarte.png
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Mon Dec 12 09:02:13 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Mon Dec 12 09:11:28 2011 +0000 @@ -72,6 +72,8 @@ removeTheme = Remove label_ok = Ok label_cancel = Cancel +cancelCalculationLabel = Stop the current calculation. +calculationCanceled = The calculation has been canceled. # Header images flysLogo = images/flys_logo.gif @@ -82,6 +84,7 @@ downloadPDF = images/downloadPDF.png downloadSVG = images/downloadSVG.png loadingImg = images/loading.gif +cancelCalculation = images/cancelCalculation.png markerRed = images/marker_red.png markerGreen = images/marker_green.png riverMap = images/gewkarte.png
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/CollectionView.java Mon Dec 12 09:02:13 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/CollectionView.java Mon Dec 12 09:11:28 2011 +0000 @@ -338,7 +338,8 @@ artifactChanged(); if (artifact.isInBackground()) { - new LoadingPanel(this, artifact); + LoadingPanel p = new LoadingPanel(this, artifact); + p.addStepBackHandler(parameterList); } }
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/LoadingPanel.java Mon Dec 12 09:02:13 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/LoadingPanel.java Mon Dec 12 09:11:28 2011 +0000 @@ -1,5 +1,6 @@ package de.intevation.flys.client.client.ui; +import java.util.ArrayList; import java.util.List; import com.google.gwt.core.client.GWT; @@ -12,17 +13,25 @@ import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Img; import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.events.ClickEvent; +import com.smartgwt.client.widgets.events.ClickHandler; +import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.client.Config; import de.intevation.flys.client.client.FLYSConstants; +import de.intevation.flys.client.client.event.HasStepBackHandlers; +import de.intevation.flys.client.client.event.StepBackEvent; +import de.intevation.flys.client.client.event.StepBackHandler; import de.intevation.flys.client.client.services.DescribeArtifactService; import de.intevation.flys.client.client.services.DescribeArtifactServiceAsync; import de.intevation.flys.client.shared.model.Artifact; +import de.intevation.flys.client.shared.model.ArtifactDescription; import de.intevation.flys.client.shared.model.CalculationMessage; +import de.intevation.flys.client.shared.model.DataList; -public class LoadingPanel extends Canvas { +public class LoadingPanel extends Canvas implements HasStepBackHandlers { public static final int UPDATE_INTERVAL = 1000 * 3; @@ -32,10 +41,13 @@ private FLYSConstants MSG = GWT.create(FLYSConstants.class); + protected List<StepBackHandler> handlers; + protected CollectionView parent; protected Artifact artifact; protected VLayout dialog; + protected HLayout cancelRow; protected Label msg; protected Label title; @@ -45,6 +57,7 @@ public LoadingPanel(CollectionView parent, Artifact artifact) { super(); + this.handlers = new ArrayList<StepBackHandler>(); this.parent = parent; this.artifact = artifact; this.msg = new Label(""); @@ -77,6 +90,32 @@ } + public Artifact getArtifact() { + return artifact; + } + + + @Override + public void addStepBackHandler(StepBackHandler handler) { + if (handler != null) { + handlers.add(handler); + } + } + + + /** + * This method is called after the user has clicked the button to cancel the + * current process. + * + * @param e The StepBackEvent. + */ + protected void fireStepBackEvent(StepBackEvent e) { + for (StepBackHandler handler: handlers) { + handler.onStepBack(e); + } + } + + protected VLayout createDialog() { String baseUrl = GWT.getHostPageBaseURL(); @@ -92,12 +131,28 @@ Img img = new Img(baseUrl + MSG.loadingImg(), 25, 25); + Label cancelLabel = new Label(MSG.cancelCalculationLabel()); + Img cancel = new Img(baseUrl + MSG.cancelCalculation(), 25, 25); + cancel.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent e) { + cancel(); + } + }); + + cancelRow = new HLayout(); + cancelRow.setHeight(27); + cancelRow.setWidth100(); + cancelRow.addMember(cancel); + cancelRow.addMember(cancelLabel); + VLayout box = new VLayout(); box.setStyleName("loading-box"); box.setAlign(VerticalAlignment.TOP); box.setDefaultLayoutAlign(VerticalAlignment.TOP); box.addMember(title); box.addMember(msg); + box.addMember(cancelRow); box.setMembersMargin(0); box.setHeight(125); box.setWidth(275); @@ -116,6 +171,14 @@ } + public String getTargetState() { + ArtifactDescription desc = getArtifact().getArtifactDescription(); + DataList[] oldData = desc.getOldData(); + + return oldData[oldData.length -1].getState(); + } + + private void startTimer() { Timer t = new Timer() { @Override @@ -136,7 +199,7 @@ describe.describe(locale, artifact, new AsyncCallback<Artifact>() { public void onFailure(Throwable t) { GWT.log("Error while DESCRIBE artifact: " + t.getMessage()); - // SC.warn()... + startTimer(); } @@ -174,9 +237,16 @@ } + private void cancel() { + fireStepBackEvent(new StepBackEvent(getTargetState())); + parent.removeChild(dialog); + parent.removeChild(this); + } + + private void finish() { + parent.removeChild(dialog); parent.removeChild(this); - parent.removeChild(dialog); parent.setArtifact(artifact); } }