Преглед изворни кода

Fix bug column and row expand ratio are not persisted

Fixes #9009
tags/8.1.0.alpha4
Tien Nguyen пре 7 година
родитељ
комит
1a30320913

+ 8
- 8
server/src/main/java/com/vaadin/ui/GridLayout.java Прегледај датотеку

@@ -1277,14 +1277,14 @@ public class GridLayout extends AbstractLayout
}
setRows(Math.max(rows.size(), 1));
Map<Component, Alignment> alignments = new HashMap<>();
List<Integer> columnExpandRatios = new ArrayList<>();
List<Float> columnExpandRatios = new ArrayList<>();
for (int row = 0; row < rowElements.size(); ++row) {
Element rowElement = rowElements.get(row);

// Row Expand
if (rowElement.hasAttr("expand")) {
int expand = DesignAttributeHandler.readAttribute("expand",
rowElement.attributes(), int.class);
float expand = DesignAttributeHandler.readAttribute("expand",
rowElement.attributes(), float.class);
setRowExpandRatio(row, expand);
}

@@ -1334,11 +1334,11 @@ public class GridLayout extends AbstractLayout
if (row == 0) {
if (col.hasAttr("expand")) {
for (String expand : col.attr("expand").split(",")) {
columnExpandRatios.add(Integer.parseInt(expand));
columnExpandRatios.add(Float.parseFloat(expand));
}
} else {
for (int c = 0; c < colspan; ++c) {
columnExpandRatios.add(0);
columnExpandRatios.add(0f);
}
}
}
@@ -1442,7 +1442,7 @@ public class GridLayout extends AbstractLayout

// Row Expand
DesignAttributeHandler.writeAttribute("expand", row.attributes(),
(int) getRowExpandRatio(i), 0, int.class, designContext);
getRowExpandRatio(i), 0.0f, float.class, designContext);

int colspan = 1;
Element col;
@@ -1483,7 +1483,7 @@ public class GridLayout extends AbstractLayout
// A column with expand and no content in the end of
// first row needs to be present.
for (int c = j; c < componentMap[i].length; ++c) {
if ((int) getColumnExpandRatio(c) > 0) {
if (getColumnExpandRatio(c) > 0) {
hasExpands = true;
}
}
@@ -1525,7 +1525,7 @@ public class GridLayout extends AbstractLayout
String expands = "";
boolean expandRatios = false;
for (int c = 0; c < colspan; ++c) {
int colExpand = (int) getColumnExpandRatio(j + c);
float colExpand = getColumnExpandRatio(j + c);
if (colExpand > 0) {
expandRatios = true;
}

+ 23
- 6
server/src/test/java/com/vaadin/tests/server/component/gridlayout/GridLayoutDeclarativeTest.java Прегледај датотеку

@@ -52,8 +52,8 @@ public class GridLayoutDeclarativeTest
b3.setCaptionAsHtml(true);
b4.setCaptionAsHtml(true);
String design = "<vaadin-grid-layout><row>" //
+ "<column expand=1>" + writeChild(b1) + "</column>" //
+ "<column expand=3>" + writeChild(b2) + "</column>" //
+ "<column expand=1.0>" + writeChild(b1) + "</column>" //
+ "<column expand=3.3>" + writeChild(b2) + "</column>" //
+ "</row><row>" //
+ "<column>" + writeChild(b3) + "</column>" //
+ "<column>" + writeChild(b4) + "</column>" //
@@ -63,12 +63,29 @@ public class GridLayoutDeclarativeTest
gl.addComponent(b2);
gl.addComponent(b3);
gl.addComponent(b4);
gl.setColumnExpandRatio(0, 1.0f);
gl.setColumnExpandRatio(1, 3.0f);
gl.setColumnExpandRatio(0, 1f);
gl.setColumnExpandRatio(1, 3.3f);
testWrite(design, gl);
testRead(design, gl);
}

@Test
public void testReadIntegerExpandRatioGridLayout() {
//To make sure that it can read from old declarative which use
// integer expand ratio
Button b1 = new Button("Button 0,0");
b1.setCaptionAsHtml(true);
String design = "<vaadin-grid-layout><row expand=3>" //
+ "<column expand=1>" + writeChild(b1) + "</column>" //
+ "</row>"//
+ "</vaadin-grid-layout>";
GridLayout gl = new GridLayout(1, 1);
gl.addComponent(b1);
gl.setColumnExpandRatio(0, 1.0f);
gl.setRowExpandRatio(0, 3.0f);
testRead(design, gl);
}

@Test
public void testOneBigComponentGridLayout() {
Button b1 = new Button("Button 0,0 -&gt; 1,1");
@@ -153,7 +170,7 @@ public class GridLayoutDeclarativeTest
gl.setColumnExpandRatio(2, 2.0f);

String design = "<vaadin-grid-layout><row>" //
+ "<column colspan=4 rowspan=5 expand='0,0,2,0' />" //
+ "<column colspan=4 rowspan=5 expand='0.0,0.0,2.0,0.0' />" //
+ "<column rowspan=5>" + writeChild(b1) + "</column>" //
+ "</row><row>" //
+ "</row><row>" //
@@ -174,7 +191,7 @@ public class GridLayoutDeclarativeTest

String design = "<vaadin-grid-layout><row>" //
+ "<column rowspan=5>" + writeChild(b1) + "</column>" //
+ "<column colspan=4 rowspan=5 expand='0,0,0,2' />" //
+ "<column colspan=4 rowspan=5 expand='0.0,0.0,0.0,2.0' />" //
+ "</row><row>" //
+ "</row><row>" //
+ "</row><row>" //

Loading…
Откажи
Сачувај