diff src/econnect/wp3_3/client/widgets/table/DynamicStiTable.java @ 68:8b58d9bc0bb6 trimmed_data

add functionality for additional tabular data from the description field (work in progress)
author Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
date Thu, 03 Jan 2013 18:43:28 +0100
parents aa1808d94d80
children ea856995abac
line wrap: on
line diff
--- a/src/econnect/wp3_3/client/widgets/table/DynamicStiTable.java	Wed Jan 02 16:52:01 2013 +0100
+++ b/src/econnect/wp3_3/client/widgets/table/DynamicStiTable.java	Thu Jan 03 18:43:28 2013 +0100
@@ -25,6 +25,7 @@
 import com.google.gwt.view.client.Range;
 import com.google.gwt.view.client.RangeChangeEvent;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.JsArrayString;
 import com.google.gwt.dom.client.NodeList;
 import com.google.gwt.dom.client.Style.BorderStyle;
 import com.google.gwt.dom.client.Style.Unit;
@@ -302,7 +303,7 @@
 	    };
 	    descriptionColumn.setSortable(true);
 	    this.elementsTable.addColumn(descriptionColumn, "Description");
-
+	    
 	    SimplePager pager = new SimplePager();
 	    pager.setDisplay(this.elementsTable);
 
@@ -311,6 +312,36 @@
 	    //The actual (at this time lexicographical) sorting routine.
 	    //TODO: remove redundant code, make this more abstract
 	    ListHandler<DataObject> columnSortHandler = new ListHandler<econnect.wp3_3.client.core.DataObject>(dataProvider.getList());
+	    
+	    JsArrayString descriptionDataColumns = this.dataSet.getDescriptionDataColumns();
+	    for (int i = 0; i < descriptionDataColumns.length(); i++) {
+	    	final String columnName = descriptionDataColumns.get(i);
+	    	
+		    TextColumn<DataObject> column = new TextColumn<DataObject>() {
+		        @Override
+		        public String getValue(DataObject object) {
+		          return object.getDescriptionData(columnName);
+		        }
+		    };
+
+		    column.setSortable(true);
+		    
+		    columnSortHandler.setComparator(column,
+		    		new Comparator<econnect.wp3_3.client.core.DataObject>() {
+		    			public int compare(econnect.wp3_3.client.core.DataObject o1, econnect.wp3_3.client.core.DataObject o2) {
+		    				if (o1 == o2)
+		    					return 0;
+
+		    				if (o1 != null)
+		    					return (o2 != null) ? o1.getDescriptionData(columnName).compareTo(o2.getDescriptionData(columnName)) : 1;
+		                
+		    				return -1;
+		    			}
+		    		});
+
+		    this.elementsTable.addColumn(column, columnName);
+		}
+	    
 	    columnSortHandler.setComparator(nameColumn,
 	    		new Comparator<econnect.wp3_3.client.core.DataObject>() {
 	    			public int compare(econnect.wp3_3.client.core.DataObject o1, econnect.wp3_3.client.core.DataObject o2) {
@@ -323,6 +354,7 @@
 	    				return -1;
 	    			}
 	    		});
+	    
 	    columnSortHandler.setComparator(placeColumn,
 	    		new Comparator<econnect.wp3_3.client.core.DataObject>() {
 	    			public int compare(econnect.wp3_3.client.core.DataObject o1, econnect.wp3_3.client.core.DataObject o2) {