ru.codeinside.adm.ui.employee.ExecutorGroupsBlock.java Source code

Java tutorial

Introduction

Here is the source code for ru.codeinside.adm.ui.employee.ExecutorGroupsBlock.java

Source

/*
 * 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.employee;

import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.VerticalLayout;
import org.tepi.filtertable.FilterTable;
import ru.codeinside.adm.AdminServiceProvider;
import ru.codeinside.adm.UserItem;
import ru.codeinside.adm.database.Group;

import java.util.Collection;
import java.util.TreeSet;

final public class ExecutorGroupsBlock extends CustomComponent {

    final FilterTable currentExecutorGroups;

    public ExecutorGroupsBlock(UserItem userItem) {
        HorizontalLayout executorGroups = new HorizontalLayout();
        executorGroups.setMargin(true, false, true, false);
        executorGroups.setSpacing(true);
        executorGroups.setCaption(" ?:");
        FilterTable allExecutorGroups = new FilterTable();
        allExecutorGroups.setCaption("?:");
        TableEmployee.table(executorGroups, allExecutorGroups);
        currentExecutorGroups = new FilterTable();
        currentExecutorGroups
                .setCaption(",    :");
        TableEmployee.table(executorGroups, currentExecutorGroups);
        for (String groupName : AdminServiceProvider.get().getEmpGroupNames()) {
            for (Group group : AdminServiceProvider.get().findGroupByName(groupName)) {
                if (userItem.getGroups().contains(groupName)) {
                    currentExecutorGroups.addItem(new Object[] { groupName, group.getTitle() }, groupName);
                } else {
                    allExecutorGroups.addItem(new Object[] { groupName, group.getTitle() }, groupName);
                }
            }
        }
        TableEmployee.addListener(allExecutorGroups, currentExecutorGroups);
        TableEmployee.addListener(currentExecutorGroups, allExecutorGroups);

        VerticalLayout layout = new VerticalLayout();
        layout.setSpacing(true);
        layout.setMargin(true);
        layout.setSizeFull();

        layout.addComponent(executorGroups);
        layout.setExpandRatio(executorGroups, 1f);

        setCompositionRoot(layout);
        setWidth(100f, UNITS_PERCENTAGE);
    }

    public TreeSet<String> getGroups() {
        return new TreeSet<String>((Collection<String>) currentExecutorGroups.getItemIds());
    }

}