diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java @ 9171:f1be005f0c46

tab titles from server
author gernotbelger
date Fri, 22 Jun 2018 11:02:59 +0200
parents cb3a91dc4e3b
children 49c0b687d22f
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java	Thu Jun 21 14:32:11 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java	Fri Jun 22 11:02:59 2018 +0200
@@ -8,8 +8,9 @@
 
 package org.dive4elements.river.client.client.ui;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
 
 import org.dive4elements.river.client.client.Config;
 import org.dive4elements.river.client.client.FLYSConstants;
@@ -134,20 +135,21 @@
         } else {
             nf = NumberFormat.getFormat("#.##");
         }
-        final List<List<String[]>> tabData = getTabData(list);
+        final Map<String, List<String[]>> tabData = getTabData(list);
         if (tabData.size() == 1) {
-            createTable(this.dataTable, tabData.get(0), nf, 0);
+            createTable(this.dataTable, tabData.get(tabData.keySet().iterator().next()), nf, 0);
 
         } else if (tabData.size() > 1) {
 
-            for (int i = 0; i < tabData.size(); i++) {
-                final List<String[]> items = tabData.get(i);
+            final int index = 0;
+            for (final String key : tabData.keySet()) {
+                final List<String[]> items = tabData.get(key);
 
                 final ListGrid table = new ListGrid();
 
-                createTable(table, items, nf, i);
+                createTable(table, items, nf, index);
                 final Tab tab = new Tab();
-                tab.setTitle("Ergebnis: " + i); // TODO: get Title from Server
+                tab.setTitle(key);
                 tab.setPane(table);
                 this.tabSet.addTab(tab);
             }
@@ -197,7 +199,6 @@
             f.setDisplayField(displayField[i]);
             f.setValueField(String.valueOf(i));
             f.setSortByDisplayField(false);
-
         }
         dataTableTab.setFields(fields);
 
@@ -228,25 +229,51 @@
         }
     }
 
-    private List<List<String[]>> getTabData(final List<String[]> raw) {
-        final List<List<String[]>> tabs = new ArrayList<List<String[]>>();
-        String[] compare = raw.get(0);
-        int lastIndex = 0;
+    private Map<String, List<String[]>> getTabData(final List<String[]> raw) {
+        // Condition: tableTitle must be first
+        final Map<String, List<String[]>> tabs = new TreeMap<String, List<String[]>>(); // auto-sort
 
-        for (int i = 0; i < raw.size(); i++) {
-            final String[] row = raw.get(i);
-            if (compare.length != row.length) {
-                tabs.add(raw.subList(lastIndex, i));
-                lastIndex = i;
+        if (raw.get(0)[0].startsWith(this.MESSAGES.export_csv_title())) {
+            // Bedingung für Tabs
+            int lastIndex = 0;
+            String lastTableTitle = "";
+
+            for (int i = 0; i < raw.size(); i++) {
+
+                final String[] row = raw.get(i);
+                if (row[0].startsWith(this.MESSAGES.export_csv_title())) {
+
+                    if (i > 0) {
+                        tabs.put(makeKeyTitle(lastTableTitle, tabs.size()), raw.subList((lastIndex + 1), (i))); // toIndex exclusive (without
+                                                                                                                // tabTitle-Line of the next tab, which is
+                                                                                                                // stored in the current row (raw.get(i));
+                                                                                                                // fromIndex
+                                                                                                                // inclusive ->
+                                                                                                                // without tabTitle from the past tab ->
+                                                                                                                // lastindex+1
+                    }
+                    lastTableTitle = row[0].replace(this.MESSAGES.export_csv_title(), "");
+                    lastIndex = i;
+                }
+
+                if (i == (raw.size() - 1)) {
+                    tabs.put(makeKeyTitle(lastTableTitle, tabs.size()), raw.subList((lastIndex + 1), i + 1));
+                    // last result-tab:
+                    // toIndex exclusive -> last i + 1
+                    // fromIndex inclusive: lastInde +1 -> no title-line included
+                }
+
             }
-
-            if (i == (raw.size() - 1)) {
-                tabs.add(raw.subList(lastIndex, i + 1)); // toIndex exclusive, fromIndex inclusive
-            }
-            compare = row;
+        } else {
+            // plainOld Table, no TABS
+            tabs.put("", raw);
         }
 
         return tabs;
     }
+
+    private String makeKeyTitle(final String title, final int index) {
+        return new StringBuilder().append("(").append((index + 1)).append(") ").append(title).toString();
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org