/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.tests.components.listselect; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import com.vaadin.data.provider.ListDataProvider; import com.vaadin.data.provider.Query; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractTestUIWithLog; import com.vaadin.ui.Button; import com.vaadin.ui.ListSelect; // FIXME this test should be updated once the provider supports CRUD operations #77 public class ListSelectAddRemoveItems extends AbstractTestUIWithLog { private ListDataProvider<String> dataProvider = new ListDataProvider<>( Collections.emptyList()); private ListSelect<String> listSelect; @Override protected void setup(VaadinRequest request) { listSelect = new ListSelect<>("ListSelect", dataProvider); listSelect.setWidth("100px"); listSelect.setRows(10); resetContainer(); logContainer(); addComponent(listSelect); addComponent(new Button("Reset", event -> { resetContainer(); log.clear(); logContainer(); })); addComponent(new Button("Add first", event -> { List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); list.add(0, "first"); dataProvider = new ListDataProvider<>(list); listSelect.setDataProvider(dataProvider); logContainer(); })); addComponent(new Button("Add middle", event -> { List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); list.add(list.size() / 2, "middle"); dataProvider = new ListDataProvider<>(list); listSelect.setDataProvider(dataProvider); logContainer(); })); addComponent(new Button("Add last", event -> { List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); list.add("last"); dataProvider = new ListDataProvider<>(list); listSelect.setDataProvider(dataProvider); logContainer(); })); addComponent(new Button("Swap", event -> { List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); Collections.swap(list, 0, list.size() - 1); dataProvider = new ListDataProvider<>(list); listSelect.setDataProvider(dataProvider); logContainer(); })); addComponent(new Button("Remove first", event -> { List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); list.remove(0); dataProvider = new ListDataProvider<>(list); listSelect.setDataProvider(dataProvider); logContainer(); })); addComponent(new Button("Remove middle", event -> { List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); list.remove(list.size() / 2); dataProvider = new ListDataProvider<>(list); listSelect.setDataProvider(dataProvider); logContainer(); })); addComponent(new Button("Remove last", event -> { List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); list.remove(list.size() - 1); dataProvider = new ListDataProvider<>(list); listSelect.setDataProvider(dataProvider); logContainer(); })); } private void logContainer() { StringBuilder b = new StringBuilder(); List<String> list = dataProvider.fetch(new Query<>()) .collect(Collectors.toList()); for (int i = 0; i < list.size(); i++) { Object id = list.get(i); if (i != 0) { b.append(", "); } b.append(id); } log(b.toString()); } public void resetContainer() { dataProvider = new ListDataProvider<>(Arrays.asList("a", "b", "c")); listSelect.setDataProvider(dataProvider); } @Override protected String getTestDescription() { return "Test for verifying that items are added to and removed from the correct locations"; } }