/* * 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.manager; import com.vaadin.data.Container; import com.vaadin.data.Container.ItemSetChangeEvent; import com.vaadin.data.util.BeanItemContainer; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Form; import org.tepi.filtertable.FilterTable; import ru.codeinside.adm.database.Service; import java.util.List; public class ProcedureFilter extends Form implements Container.ItemSetChangeListener { private static final long serialVersionUID = 7129466623849271470L; private final ComboBox comboBox; private final Button filterButton; private ProcedureTable procedureTable; public void setServiceFilterEnabled(boolean enabled) { comboBox.setEnabled(enabled); filterButton.setEnabled(enabled); } public ProcedureFilter(String name) { super(); setCaption(name); comboBox = ProcedureForm.createServicesComboBox("По услуге"); addField("serviceId", comboBox); filterButton = new Button("Фильтровать"); filterButton.addListener(new Button.ClickListener() { private static final long serialVersionUID = 1L; @Override public void buttonClick(ClickEvent event) { Service value = (Service) getServiceSelect().getValue(); procedureTable.getProcedureQuery().setServiceId(value == null ? null : value.getId()); FilterTable pagedTable = procedureTable.getProceduresTable(); pagedTable.removeAllItems(); pagedTable.refreshRowCache(); int pageLength = pagedTable.getPageLength(); pagedTable.setPageLength(pageLength - 1); pagedTable.setPageLength(pageLength); } }); addField("submit", filterButton); setWidth("100%"); } private ComboBox getServiceSelect() { return comboBox; } public void setProcedureTable(ProcedureTable procedureTable) { this.procedureTable = procedureTable; } @Override public void containerItemSetChange(ItemSetChangeEvent event) { getServiceSelect().removeAllItems(); ManagerService managerService = ManagerService.get(); List<Service> apServices = managerService.getApServices(0, managerService.getApServiceCount(null), new String[]{ProcedureForm.NAME}, new boolean[]{true}, null); BeanItemContainer<Service> objects = new BeanItemContainer<Service>(Service.class, apServices); getServiceSelect().setContainerDataSource(objects); } }