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.

GridSwitchRenderers.java 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.vaadin.tests.components.grid;
  2. import java.util.List;
  3. import java.util.Random;
  4. import com.vaadin.annotations.Theme;
  5. import com.vaadin.data.Item;
  6. import com.vaadin.data.Property.ValueChangeEvent;
  7. import com.vaadin.data.Property.ValueChangeListener;
  8. import com.vaadin.data.util.IndexedContainer;
  9. import com.vaadin.server.VaadinRequest;
  10. import com.vaadin.tests.components.AbstractTestUIWithLog;
  11. import com.vaadin.ui.CheckBox;
  12. import com.vaadin.ui.Grid;
  13. import com.vaadin.ui.Grid.Column;
  14. import com.vaadin.ui.Grid.SelectionMode;
  15. import com.vaadin.ui.renderers.HtmlRenderer;
  16. import com.vaadin.ui.renderers.TextRenderer;
  17. @SuppressWarnings("serial")
  18. @Theme("valo")
  19. public class GridSwitchRenderers extends AbstractTestUIWithLog {
  20. private static final int MANUALLY_FORMATTED_COLUMNS = 1;
  21. private static final int COLUMNS = 3;
  22. private static final int ROWS = 1000;
  23. private static final String EXPANSION_COLUMN_ID = "Column 0";
  24. private IndexedContainer ds;
  25. @Override
  26. protected void setup(VaadinRequest request) {
  27. ds = new IndexedContainer() {
  28. @Override
  29. public List<Object> getItemIds(int startIndex, int numberOfIds) {
  30. log("Requested items " + startIndex + " - "
  31. + (startIndex + numberOfIds));
  32. return super.getItemIds(startIndex, numberOfIds);
  33. }
  34. };
  35. {
  36. ds.addContainerProperty(EXPANSION_COLUMN_ID, String.class, "");
  37. int col = MANUALLY_FORMATTED_COLUMNS;
  38. for (; col < COLUMNS; col++) {
  39. ds.addContainerProperty(getColumnProperty(col), String.class,
  40. "");
  41. }
  42. }
  43. Random rand = new Random();
  44. rand.setSeed(13334);
  45. for (int row = 0; row < ROWS; row++) {
  46. Item item = ds.addItem(Integer.valueOf(row));
  47. fillRow("" + row, item);
  48. item.getItemProperty(getColumnProperty(1)).setReadOnly(true);
  49. }
  50. final Grid grid = new Grid(ds);
  51. grid.setWidth("100%");
  52. grid.getColumn(EXPANSION_COLUMN_ID).setWidth(50);
  53. for (int col = MANUALLY_FORMATTED_COLUMNS; col < COLUMNS; col++) {
  54. grid.getColumn(getColumnProperty(col)).setWidth(300);
  55. grid.getColumn(getColumnProperty(col)).setRenderer(
  56. new TextRenderer());
  57. }
  58. grid.setSelectionMode(SelectionMode.NONE);
  59. addComponent(grid);
  60. final CheckBox changeRenderer = new CheckBox(
  61. "SetHtmlRenderer for Column 2", false);
  62. changeRenderer.addValueChangeListener(new ValueChangeListener() {
  63. @Override
  64. public void valueChange(ValueChangeEvent event) {
  65. Column column = grid.getColumn(getColumnProperty(1));
  66. if (changeRenderer.getValue()) {
  67. column.setRenderer(new HtmlRenderer());
  68. } else {
  69. column.setRenderer(new TextRenderer());
  70. }
  71. grid.markAsDirty();
  72. }
  73. });
  74. addComponent(changeRenderer);
  75. }
  76. @SuppressWarnings("unchecked")
  77. private void fillRow(String content, Item item) {
  78. int col = MANUALLY_FORMATTED_COLUMNS;
  79. for (; col < COLUMNS; col++) {
  80. item.getItemProperty(getColumnProperty(col)).setValue(
  81. "<b>(" + content + ", " + col + ")</b>");
  82. }
  83. }
  84. private static String getColumnProperty(int c) {
  85. return "Column " + c;
  86. }
  87. }