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.

ViewPortCalculation.java 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.vaadin.tests.components.table;
  2. import com.vaadin.tests.components.TestBase;
  3. import com.vaadin.v7.data.Item;
  4. import com.vaadin.v7.ui.Table;
  5. import com.vaadin.v7.ui.Table.CellStyleGenerator;
  6. public class ViewPortCalculation extends TestBase {
  7. private Object lastDoubleClickedItemId;
  8. @Override
  9. protected void setup() {
  10. getLayout().setSpacing(true);
  11. addComponent(createTestTable(10));
  12. }
  13. @Override
  14. protected String getDescription() {
  15. return "Table rows that are too far down (but still visible) don't get focus after refreshRowCache/select (double-click)."
  16. + "<br> Double-clicking on the seventh (or any further) row of causes focus to jump to the first row.";
  17. }
  18. @Override
  19. protected Integer getTicketNumber() {
  20. return 8298;
  21. }
  22. private Table createTestTable(int rows) {
  23. final Table table = new Table();
  24. table.setId("table");
  25. table.setSelectable(true);
  26. table.setPageLength(0);
  27. table.addContainerProperty("col1", String.class, null);
  28. table.addContainerProperty("col2", String.class, null);
  29. table.addContainerProperty("col3", String.class, null);
  30. for (int i = 1; i <= rows; ++i) {
  31. testData(table.addItem("row" + i), i);
  32. }
  33. table.setCellStyleGenerator(new CellStyleGenerator() {
  34. @Override
  35. public String getStyle(Table source, Object itemId,
  36. Object propertyId) {
  37. if (itemId.equals(lastDoubleClickedItemId)) {
  38. return "bold";
  39. }
  40. return null;
  41. }
  42. });
  43. table.addItemClickListener(event -> {
  44. if (event.isDoubleClick()) {
  45. lastDoubleClickedItemId = event.getItemId();
  46. table.refreshRowCache();
  47. table.select(event.getItemId());
  48. }
  49. });
  50. return table;
  51. }
  52. private void testData(Item item, int i) {
  53. item.getItemProperty("col1").setValue("test1-" + i);
  54. item.getItemProperty("col2").setValue("test2-" + i);
  55. item.getItemProperty("col3").setValue("test3-" + i);
  56. }
  57. }