catch up with development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/common/item/GridItem.java b/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/common/item/GridItem.java
index bec6544..ab10c21 100644
--- a/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/common/item/GridItem.java
+++ b/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/common/item/GridItem.java
@@ -58,10 +58,14 @@
 		int columnCount = 0;
 		int colspan = 0;
 		for	(GridRow row : grid.getRows()) {
+			int rowCellSpan = 0;
 			int cellSize = row.getCells().size();
 			for (GridCell cell : row.getCells()) {
-				colspan = Math.max(colspan, cell.getColumnspan() - 1);
+				// "cell.getColumnspan() -1" is required cause without a colspan definition as minimum 1 column has to exist. 
+				// Therefore columnCount is used as minimum size of column to be created.
+				rowCellSpan = rowCellSpan + (cell.getColumnspan() -1);
 			}
+			colspan = Math.max(colspan, rowCellSpan);
 			columnCount = Math.max(columnCount, cellSize);
 		}
 		// 'columnCount' times a column and a cell is created in newGridItem(String, int, int) ...
diff --git a/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/validation/ReportDSLValidator.xtend b/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/validation/ReportDSLValidator.xtend
index 7208857..21b0be4 100644
--- a/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/validation/ReportDSLValidator.xtend
+++ b/org.eclipse.osbp.xtext.reportdsl/src/org/eclipse/osbp/xtext/reportdsl/validation/ReportDSLValidator.xtend
@@ -50,6 +50,7 @@
 import org.eclipse.osbp.xtext.reportdsl.Text
 import org.eclipse.osbp.xtext.reportdsl.Title
 import org.eclipse.xtext.validation.Check
+import org.eclipse.osbp.xtext.reportdsl.GridRow
 
 /**
  * Custom validation rules. 
@@ -269,6 +270,32 @@
 		}
 	}
 	
+	@Check
+	def checkGridCellColumnSpan(Grid grid) {
+		var sumColSpan = 0
+		var firstColSpan = 0
+		for (GridRow row: grid.getRows()) {
+			var rowCellSpan = 0
+			var cellSize = row.getCells().size()
+			for (GridCell cell : row.getCells()){
+				rowCellSpan = rowCellSpan + (cell.getColumnspan - 1)
+			}
+			if (rowCellSpan < 0){
+				sumColSpan = cellSize
+			}else{
+				sumColSpan = rowCellSpan + cellSize
+			}
+			if (firstColSpan == 0){
+				firstColSpan = sumColSpan
+			}else if (sumColSpan != firstColSpan){
+				for (GridCell cell : row.getCells()){
+					error('''Sum of all cells's ColumnSpan of this row should be «firstColSpan».''', cell , ReportDSLPackage.Literals.GRID_CELL__COLUMNSPAN)
+				}
+				
+			}
+		}
+	}
+	
 	def private boolean checkPageTemplateBelonging(EObject attribute) {
 		var eObj = attribute.eContainer
 		while ((eObj!==null) && !(eObj instanceof PageTemplate)){