summaryrefslogtreecommitdiffstats
path: root/server/src/com
diff options
context:
space:
mode:
authorMaciej PrzepioĢra <mac@vaadin.com>2015-09-21 11:05:32 +0200
committerVaadin Code Review <review@vaadin.com>2015-09-24 07:40:24 +0000
commit8006d359acce4fb31e7210ed2f20f1da3d7a1cd0 (patch)
tree8c5c5853809209470ced0945f7c7550c7984d72f /server/src/com
parent50b9c0c472d3caa7d1ff2fe14d1ca270b6bde4ac (diff)
downloadvaadin-framework-8006d359acce4fb31e7210ed2f20f1da3d7a1cd0.tar.gz
vaadin-framework-8006d359acce4fb31e7210ed2f20f1da3d7a1cd0.zip
Write all empty cells for empty GridLayout in declarative #18805
Change-Id: I589ba0dbb4aea7578f85894046e99903d9202e37
Diffstat (limited to 'server/src/com')
-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;