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.8KB

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