/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.activiti.explorer.ui.task.listener; import java.util.Arrays; import java.util.List; import org.activiti.engine.ProcessEngines; import org.activiti.engine.task.Task; import org.activiti.explorer.ExplorerApp; import org.activiti.explorer.I18nManager; import org.activiti.explorer.Messages; import org.activiti.explorer.ui.custom.SelectUsersPopupWindow; import org.activiti.explorer.ui.event.SubmitEvent; import org.activiti.explorer.ui.event.SubmitEventListener; import org.activiti.explorer.ui.task.TaskDetailPanel; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; /** * @author Joram Barrez */ public class ReassignAssigneeListener implements ClickListener { private static final long serialVersionUID = 1L; protected Task task; protected TaskDetailPanel taskDetailPanel; protected I18nManager i18nManager; public ReassignAssigneeListener(Task task, TaskDetailPanel taskDetailPanel) { this.task = task; this.taskDetailPanel = taskDetailPanel; this.i18nManager = ExplorerApp.get().getI18nManager(); } public void buttonClick(ClickEvent event) { List<String> ignoredIds = null; if (task.getAssignee() != null) { ignoredIds = Arrays.asList(task.getAssignee()); } final SelectUsersPopupWindow involvePeoplePopupWindow = new SelectUsersPopupWindow(i18nManager.getMessage(Messages.TASK_ASSIGNEE_REASSIGN), false, ignoredIds); involvePeoplePopupWindow.addListener(new SubmitEventListener() { protected void submitted(SubmitEvent event) { // Update assignee String selectedUser = involvePeoplePopupWindow.getSelectedUserId(); task.setAssignee(selectedUser); ProcessEngines.getDefaultProcessEngine().getTaskService().setAssignee(task.getId(), selectedUser); // Update UI taskDetailPanel.notifyAssigneeChanged(); } protected void cancelled(SubmitEvent event) { } }); ExplorerApp.get().getViewManager().showPopupWindow(involvePeoplePopupWindow); } }