package pl.net.bluesoft.rnd.processtool.ui.activity;
import com.vaadin.ui.Component;
import com.vaadin.ui.Window;
import pl.net.bluesoft.rnd.processtool.ProcessToolContext;
import pl.net.bluesoft.rnd.processtool.model.BpmTask;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstance;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstanceFilter;
import pl.net.bluesoft.rnd.processtool.model.QueueType;
import pl.net.bluesoft.rnd.processtool.model.TaskState;
import pl.net.bluesoft.rnd.processtool.model.nonpersistent.ProcessQueue;
import pl.net.bluesoft.rnd.processtool.ui.tasks.TaskTableItem;
import pl.net.bluesoft.rnd.processtool.ui.widgets.taskitem.TaskItemProvider;
import pl.net.bluesoft.rnd.processtool.ui.widgets.taskitem.TaskItemProviderBase;
import pl.net.bluesoft.rnd.processtool.ui.widgets.taskitem.TaskItemProviderParams;
import static org.aperteworkflow.util.vaadin.VaadinExceptionHandler.Util.withErrorHandling;
/**
* @author tlipski@bluesoft.net.pl
*/
public class QueueListPane extends ProcessListPane {
private ProcessQueue queue;
public QueueListPane(ActivityMainPane activityMainPane) {
super(activityMainPane, null);
}
public void setQueue(ProcessQueue queue) {
this.queue = queue;
setTitle(queue.getDescription());
}
@Override
protected Component getTaskItem(final TaskTableItem tti) {
ProcessToolContext ctx = ProcessToolContext.Util.getThreadProcessToolContext();
ProcessInstance pi = tti.getTask().getProcessInstance();
TaskItemProviderBase tip = getTaskItemProvider(ctx, pi);
TaskItemProviderParams params = getTaskItemProviderParams(ctx, tti);
params.setQueue(queue);
return tip.getQueuePane(params);
}
@Override
protected void onClick(final TaskItemProviderParams params) {
withErrorHandling(getApplication(), new Runnable() {
public void run() {
BpmTask task = getBpmSession().assignTaskFromQueue(queue, params.getTask(),
ProcessToolContext.Util.getThreadProcessToolContext());
if (task != null) {
getApplication().getMainWindow().showNotification(getMessage("process-tool.task.assigned"),
Window.Notification.TYPE_HUMANIZED_MESSAGE);
displayProcessData(task);
}
}
});
}
protected void displayProcessData(BpmTask task) {
activityMainPane.displayProcessData(task);
}
@Override
protected ProcessInstanceFilter getDefaultFilter() {
ProcessInstanceFilter tfi = new ProcessInstanceFilter();
if (queue != null) {
tfi.addQueue(queue.getName());
}
tfi.addQueueType(QueueType.OWN_IN_QUEUE);
return tfi;
}
}