Mercurial > dive4elements > river
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 :