diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java @ 9561:5397555d74c9

MapOutputTab fix
author gernotbelger
date Thu, 25 Oct 2018 17:00:58 +0200
parents c81cf7e2a770
children
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java	Thu Oct 25 09:38:11 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java	Thu Oct 25 17:00:58 2018 +0200
@@ -36,6 +36,7 @@
 import org.dive4elements.river.client.client.services.DescribeCollectionServiceAsync;
 import org.dive4elements.river.client.client.services.LoadArtifactService;
 import org.dive4elements.river.client.client.services.LoadArtifactServiceAsync;
+import org.dive4elements.river.client.client.ui.map.MapOutputTab;
 import org.dive4elements.river.client.shared.model.Artifact;
 import org.dive4elements.river.client.shared.model.ArtifactDescription;
 import org.dive4elements.river.client.shared.model.Collection;
@@ -478,15 +479,9 @@
             // we don't want to display report modes at all
             return;
         } else if (out instanceof MapMode) {
-            // Der Workflow von dem ganzen ist derart merkwürdig. Ständig werden Tabs entfernt und wieder hinzugefügt,
-            // alles wird neu erzeugt und wieder entfernt.
-            // normalerweise klappt das auch ("tabset.remove")
-            // beim Karten-Tab komischerweise nicht.
-            // Diese Sonderbehandlung "löst" das Problem der Doppelten Karten-Tabs mit nur wenigen zusätzlichen Zeilen
-            // (neuer Member "tabNames" )
-            // Wenn die Liste den Namen schon enthält, wird der Tab einfach nicht nochmal erzeugt.
-            if (this.tabNames.contains("map"))
-                return;
+            // this workaround is not needed anymore - it is now in clearOuputTabs
+            // if (this.tabNames.contains("map"))
+            // return;
         }
 
         GWT.log("Add new output tab for '" + name + "'");
@@ -507,9 +502,12 @@
         final int num = this.tabs.getNumTabs();
 
         for (int i = num - 1; i >= 1; i--) {
-            this.tabs.removeTab(i); // does not work for the Maps-panel
+            if (this.tabs.getTab(i) instanceof MapOutputTab) {
+                final MapOutputTab mot = (MapOutputTab) this.tabs.getTab(i);
+                mot.cancelMapService(); // MapOutputTab needs special treatment
+            }
+            this.tabs.removeTab(i);
         }
-
         this.outputTabs.clear();
     }
 

http://dive4elements.wald.intevation.org