You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TableChildMeasurementHint.java 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package com.vaadin.tests.components.table;
  2. import com.vaadin.server.VaadinRequest;
  3. import com.vaadin.tests.components.AbstractReindeerTestUI;
  4. import com.vaadin.tests.components.TestDateField;
  5. import com.vaadin.ui.AbstractDateField;
  6. import com.vaadin.ui.AbstractOrderedLayout;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.GridLayout;
  9. import com.vaadin.ui.HasChildMeasurementHint.ChildMeasurementHint;
  10. import com.vaadin.ui.HorizontalLayout;
  11. import com.vaadin.ui.Label;
  12. import com.vaadin.v7.ui.ComboBox;
  13. import com.vaadin.v7.ui.Table;
  14. import com.vaadin.v7.ui.TextField;
  15. public class TableChildMeasurementHint extends AbstractReindeerTestUI {
  16. private HorizontalLayout buttonLayout = new HorizontalLayout();
  17. private HorizontalLayout layout;
  18. private Table table1, table2, table3;
  19. @Override
  20. public void setup(VaadinRequest request) {
  21. initMain();
  22. }
  23. protected void initMain() {
  24. ((AbstractOrderedLayout) getContent()).setMargin(false);
  25. layout = new HorizontalLayout();
  26. layout.setSizeFull();
  27. buttonLayout.setSpacing(false);
  28. addComponent(buttonLayout);
  29. addComponent(layout);
  30. table1 = createTable();
  31. table1.setSizeFull();
  32. table1.setChildMeasurementHint(ChildMeasurementHint.MEASURE_ALWAYS);
  33. table2 = createTable();
  34. table2.setSizeFull();
  35. table2.setChildMeasurementHint(ChildMeasurementHint.MEASURE_IF_NEEDED);
  36. table3 = createTable();
  37. table3.setSizeFull();
  38. table3.setChildMeasurementHint(ChildMeasurementHint.MEASURE_NEVER);
  39. buttonLayout.addComponent(new Button("Show table1", event -> {
  40. layout.addComponent(table1);
  41. table1.focus();
  42. }));
  43. buttonLayout.addComponent(new Button("Show table2", event -> {
  44. layout.removeComponent(table1);
  45. layout.addComponent(table2);
  46. table2.focus();
  47. }));
  48. buttonLayout.addComponent(new Button("Show table3", event -> {
  49. layout.removeComponent(table2);
  50. layout.addComponent(table3);
  51. table3.focus();
  52. }));
  53. }
  54. protected Table createTable() {
  55. Table table = new Table();
  56. table.setSelectable(true);
  57. table.setPageLength(39);
  58. for (int i = 0; i < 5; i++) {
  59. table.addContainerProperty("First_Name" + i, String.class, null);
  60. table.addContainerProperty("Last Name" + i, String.class, null);
  61. table.addContainerProperty("Year" + i, Integer.class, null);
  62. }
  63. /* Add a few items in the table. */
  64. int j = 0;
  65. for (int i = 0; i < 2; i++) {
  66. table.addItem(
  67. makeRow(new Object[] { "Nicolaus" + i, "Copernicus", 1473 },
  68. 5),
  69. j++);
  70. table.addItem(
  71. makeRow(new Object[] { "Tycho" + i, "Brahe", 1546 }, 5),
  72. j++);
  73. table.addItem(
  74. makeRow(new Object[] { "Giordano" + i, "Bruno", 1548 }, 5),
  75. j++);
  76. table.addItem(
  77. makeRow(new Object[] { "Galileo" + i, "Galilei", 1564 }, 5),
  78. j++);
  79. table.addItem(
  80. makeRow(new Object[] { "Johannes" + i, "Kepler", 1571 }, 5),
  81. j++);
  82. table.addItem(
  83. makeRow(new Object[] { "Isaac" + i, "Newton", 1643 }, 5),
  84. j++);
  85. }
  86. table.addGeneratedColumn("First_Name" + 0, new Table.ColumnGenerator() {
  87. @Override
  88. public Object generateCell(Table components, Object o, Object o2) {
  89. ComboBox b = new ComboBox("ComboBox");
  90. b.setWidthUndefined();
  91. return b;
  92. }
  93. });
  94. table.addGeneratedColumn("First_Name" + 1, new Table.ColumnGenerator() {
  95. @Override
  96. public Object generateCell(Table components, Object o, Object o2) {
  97. GridLayout b = new GridLayout();
  98. b.addComponents(new Label("l1"), new Button("b"),
  99. new Label("l2"));
  100. b.setWidthUndefined();
  101. return b;
  102. }
  103. });
  104. table.addGeneratedColumn("First_Name" + 2, new Table.ColumnGenerator() {
  105. @Override
  106. public Object generateCell(Table components, Object o, Object o2) {
  107. Button b = new Button("Button");
  108. b.setWidthUndefined();
  109. return b;
  110. }
  111. });
  112. table.addGeneratedColumn("First_Name" + 3, new Table.ColumnGenerator() {
  113. @Override
  114. public Object generateCell(Table components, Object o, Object o2) {
  115. TextField b = new TextField("Textfield");
  116. b.setWidthUndefined();
  117. return b;
  118. }
  119. });
  120. table.addGeneratedColumn("First_Name" + 4, new Table.ColumnGenerator() {
  121. @Override
  122. public Object generateCell(Table components, Object o, Object o2) {
  123. AbstractDateField<?, ?> b = new TestDateField("DateField");
  124. b.setWidthUndefined();
  125. return b;
  126. }
  127. });
  128. table.addGeneratedColumn("First_Name" + 5, new Table.ColumnGenerator() {
  129. @Override
  130. public Object generateCell(Table components, Object o, Object o2) {
  131. Label b = new Label("Label");
  132. b.setWidthUndefined();
  133. return b;
  134. }
  135. });
  136. return table;
  137. }
  138. protected Object[] makeRow(Object[] data, int c) {
  139. Object[] row = new Object[c * data.length];
  140. for (int j = 0; j < c; j++) {
  141. int x = 0;
  142. for (Object value : data) {
  143. row[j * data.length + x] = value;
  144. x++;
  145. }
  146. }
  147. return row;
  148. }
  149. }