summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/ui/GridLayout.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/com/vaadin/ui/GridLayout.java')
-rw-r--r--server/src/com/vaadin/ui/GridLayout.java37
1 files changed, 35 insertions, 2 deletions
diff --git a/server/src/com/vaadin/ui/GridLayout.java b/server/src/com/vaadin/ui/GridLayout.java
index 792ad72dcc..8837ad71d1 100644
--- a/server/src/com/vaadin/ui/GridLayout.java
+++ b/server/src/com/vaadin/ui/GridLayout.java
@@ -1456,8 +1456,12 @@ public class GridLayout extends AbstractLayout implements
writeMargin(design, getMargin(), def.getMargin(), designContext);
- if (components.isEmpty()
- || !designContext.shouldWriteChildren(this, def)) {
+ if (!designContext.shouldWriteChildren(this, def)) {
+ return;
+ }
+
+ if (components.isEmpty()) {
+ writeEmptyColsAndRows(design, designContext);
return;
}
@@ -1593,6 +1597,35 @@ public class GridLayout extends AbstractLayout implements
}
}
+ /**
+ * Fills in the design with rows and empty columns. This needs to be done
+ * for empty {@link GridLayout}, because there's no other way to serialize
+ * info about number of columns and rows if there are absolutely no
+ * components in the {@link GridLayout}
+ *
+ * @since
+ * @param design
+ * @param designContext
+ */
+ private void writeEmptyColsAndRows(Element design,
+ DesignContext designContext) {
+ int rowCount = getState(false).rows;
+ int colCount = getState(false).columns;
+
+ // only write cols and rows tags if size is not 1x1
+ if (rowCount == 1 && colCount == 1) {
+ return;
+ }
+
+ for (int i = 0; i < rowCount; i++) {
+ Element row = design.appendElement("row");
+ for (int j = 0; j < colCount; j++) {
+ row.appendElement("column");
+ }
+ }
+
+ }
+
private int getRowSpan(Component[][] compMap, int i, int j, int colspan,
Component child) {
int rowspan = 1;