# HG changeset patch # User Ingo Weinzierl # Date 1337179959 0 # Node ID 261347ea60b87c9564efee5c3a8d77f0b33f36bd # Parent 180a500d7ddb1884a3d73e98a15d513dfe841127 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel. flys-client/trunk@4428 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 180a500d7ddb -r 261347ea60b8 flys-client/ChangeLog --- a/flys-client/ChangeLog Wed May 16 13:43:15 2012 +0000 +++ b/flys-client/ChangeLog Wed May 16 14:52:39 2012 +0000 @@ -1,3 +1,18 @@ +2012-05-16 Ingo Weinzierl + + * src/main/java/de/intevation/flys/client/shared/model/StringOptionsData.java: + New Data implementation that should be used for user input with string + options. + + * src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java, + src/main/java/de/intevation/flys/client/server/DataFactory.java: Create + new StringOptionsData if the data type equals "options". + + + * src/main/java/de/intevation/flys/client/client/ui/ParameterMatrixPanel.java. + src/main/java/de/intevation/flys/client/client/ui/ParameterMatrix.java: + Enabled this panel to handle StringOptionsData. + 2012-05-16 Sascha L. Teichmann * src/main/webapp/WEB-INF/stylesheets/fixoverview2html.xsl: diff -r 180a500d7ddb -r 261347ea60b8 flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrix.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrix.java Wed May 16 13:43:15 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrix.java Wed May 16 14:52:39 2012 +0000 @@ -19,6 +19,7 @@ import de.intevation.flys.client.shared.model.DataItem; import de.intevation.flys.client.shared.model.IntegerOptionsData; +import de.intevation.flys.client.shared.model.StringOptionsData; public class ParameterMatrix { @@ -66,8 +67,41 @@ public void addColumn(IntegerOptionsData group) { String groupTitle = group.getLabel(); - Column col = new Column(groupTitle); - for (DataItem item: group.getItems()) { + Column col = new Column(groupTitle); + DataItem[] items = group.getItems(); + + if (items == null) { + GWT.log("No items found in StringOptionsData '" + groupTitle + "'"); + return; + } + + for (DataItem item: items) { + String title = item.getLabel(); + + if (valueNames.indexOf(title) < 0) { + valueNames.add(title); + } + + col.addValue(item.getLabel(), item.getStringValue()); + } + + columnNames.add(groupTitle); + columns.put(groupTitle, col); + } + + + public void addColumn(StringOptionsData options) { + String groupTitle = options.getLabel(); + + Column col = new Column(groupTitle); + DataItem[] items = options.getItems(); + + if (items == null) { + GWT.log("No items found in StringOptionsData '" + groupTitle + "'"); + return; + } + + for (DataItem item: items) { String title = item.getLabel(); if (valueNames.indexOf(title) < 0) { diff -r 180a500d7ddb -r 261347ea60b8 flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrixPanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrixPanel.java Wed May 16 13:43:15 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterMatrixPanel.java Wed May 16 14:52:39 2012 +0000 @@ -18,6 +18,7 @@ import de.intevation.flys.client.shared.model.DefaultData; import de.intevation.flys.client.shared.model.DefaultDataItem; import de.intevation.flys.client.shared.model.IntegerOptionsData; +import de.intevation.flys.client.shared.model.StringOptionsData; /** * @author Ingo Weinzierl @@ -91,7 +92,7 @@ Label parameter = new Label(data.getDescription()); parameter.setWidth(200); - for (int j = 0, m = dataList.size(); j < m; j++) { + for (int j = 0, m = items.length; j < m; j++) { DataItem item = items[j]; Label value = new Label(item.getLabel()); @@ -127,6 +128,9 @@ if (data instanceof IntegerOptionsData) { matrix.addColumn((IntegerOptionsData) data); } + else if (data instanceof StringOptionsData) { + matrix.addColumn((StringOptionsData) data); + } } v.addMember(matrix.create()); diff -r 180a500d7ddb -r 261347ea60b8 flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java --- a/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java Wed May 16 13:43:15 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java Wed May 16 14:52:39 2012 +0000 @@ -181,10 +181,10 @@ list.add(new IntegerArrayData(name, label, null)); } else if (type.equals("intoptions") && uiProvider.equals("parameter-matrix")) { - NodeList choices = ClientProtocolUtils.getItemNodes(d); - DataItem[] opts = extractIntegerOptions(choices); - - list.add(new IntegerOptionsData(name, label, opts)); + list.add(DataFactory.createIntegerOptionsData(d, name, label)); + } + else if (type.equals("options")) { + list.add(DataFactory.createStringOptionsData(d, name, label)); } else if (type.equals("intoptions")) { NodeList choices = ClientProtocolUtils.getItemNodes(d); @@ -243,23 +243,6 @@ } - protected static DataItem[] extractIntegerOptions(NodeList options) { - DataItem[] items = new DataItem[options.getLength()]; - - for (int i = 0, n = options.getLength(); i < n; i++) { - Element el = (Element) options.item(i); - - String value = el.getTextContent(); - String label = XMLUtils.xpathString( - el, "@art:label", ArtifactNamespaceContext.INSTANCE); - - items[i] = new DefaultDataItem(label, label, value); - } - - return items; - } - - /** * This method extract the {@link DataItem}s of the DESCRIBE document. * diff -r 180a500d7ddb -r 261347ea60b8 flys-client/src/main/java/de/intevation/flys/client/server/DataFactory.java --- a/flys-client/src/main/java/de/intevation/flys/client/server/DataFactory.java Wed May 16 13:43:15 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/DataFactory.java Wed May 16 14:52:39 2012 +0000 @@ -20,6 +20,7 @@ import de.intevation.flys.client.shared.model.IntegerOptionsData; import de.intevation.flys.client.shared.model.IntegerRangeData; import de.intevation.flys.client.shared.model.StringData; +import de.intevation.flys.client.shared.model.StringOptionsData; import de.intevation.flys.client.shared.model.LongRangeData; @@ -63,6 +64,9 @@ else if (type.equals(IntegerData.TYPE)) { return createIntegerData(element, name, label); } + else if (type.equals(StringOptionsData.TYPE)) { + return createStringOptionsData(element, name, label); + } else if (type.equals(IntegerOptionsData.TYPE)) { return createIntegerOptionsData(element, name, label); } @@ -134,6 +138,20 @@ /** + * This method creates a new instance of StringOptionsData which has a type + * "options" set. + * + * @param ele The Data element. + * @param name The name of the Data instance. + * + * @return an instance of StringOptionsData. + */ + protected static Data createStringOptionsData(Element ele, String name, String label) { + return new StringOptionsData(name, label, extractDataItems(ele)); + } + + + /** * This method creates a new instance of DefaultData which has a type * "intoptions" set. * @@ -243,7 +261,7 @@ ArtifactNamespaceContext.INSTANCE); if (itemList == null || itemList.getLength() == 0) { - logger.debug("No old data items found."); + logger.debug("No data items found."); return null; } @@ -251,12 +269,18 @@ DataItem[] items = new DataItem[count]; + logger.debug("There are " + count + " data items in element."); + for (int i = 0; i < count; i++) { Element tmp = (Element) itemList.item(i); String value = tmp.getAttributeNS(NS_URI, "value"); String label = tmp.getAttributeNS(NS_URI, "label"); + logger.debug("Found data item:"); + logger.debug(" label: " + label); + logger.debug(" value: " + value); + items[i] = new DefaultDataItem(label, label, value); }