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.

TableUnregisterComponent.java 3.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.vaadin.tests.components.table;
  2. import com.vaadin.tests.components.TestBase;
  3. import com.vaadin.tests.util.Log;
  4. import com.vaadin.ui.Button;
  5. import com.vaadin.ui.Component;
  6. import com.vaadin.v7.data.Container;
  7. import com.vaadin.v7.data.Item;
  8. import com.vaadin.v7.data.Property;
  9. import com.vaadin.v7.data.util.IndexedContainer;
  10. import com.vaadin.v7.data.util.ObjectProperty;
  11. import com.vaadin.v7.ui.DefaultFieldFactory;
  12. import com.vaadin.v7.ui.Field;
  13. import com.vaadin.v7.ui.Table;
  14. import com.vaadin.v7.ui.TextField;
  15. public class TableUnregisterComponent extends TestBase {
  16. private static final String COL_A = "textFieldA";
  17. private static final String COL_B = "textB";
  18. @Override
  19. protected void setup() {
  20. final Log log = new Log(5);
  21. IndexedContainer container = new IndexedContainer();
  22. container.addContainerProperty(COL_A, TextField.class, null);
  23. container.addContainerProperty(COL_B, String.class, "");
  24. Item it = container.addItem("a");
  25. final ObjectProperty<String> valA = new ObjectProperty<>("orgVal");
  26. final TextField fieldA = new TextField(valA) {
  27. @Override
  28. public void setPropertyDataSource(Property newDataSource) {
  29. super.setPropertyDataSource(newDataSource);
  30. if (newDataSource == null) {
  31. log.log("Embedded field property data source cleared");
  32. } else {
  33. log.log("Embedded field property data source set");
  34. }
  35. }
  36. };
  37. it.getItemProperty(COL_A).setValue(fieldA);
  38. it.getItemProperty(COL_B).setValue("Some text here");
  39. final Table table = new Table("", container);
  40. table.setColumnCollapsingAllowed(true);
  41. table.setTableFieldFactory(new DefaultFieldFactory() {
  42. @Override
  43. public Field<?> createField(Container container, Object itemId,
  44. Object propertyId, Component uiContext) {
  45. if (COL_B.equals(propertyId)) {
  46. Field<String> field = new TextField() {
  47. @Override
  48. public void setPropertyDataSource(
  49. Property newDataSource) {
  50. super.setPropertyDataSource(newDataSource);
  51. if (newDataSource == null) {
  52. log.log("Edit field property data source cleared");
  53. } else {
  54. log.log("Edit field property data source set");
  55. }
  56. }
  57. };
  58. field.setCaption(createCaptionByPropertyId(propertyId));
  59. return field;
  60. } else {
  61. return super.createField(container, itemId, propertyId,
  62. uiContext);
  63. }
  64. }
  65. });
  66. addComponent(log);
  67. addComponent(table);
  68. addComponent(new Button("Switch column collapse", event -> table
  69. .setColumnCollapsed(COL_A, !table.isColumnCollapsed(COL_A))));
  70. addComponent(new Button("Switch editable",
  71. event -> table.setEditable(!table.isEditable())));
  72. }
  73. @Override
  74. protected String getDescription() {
  75. return "Table.uncollapseColumn (triggered by collapsing column or disabling editable mode) should only unregister property data sources that have been added by the table.";
  76. }
  77. @Override
  78. protected Integer getTicketNumber() {
  79. return Integer.valueOf("7541");
  80. }
  81. }