Package org.aperteworkflow.editor.ui.queue

Source Code of org.aperteworkflow.editor.ui.queue.QueueEditor

package org.aperteworkflow.editor.ui.queue;

import com.vaadin.ui.*;
import org.aperteworkflow.editor.domain.Queue;
import org.aperteworkflow.editor.vaadin.DataHandler;
import org.aperteworkflow.util.vaadin.VaadinUtility;
import pl.net.bluesoft.rnd.util.i18n.I18NSource;

import java.util.*;

public class QueueEditor extends VerticalLayout implements QueueHandler, DataHandler {

    private QueueProvider provider;

    private TextField addQueueNameField;
    private Button addQueueButton;
    private Label queueDescriptionLabel;
    private Map<Queue, SingleQueueEditor> queueEditors;

    public QueueEditor() {
        queueEditors = new HashMap<Queue, SingleQueueEditor>();
        initComponent();
        initLayout();
    }

    private void initComponent() {
        final I18NSource messages = I18NSource.ThreadUtil.getThreadI18nSource();

        queueDescriptionLabel = new Label(messages.getMessage("queue.editor.description"));

        addQueueNameField = new TextField();
        addQueueNameField.setNullRepresentation("");
        addQueueNameField.setInputPrompt(messages.getMessage("queue.editor.name.prompt"));

        addQueueButton = VaadinUtility.button(messages.getMessage("queue.editor.add"), new Runnable() {
            @Override
            public void run() {
                String queueName = (String) addQueueNameField.getValue();
                if (queueName == null || queueName.trim().isEmpty()) {
                    getApplication().getMainWindow().showNotification(
                            messages.getMessage("queue.new.no.name"),
                            Window.Notification.TYPE_TRAY_NOTIFICATION
                    );
                    return;
                }

                addQueueNameField.setValue(null);

                Queue queue = new Queue();
                queue.setName(queueName);
                addQueue(queue);
            }
        });
    }

    private void initLayout() {
        setSpacing(true);

        addComponent(queueDescriptionLabel);

        HorizontalLayout addQueueLayout = new HorizontalLayout();
        addQueueLayout.setSpacing(true);
        addQueueLayout.addComponent(addQueueNameField);
        addQueueLayout.addComponent(addQueueButton);

        addComponent(addQueueLayout);
    }

    public QueueProvider getProvider() {
        return provider;
    }

    public void setProvider(QueueProvider provider) {
        this.provider = provider;
    }

    @Override
    public void loadData() {
        List<Queue> queues = provider.getQueues();
        if (queues != null && !queues.isEmpty()) {
            for (Queue queue : queues) {
                addQueue(queue);
            }
        }
    }

    @Override
    public void saveData() {
        List<Queue> queues = new ArrayList<Queue>(queueEditors.keySet());
        provider.setQueues(queues);
    }

    @Override
    public Collection<String> validateData() {
        return null;
    }

    @Override
    public void addQueue(Queue queue) {
        if (queueEditors.containsKey(queue)) {
            // duplicated queue, do not add editor
            return;
        }

        SingleQueueEditor editor = new SingleQueueEditor(queue, this);
        editor.loadData();

        queueEditors.put(queue, editor);
        addComponent(editor);
    }

    @Override
    public void removeQueue(Queue queue) {
        if (!queueEditors.containsKey(queue)) {
            // nothing to remove from editors
            return;
        }

        SingleQueueEditor editor = queueEditors.get(queue);
        queueEditors.remove(queue);
        removeComponent(editor);
    }
}
TOP

Related Classes of org.aperteworkflow.editor.ui.queue.QueueEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.