changeset 9484:c81cf7e2a770

Karten-Tab-Bug
author gernotbelger
date Mon, 17 Sep 2018 10:20:08 +0200
parents 992c188b7330
children dd05a5eef210
files gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java	Thu Sep 13 18:22:05 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java	Mon Sep 17 10:20:08 2018 +0200
@@ -40,6 +40,7 @@
 import org.dive4elements.river.client.shared.model.ArtifactDescription;
 import org.dive4elements.river.client.shared.model.Collection;
 import org.dive4elements.river.client.shared.model.ExportMode;
+import org.dive4elements.river.client.shared.model.MapMode;
 import org.dive4elements.river.client.shared.model.OutputMode;
 import org.dive4elements.river.client.shared.model.Recommendation;
 import org.dive4elements.river.client.shared.model.ReportMode;
@@ -100,6 +101,7 @@
 
     /** The output tab. */
     private final Map<String, OutputTab> outputTabs;
+    private final List<String> tabNames = new ArrayList<String>();
 
     /** The layout. */
     private final Layout layout;
@@ -472,9 +474,19 @@
             return;
         }
 
-        if (out instanceof ReportMode) {
+        else if (out instanceof ReportMode) {
             // 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;
         }
 
         GWT.log("Add new output tab for '" + name + "'");
@@ -495,7 +507,7 @@
         final int num = this.tabs.getNumTabs();
 
         for (int i = num - 1; i >= 1; i--) {
-            this.tabs.removeTab(i);
+            this.tabs.removeTab(i); // does not work for the Maps-panel
         }
 
         this.outputTabs.clear();
@@ -519,6 +531,7 @@
 
             for (final String key : keys) {
                 this.tabs.addTab(this.outputTabs.get(key));
+                this.tabNames.add(key);
             }
         }
     }

http://dive4elements.wald.intevation.org