Переглянути джерело

Handle nested GridLayouts in declarative format correctly (#18312)

Change-Id: Id7f204c170981f4395e789333b89cd8207fe4002
tags/7.6.0.alpha2
Artur Signell 9 роки тому
джерело
коміт
d505fc70ac

+ 8
- 4
server/src/com/vaadin/ui/GridLayout.java Переглянути файл

@@ -1319,11 +1319,15 @@ public class GridLayout extends AbstractLayout implements

setMargin(readMargin(design, getMargin(), designContext));

// Prepare a 2D map for reading column contents
Elements rowElements = design.getElementsByTag("row");
List<Element> rowElements = new ArrayList<Element>();
List<Map<Integer, Component>> rows = new ArrayList<Map<Integer, Component>>();
for (int i = 0; i < rowElements.size(); ++i) {
rows.add(new HashMap<Integer, Component>());
// Prepare a 2D map for reading column contents
for (Element e : design.children()) {
if (e.tagName().equalsIgnoreCase("row")) {
rowElements.add(e);
rows.add(new HashMap<Integer, Component>());

}
}
setRows(Math.max(rows.size(), 1));


+ 33
- 0
server/tests/src/com/vaadin/tests/server/component/gridlayout/GridLayoutDeclarativeTest.java Переглянути файл

@@ -203,4 +203,37 @@ public class GridLayoutDeclarativeTest extends
}
return result;
}

@Test
public void testNestedGridLayouts() {
String design = "<!DOCTYPE html>" + //
"<html>" + //
" <body> " + //
" <v-grid-layout> " + //
" <row> " + //
" <column> " + //
" <v-grid-layout> " + //
" <row> " + //
" <column> " + //
" <v-button>" + //
" Button " + //
" </v-button> " + //
" </column> " + //
" </row> " + //
" </v-grid-layout> " + //
" </column> " + //
" </row> " + //
" </v-grid-layout> " + //
" </body>" + //
"</html>";
GridLayout outer = new GridLayout();
GridLayout inner = new GridLayout();
Button b = new Button("Button");
b.setCaptionAsHtml(true);
inner.addComponent(b);
outer.addComponent(inner);
testRead(design, outer);
testWrite(design, outer);

}
}

Завантаження…
Відмінити
Зберегти