/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.bearsoft.gui.grid.header;
import java.awt.GridBagConstraints;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumn;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author mg
*/
public class MultiLevelHeaderTest {
private void prepareColumns(DefaultTableColumnModel columns, List roots, MultiLevelHeader header) {
for (int i = 0; i < 5; i++) {
TableColumn col = new TableColumn(i);
col.setHeaderValue(String.valueOf(i) + " col ");
col.setMinWidth(20);
col.setWidth(120);
columns.addColumn(col);
}
header.setColumnModel(columns);
GridColumnsNode g11;
GridColumnsNode g12;
GridColumnsNode g21;
GridColumnsNode g22;
GridColumnsNode g23;
GridColumnsNode g24;
GridColumnsNode g33;
GridColumnsNode g34;
g11 = new GridColumnsNode("g11 hhhhhhhhhh test test");
{
g21 = new GridColumnsNode(columns.getColumn(0)); // col 0
g22 = new GridColumnsNode(columns.getColumn(1)); // col 1
g11.addColumnNode(g21);
g11.addColumnNode(g22);
}
g12 = new GridColumnsNode("g12 hhhhhhhhhh test test");
{
g23 = new GridColumnsNode("g23 hhhhhhhhhh test test");
g24 = new GridColumnsNode(columns.getColumn(4)); // col 4
g12.addColumnNode(g23);
g12.addColumnNode(g24);
{
g33 = new GridColumnsNode(columns.getColumn(2)); // col 2
g34 = new GridColumnsNode(columns.getColumn(3)); // col 3
g23.addColumnNode(g33);
g23.addColumnNode(g34);
}
}
roots.add(g11);
roots.add(g12);
header.setRoots(roots);
}
@Test
public void tree2GridCalculationsTest() {
DefaultTableColumnModel columns = new DefaultTableColumnModel();
List<GridColumnsNode> roots = new ArrayList<>();
MultiLevelHeader header = new MultiLevelHeader();
prepareColumns(columns, roots, header);
header.regenerate();
GridColumnsNode g11 = header.roots.get(0);
GridColumnsNode g12 = header.roots.get(1);
GridColumnsNode g21 = g11.getChildren().get(0);
GridColumnsNode g22 = g11.getChildren().get(1);
GridColumnsNode g23 = g12.getChildren().get(0);
GridColumnsNode g24 = g12.getChildren().get(1);
GridColumnsNode g33 = g23.getChildren().get(0);
GridColumnsNode g34 = g23.getChildren().get(1);
GridBagConstraints g11Constraints = header.group2Constraints.get(g11);
GridBagConstraints g12Constraints = header.group2Constraints.get(g12);
GridBagConstraints g21Constraints = header.group2Constraints.get(g21);
GridBagConstraints g22Constraints = header.group2Constraints.get(g22);
GridBagConstraints g23Constraints = header.group2Constraints.get(g23);
GridBagConstraints g24Constraints = header.group2Constraints.get(g24);
GridBagConstraints g33Constraints = header.group2Constraints.get(g33);
GridBagConstraints g34Constraints = header.group2Constraints.get(g34);
assertEquals(0, g11Constraints.gridx);
assertEquals(0, g11Constraints.gridy);
assertEquals(2, g11Constraints.gridwidth);
assertEquals(1, g11Constraints.gridheight);
assertEquals(2, g12Constraints.gridx);
assertEquals(0, g12Constraints.gridy);
assertEquals(3, g12Constraints.gridwidth);
assertEquals(1, g12Constraints.gridheight);
assertEquals(0, g21Constraints.gridx);
assertEquals(1, g21Constraints.gridy);
assertEquals(1, g21Constraints.gridwidth);
assertEquals(2, g21Constraints.gridheight);
assertEquals(1, g22Constraints.gridx);
assertEquals(1, g22Constraints.gridy);
assertEquals(1, g22Constraints.gridwidth);
assertEquals(2, g22Constraints.gridheight);
assertEquals(2, g23Constraints.gridx);
assertEquals(1, g23Constraints.gridy);
assertEquals(2, g23Constraints.gridwidth);
assertEquals(1, g23Constraints.gridheight);
assertEquals(4, g24Constraints.gridx);
assertEquals(1, g24Constraints.gridy);
assertEquals(1, g24Constraints.gridwidth);
assertEquals(2, g24Constraints.gridheight);
assertEquals(2, g33Constraints.gridx);
assertEquals(2, g33Constraints.gridy);
assertEquals(1, g33Constraints.gridwidth);
assertEquals(1, g33Constraints.gridheight);
assertEquals(3, g34Constraints.gridx);
assertEquals(2, g34Constraints.gridy);
assertEquals(1, g34Constraints.gridwidth);
assertEquals(1, g34Constraints.gridheight);
}
}