/* * 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.adm.ui; import java.util.List; import java.util.Set; import org.tepi.filtertable.FilterTable; import ru.codeinside.adm.AdminServiceProvider; import ru.codeinside.adm.database.Group; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.ui.HorizontalSplitPanel; import com.vaadin.ui.Panel; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.themes.Reindeer; public class TableGroup extends VerticalLayout implements Property.ValueChangeListener { private static final long serialVersionUID = 1L; private String typeGroup; private final FilterTable table; private final Panel panel = new Panel(); TableGroup(String typeGroup) { setSizeFull(); this.typeGroup = typeGroup; setMargin(false, false, false, true); table = new FilterTable(); table.setSizeFull(); table.setSelectable(true); table.setMultiSelect(false); table.addListener(this); table.setImmediate(true); table.addContainerProperty("Код", String.class, ""); table.addContainerProperty("Название", String.class, ""); table.setFilterBarVisible(true); table.setFilterDecorator(new FilterDecorator_()); Set<String> groupNames = null; if (typeGroup.equals(GroupTab.ORGANIZATION)) { groupNames = AdminServiceProvider.get().getOrgGroupNames(); } else if (typeGroup.equals(GroupTab.EMPLOYEE)) { groupNames = AdminServiceProvider.get().getEmpGroupNames(); } for (String groupName : groupNames) { List<Group> groups = AdminServiceProvider.get().findGroupByName(groupName); for (Group group : groups) { table.addItem(new Object[]{groupName, group.getTitle()}, groupName); } } panel.setStyleName(Reindeer.PANEL_LIGHT); panel.setSizeFull(); final HorizontalSplitPanel horiz = new HorizontalSplitPanel(); horiz.setSplitPosition(35); // percent horiz.setSizeFull(); addComponent(horiz); horiz.addComponent(table); horiz.addComponent(panel); } public void addItem(String group, String title) { table.addItem(new Object[]{group, title}, group); } public void valueChange(ValueChangeEvent event) { Object valuePropertyEvent = event.getProperty().getValue(); if (valuePropertyEvent != null) { showGroupEditor(valuePropertyEvent.toString()); } else { panel.removeAllComponents(); } } public void setValue(Object value) { table.setValue(value); getWindow().showNotification(String.valueOf(table.size())); table.setCurrentPageFirstItemIndex(table.size()); } private void showGroupEditor(String group) { panel.removeAllComponents(); panel.addComponent(new GroupEditor(typeGroup, group, table)); } }