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.

Grid.java 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Copyright 2000-2014 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.tokka.ui.components.grid;
  17. import java.util.LinkedHashMap;
  18. import java.util.Map;
  19. import java.util.function.Function;
  20. import com.vaadin.tokka.server.communication.data.DataProvider;
  21. import com.vaadin.tokka.server.communication.data.DataSource;
  22. import com.vaadin.tokka.server.communication.data.SingleSelection;
  23. import com.vaadin.tokka.ui.components.AbstractListing;
  24. public class Grid<T> extends AbstractListing<T> {
  25. private DataSource<T> dataSource;
  26. private Map<String, Column<T, ?>> columns = new LinkedHashMap<>();
  27. public Grid() {
  28. setSelectionModel(new SingleSelection<T>());
  29. }
  30. @Override
  31. public void setDataSource(DataSource<T> data) {
  32. this.dataSource = data;
  33. setDataProvider(DataProvider.create(data));
  34. }
  35. @Override
  36. public DataSource<T> getDataSource() {
  37. return dataSource;
  38. }
  39. public <V> Column<T, V> addColumn(String caption, Function<T, V> getter) {
  40. Column<T, V> c = new Column<T, V>(caption, getter, this);
  41. columns.put(c.getConnectorId(), c);
  42. addDataGenerator(c);
  43. return c;
  44. }
  45. public void removeColumn(Column<T, ?> column) {
  46. if (columns.containsValue(column)) {
  47. removeDataGenerator(columns.remove(column.getConnectorId()));
  48. column.remove();
  49. }
  50. }
  51. }