/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gses.apservice; import com.vaadin.data.Container; import com.vaadin.data.Container.ItemSetChangeEvent; import com.vaadin.event.ItemClickEvent; import com.vaadin.ui.Button; import com.vaadin.ui.Component; import com.vaadin.ui.VerticalLayout; import org.tepi.filtertable.FilterTable; import ru.codeinside.adm.database.Service; import ru.codeinside.adm.ui.FilterDecorator_; import ru.codeinside.adm.ui.LazyLoadingContainer2; import ru.codeinside.gses.manager.ManagerService; import java.util.Date; public class ApServiceTable extends VerticalLayout { private static final long serialVersionUID = -3060552897820352215L; private static final String[] NAMES = new String[]{"Код", "Наименование", "Дата"}; private final ApServiceForm form; final FilterTable listAp; public ApServiceTable(final ApServiceForm serviceForm) { this.form = serviceForm; listAp = new FilterTable(); listAp.setPageLength(5); listAp.setStyleName("clickable-item-table"); listAp.setFilterBarVisible(true); listAp.setFilterDecorator(new FilterDecorator_()); LazyLoadingContainer2 newDataSource = new LazyLoadingContainer2(new ApServiceQuery(serviceForm)); serviceForm.addDependentContainer(newDataSource); newDataSource.addContainerProperty("id", Component.class, null); newDataSource.addContainerProperty("name", String.class, null); newDataSource.addContainerProperty("dateCreated", Date.class, null); listAp.setContainerDataSource(newDataSource); listAp.setColumnHeaders(NAMES); addComponent(listAp); listAp.setColumnExpandRatio("id", 0.3f); listAp.setColumnExpandRatio("name", 3); listAp.setColumnExpandRatio("dateCreated", 0.3f); listAp.addListener(new ItemClickEvent.ItemClickListener() { @Override public void itemClick(ItemClickEvent event) { if (event.getItem().getItemProperty("id") != null && event.getItem().getItemProperty("id").getType() == Button.class) { String id = ((Button) event.getItem().getItemProperty("id").getValue()).getCaption(); Service s = ManagerService.get().getApService(id); if (s != null) { form.showForm(s); } } } }); Container.ItemSetChangeListener listener = new Container.ItemSetChangeListener() { private static final long serialVersionUID = 4042381260704014883L; @Override public void containerItemSetChange(ItemSetChangeEvent event) { refreshTable(); } }; newDataSource.addListener(listener); listAp.setSizeFull(); setSizeFull(); } public void refreshTable() { listAp.getContainerDataSource().removeAllItems(); listAp.refreshRowCache(); int pageLength = listAp.getPageLength(); listAp.setPageLength(pageLength - 1); listAp.setPageLength(pageLength); } }