package test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import org.zkoss.pivot.PivotField; import org.zkoss.pivot.impl.TabularPivotModel; import org.zkoss.pivot.ui.PivotFieldControl; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Wire; /** * Tested with ZK 6.0.1 CE and ZK Pivottable 2.0.0 * */ @SuppressWarnings("rawtypes") public class TestComposer extends SelectorComposer { /** * generated serial version UID */ private static final long serialVersionUID = -2897873399288955635L; private TabularPivotModel _pivotModel; @Wire private PivotFieldControl pfc; @SuppressWarnings("unchecked") public void doAfterCompose (Component comp) throws Exception { super.doAfterCompose(comp); // init pivot field control pfc.setModel(_pivotModel); } /** * Get pivottable's model * @return TabularPivotModel the pivottable's model * @throws Exception */ public TabularPivotModel getPivotModel () throws Exception { if (_pivotModel == null) { _pivotModel = new TabularPivotModel(getData(), getColumns()); // assign datas, the order matches to the order of data field _pivotModel.setFieldType("Data_Field_001", PivotField.Type.DATA); } return _pivotModel; } /** * prepare the data for pivottable's model * The order of object put into data list matches * the order of column name's order * @return * @throws Exception */ public List> getData() throws Exception { List> result = new ArrayList>(); Random r = new Random(); List data = new ArrayList(); data.add("Row_Level_001 - " + (r.nextInt(10) + 1)); data.add("Row_Level_002 - " + (r.nextInt(10) + 1)); data.add("Column_Level_001 - " + (r.nextInt(10) + 1)); data.add("Column_Level_002 - " + (r.nextInt(10) + 1)); data.add(100); result.add(data); return result; } /** * prepare columns name for pivottable's model * @return */ public List getColumns() { return Arrays.asList(new String[]{ "Row_Level_001", "Row_Level_002", "Column_Level_001", "Column_Level_002", "Data_Field_001" }); } }