package org.javabuilders.swing.test;
import static org.junit.Assert.assertEquals;
import org.javabuilders.layout.ControlConstraint;
import org.javabuilders.layout.Flow;
import org.javabuilders.layout.HAlign;
import org.javabuilders.layout.LayoutCell;
import org.javabuilders.layout.LayoutConstraints;
import org.javabuilders.layout.mig.MigLayoutCommon;
import org.junit.Test;
/**
* Tests for parsing the layout constraints
* @author Jacek Furmankiewicz
*/
public class LayoutConstraintsTest {
@Test
public void layoutOptions() throws Exception {
String layout =
"[[gap 5px 10px]]\n" +
">findLabel /textField+2,/textField2 findButton+1+3 [fill] 20\n" +
" checkBox1 checkBox2 cancelButton [top] 20\n" +
" checkBox3 checkBox4 [bottom]\n" +
"[fill] [grow] [gap 30]"; //+
//"(checkBox1,checkBox2),(checkBox3,checkBox4)\n" +
//"|findButton,cancelButton|";
LayoutConstraints c = LayoutConstraints.getParsedLayoutConstraints(layout, MigLayoutCommon.DEFAULT_ROW_COLUMN_CONSTRAINT,
MigLayoutCommon.DEFAULT_ROW_COLUMN_CONSTRAINT);
assertEquals("gap 5px 10px", c.getLayoutConstraints());
assertEquals("[fill] 20",c.getRowConstraints().get(0));
assertEquals("[top] 20",c.getRowConstraints().get(1));
assertEquals("[bottom]",c.getRowConstraints().get(2));
for(LayoutCell cell : c.getCells()) {
for(ControlConstraint cc : cell.getControls()) {
//cell with multiple controls
if (cell.getRowIndex() == 0 && cell.getColumnIndex() == 1) {
//this cell has the two text fields
assertEquals(2,cell.getControls().size());
ControlConstraint[] controls = new ControlConstraint[2];
cell.getControls().toArray(controls);
assertEquals("textField",controls[0].getControlName());
assertEquals("textField2",controls[1].getControlName());
} else if (cell.getRowIndex() == 0 && cell.getColumnIndex() == 3) {
//this cell has the two buttons, spanned vertically
assertEquals(2,cell.getControls().size());
assertEquals(Flow.VERTICAL, cell.getFlow());
ControlConstraint[] controls = new ControlConstraint[2];
cell.getControls().toArray(controls);
assertEquals("findButton",controls[0].getControlName());
assertEquals("cancelButton",controls[1].getControlName());
} else {
assertEquals(1,cell.getControls().size());
}
//controls
String control = cc.getControlName();
if ("findLabel".equals(control)) {
assertEquals(0,cell.getRowIndex());
assertEquals(0,cell.getColumnIndex());
assertEquals(HAlign.RIGHT,cc.getHAlign());
} else if ("textField".equals(control)) {
assertEquals(0,cell.getRowIndex());
assertEquals(1,cell.getColumnIndex());
assertEquals(2, cc.getHSpan());
} else if ("textField2".equals(control)) {
assertEquals(0,cell.getRowIndex());
assertEquals(1,cell.getColumnIndex());
} else if ("findButton".equals(control)) {
assertEquals(0,cell.getRowIndex());
assertEquals(3,cell.getColumnIndex());
} else if ("cancelButton".equals(control)) {
assertEquals(0,cell.getRowIndex());
assertEquals(3,cell.getColumnIndex());
} else if ("checkBox1".equals(control)) {
assertEquals(1,cell.getRowIndex());
assertEquals(1,cell.getColumnIndex());
} else if ("checkBox2".equals(control)) {
assertEquals(1,cell.getRowIndex());
assertEquals(2,cell.getColumnIndex());
} else if ("checkBox3".equals(control)) {
assertEquals(2,cell.getRowIndex());
assertEquals(1,cell.getColumnIndex());
} else if ("checkBox4".equals(control)) {
assertEquals(2,cell.getRowIndex());
assertEquals(2,cell.getColumnIndex());
} else {
throw new Exception("Unknown control name: " + cc.getControlName());
}
}
}
}
}