package org.aperteworkflow.editor.ui.queue; import com.vaadin.data.Property; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Select; import org.aperteworkflow.editor.domain.QueueRolePermission; //TODO merge with RoleNameComboBox in ui.permissions public class RoleNameComboBox extends Select implements ComboBox.NewItemHandler { private QueueRolePermissionBoxHandler handler; public RoleNameComboBox() { setImmediate(true); setNewItemHandler(this); setNewItemsAllowed(true); addListener(new ValueChangeListener() { @Override public void valueChange(Property.ValueChangeEvent event) { if (handler == null) { return; } String roleName = (String) RoleNameComboBox.this.getValue(); handleRoleChange(roleName); } }); } public QueueRolePermissionBoxHandler getHandler() { return handler; } public void setHandler(QueueRolePermissionBoxHandler handler) { this.handler = handler; } @Override public void addNewItem(String newItemCaption) { addItem(newItemCaption); setValue(newItemCaption); } private void handleRoleChange(String roleName) { if (roleName == null || roleName.trim().isEmpty()) { return; } QueueRolePermission permission = new QueueRolePermission(); permission.setRoleName(roleName); QueueRolePermissionBox box = new QueueRolePermissionBox(permission, handler); handler.addQueueRolePermissionBox(box); } }