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.

TwinColSelectAndIdBasedDataProvider.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*
  2. * Copyright 2000-2016 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.tests.components.twincolselect;
  17. import java.util.Arrays;
  18. import java.util.Collections;
  19. import java.util.Objects;
  20. import com.vaadin.annotations.Widgetset;
  21. import com.vaadin.data.provider.ListDataProvider;
  22. import com.vaadin.server.VaadinRequest;
  23. import com.vaadin.tests.components.AbstractTestUIWithLog;
  24. import com.vaadin.ui.Button;
  25. import com.vaadin.ui.TwinColSelect;
  26. @Widgetset("com.vaadin.DefaultWidgetSet")
  27. public class TwinColSelectAndIdBasedDataProvider extends AbstractTestUIWithLog {
  28. public static class MyObject {
  29. private int id;
  30. private String name;
  31. public MyObject() {
  32. }
  33. public MyObject(int id, String name) {
  34. this.id = id;
  35. this.name = name;
  36. }
  37. public int getId() {
  38. return id;
  39. }
  40. public void setId(int id) {
  41. this.id = id;
  42. }
  43. public String getName() {
  44. return name;
  45. }
  46. public void setName(String name) {
  47. this.name = name;
  48. }
  49. @Override
  50. public String toString() {
  51. return "MyObject{" + "id=" + id + ", name='" + name + '\'' + '}';
  52. }
  53. @Override
  54. public boolean equals(Object o) {
  55. if (this == o) {
  56. return true;
  57. }
  58. if (o == null || getClass() != o.getClass()) {
  59. return false;
  60. }
  61. MyObject myObject = (MyObject) o;
  62. return id == myObject.id && Objects.equals(name, myObject.name);
  63. }
  64. @Override
  65. public int hashCode() {
  66. return Objects.hash(id, name);
  67. }
  68. }
  69. @Override
  70. protected void setup(VaadinRequest request) {
  71. ListDataProvider<MyObject> dataProvider = new ListDataProvider<MyObject>(
  72. Arrays.asList(new MyObject(0, "Zero"),
  73. new MyObject(1, "One"))) {
  74. @Override
  75. public Object getId(MyObject item) {
  76. return item.getId();
  77. }
  78. };
  79. TwinColSelect<MyObject> twinColSelect = new TwinColSelect<>();
  80. twinColSelect.setDataProvider(dataProvider);
  81. twinColSelect.setValue(Collections.singleton(new MyObject(1, null)));
  82. twinColSelect.addValueChangeListener(
  83. event1 -> log.log("value: " + event1.getValue()));
  84. addComponent(twinColSelect);
  85. addComponent(new Button("Deselect id=1", e -> {
  86. twinColSelect.deselect(new MyObject(1, "foo"));
  87. }));
  88. }
  89. }