diff flys-client/src/main/java/de/intevation/flys/client/client/ui/LoadingPanel.java @ 865:43f520f923a8

Remove the loading panel when its Artifact's background process is finished. flys-client/trunk@2672 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 08 Sep 2011 07:44:05 +0000
parents c9549074ecd1
children d5fb88ba99d2
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/LoadingPanel.java	Thu Sep 08 06:56:17 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/LoadingPanel.java	Thu Sep 08 07:44:05 2011 +0000
@@ -2,21 +2,27 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import com.smartgwt.client.types.Alignment;
 import com.smartgwt.client.types.Positioning;
-import com.smartgwt.client.types.VerticalAlignment;
 import com.smartgwt.client.widgets.Canvas;
 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.client.Config;
+import de.intevation.flys.client.client.services.DescribeArtifactService;
+import de.intevation.flys.client.client.services.DescribeArtifactServiceAsync;
 import de.intevation.flys.client.shared.model.Artifact;
 
 
 public class LoadingPanel extends Canvas {
 
-    public static final int UPDATE_INTERVAL = 1000 * 5;
+    public static final int UPDATE_INTERVAL = 1000 * 10;
+
+    public static final DescribeArtifactServiceAsync describe =
+        GWT.create(DescribeArtifactService.class);
+
 
     protected CollectionView parent;
     protected Artifact       artifact;
@@ -56,6 +62,11 @@
     }
 
 
+    public void setArtifact(Artifact artifact) {
+        this.artifact = artifact;
+    }
+
+
     protected HLayout createDialog() {
         msg.setStyleName("loading-message");
         msg.setWidth(200);
@@ -85,17 +96,33 @@
     }
 
 
-    private void update() {
+    protected void update() {
         msg.setContents("This is update -> " + String.valueOf(i++));
 
-        // TODO FETCH ARTIFACT's DESCRIBE DOCUMENT AND REMOVE THIS LOADING PANEL
-        // IF IT IS NO LONGER IN BACKGROUND MODE!
+        final Config config = Config.getInstance();
+        final String url    = config.getServerUrl();
+        final String locale = config.getLocale();
 
-        if (i == 5) {
-            finish();
-        }
+        describe.describe(url, locale, artifact, new AsyncCallback<Artifact>() {
+            public void onFailure(Throwable t) {
+                GWT.log("Error while DESCRIBE artifact: " + t.getMessage());
+                // SC.warn()...
+                startTimer();
+            }
 
-        startTimer();
+            public void onSuccess(Artifact artifact) {
+                GWT.log("Successfully DESCRIBE artifact.");
+
+                setArtifact(artifact);
+
+                if (artifact.isInBackground()) {
+                    startTimer();
+                }
+                else {
+                    finish();
+                }
+            }
+        });
     }
 
 

http://dive4elements.wald.intevation.org