diff --git a/src/test/java/com/flowingcode/vaadin/addons/chipfield/BinderDemo.java b/src/test/java/com/flowingcode/vaadin/addons/chipfield/BinderDemo.java index 00986b2..7f2d5cb 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/chipfield/BinderDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/chipfield/BinderDemo.java @@ -20,6 +20,8 @@ package com.flowingcode.vaadin.addons.chipfield; import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; import com.vaadin.flow.component.button.Button; import com.vaadin.flow.component.notification.Notification; @@ -36,7 +38,10 @@ public BinderDemo() { ChipField chf = new ChipField<>("Choose planet features (try with: 'Rings', 'Moons', 'Water', etc.)"); chf.setWidthFull(); - chf.setItems(Arrays.asList("Rings", "Moons", "Water", "Rocks", "Lava", "Ice", "Cold", "Heat", "Atmosphere")); + + List items = Arrays.asList("Rings", "Moons", "Water", "Rocks", "Lava", "Ice", "Cold", "Heat", "Atmosphere"); + chf.setItems(items); + Binder binder = new Binder<>(); binder.bind(chf, Planet::getFeatures, Planet::setFeatures); binder.setBean(p); @@ -48,6 +53,11 @@ public BinderDemo() { add(new Button("Show planet features", e -> Notification.show("Features: " + p.getFeatures(), 5000, Position.BOTTOM_START))); + add(new Button("Random features", ev -> { + p.setFeatures(items.stream().filter(x -> Math.random() > 0.7).collect(Collectors.toList())); + binder.setBean(p); + })); + } } diff --git a/src/test/java/com/flowingcode/vaadin/addons/chipfield/DataProviderDemo.java b/src/test/java/com/flowingcode/vaadin/addons/chipfield/DataProviderDemo.java index 0bf3d07..4eeab7b 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/chipfield/DataProviderDemo.java +++ b/src/test/java/com/flowingcode/vaadin/addons/chipfield/DataProviderDemo.java @@ -61,6 +61,17 @@ public DataProviderDemo() { chf.addChipClickedListener( ev -> Notification.show("Chip: " + ev.getChipLabel() + " Clicked!", 5000, Position.BOTTOM_END)); + buttons.add(new Button("All planets", ev -> { + chf.setValue(Planet.all()); + })); + + buttons.add(new Button("Remove Inner planets", ev -> { + chf.removeSelectedItem(new Planet("Mercury")); + chf.removeSelectedItem(new Planet("Venus")); + chf.removeSelectedItem(new Planet("Earth")); + chf.removeSelectedItem(new Planet("Mars")); + })); + add(new VerticalLayout(chf, buttons)); } diff --git a/src/test/java/com/flowingcode/vaadin/addons/chipfield/Planet.java b/src/test/java/com/flowingcode/vaadin/addons/chipfield/Planet.java index 39a06dc..d4df8d9 100644 --- a/src/test/java/com/flowingcode/vaadin/addons/chipfield/Planet.java +++ b/src/test/java/com/flowingcode/vaadin/addons/chipfield/Planet.java @@ -46,6 +46,35 @@ public List getFeatures() { public void setFeatures(List features) { this.features = features; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + Planet other = (Planet) obj; + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + return true; } public static List all() {