123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*
- * 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;
-
- import com.vaadin.data.util.IndexedContainer;
- import com.vaadin.ui.Button;
- import com.vaadin.ui.Button.ClickEvent;
- import com.vaadin.ui.CustomComponent;
- import com.vaadin.ui.HorizontalLayout;
- import com.vaadin.ui.Label;
- import com.vaadin.ui.Panel;
- import com.vaadin.ui.Table;
- import com.vaadin.ui.VerticalLayout;
- import com.vaadin.v7.ui.LegacyTextField;
-
- public class TestForContainerFilterable extends CustomComponent {
-
- VerticalLayout lo = new VerticalLayout();
- IndexedContainer ic = new IndexedContainer();
- Table t = new Table();
- private static String parts[] = { "Neo", "Sa", "rem", "the", "adi", "za",
- "tre", "day", "Ca", "re", "cen", "ter", "mi", "nal" };
- LegacyTextField fooFilter = new LegacyTextField("foo-filter");
- LegacyTextField barFilter = new LegacyTextField("bar-filter");
- Button filterButton = new Button("Filter");
- Label count = new Label();
-
- public TestForContainerFilterable() {
- setCompositionRoot(lo);
-
- // Init datasource
- ic.addContainerProperty("foo", String.class, "");
- ic.addContainerProperty("bar", String.class, "");
- for (int i = 0; i < 1000; i++) {
- final Object id = ic.addItem();
- ic.getContainerProperty(id, "foo").setValue(randomWord());
- ic.getContainerProperty(id, "bar").setValue(randomWord());
- }
-
- // Init filtering view
- final HorizontalLayout filterLayout = new HorizontalLayout();
- final Panel filterPanel = new Panel("Filter", filterLayout);
- filterPanel.setWidth(100, Panel.UNITS_PERCENTAGE);
- lo.addComponent(filterPanel);
- filterLayout.addComponent(fooFilter);
- filterLayout.addComponent(barFilter);
- filterLayout.addComponent(filterButton);
- fooFilter.setDescription(
- "Filters foo column in case-sensitive contains manner.");
- barFilter.setDescription(
- "Filters bar column in case-insensitive prefix manner.");
- filterLayout.addComponent(count);
-
- // Table
- lo.addComponent(t);
- t.setPageLength(12);
- t.setWidth(100, Table.UNITS_PERCENTAGE);
- t.setContainerDataSource(ic);
-
- // Handler
- filterButton.addListener(new Button.ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- ic.removeAllContainerFilters();
- if (fooFilter.getValue().length() > 0) {
- ic.addContainerFilter("foo", fooFilter.getValue(), false,
- false);
- }
- if (barFilter.getValue().length() > 0) {
- ic.addContainerFilter("bar", barFilter.getValue(), true,
- true);
- }
- count.setValue("Rows in table: " + ic.size());
- }
- });
-
- // Resetbutton
- lo.addComponent(new Button("Rebind table datasource",
- new Button.ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- t.setContainerDataSource(ic);
- }
- }));
- }
-
- private String randomWord() {
- int len = (int) (Math.random() * 4);
- final StringBuffer buf = new StringBuffer();
- while (len-- >= 0) {
- buf.append(parts[(int) (Math.random() * parts.length)]);
- }
- return buf.toString();
- }
- }
|