# HG changeset patch # User gernotbelger # Date 1537172408 -7200 # Node ID c81cf7e2a7708ecf012450796548e33831741afa # Parent 992c188b7330d9dfed1b59565f695e806d8114b0 Karten-Tab-Bug diff -r 992c188b7330 -r c81cf7e2a770 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java --- 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 outputTabs; + private final List tabNames = new ArrayList(); /** 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); } } }