提交 b1c83dba 编写于 作者: F frederikheremans

Queued tasks URI's are working as wel

上级 c01212c3
......@@ -15,6 +15,7 @@ package org.activiti.explorer.navigation;
import org.activiti.explorer.ExplorerApplication;
import org.activiti.explorer.ui.task.TaskInboxPage;
import org.activiti.explorer.ui.task.TaskQueuedPage;
/**
* @author Frederik Heremans
......@@ -23,6 +24,10 @@ public class TaskNavigationHandler implements NavigationHandler {
public static final String TASK_URI_PART = "tasks";
public static final String CATEGORY_INBOX = "inbox";
public static final String CATEGORY_QUEUED = "queued";
public static final String PARAMETER_CATEGORY = "category";
public static final String PARAMETER_GROUP = "group";
public String getTrigger() {
return TASK_URI_PART;
......@@ -30,18 +35,35 @@ public class TaskNavigationHandler implements NavigationHandler {
public void handleNavigation(UriFragment uriFragment) {
// String category = uriFragment.getParameter(CATEGORY_INBOX);
String taskId = null;
if (uriFragment.getUriParts().size() == 2) {
taskId = uriFragment.getUriPart(1);
String category = uriFragment.getParameter(PARAMETER_CATEGORY);
String taskId = uriFragment.getUriPart(1);
if(CATEGORY_QUEUED.equals(category)) {
showQueuedTasks(taskId, uriFragment);
} else {
// Default is the inbox
showInbox(taskId, uriFragment);
}
}
protected void showQueuedTasks(String taskId, UriFragment uriFragment) {
String groupId = uriFragment.getParameter(PARAMETER_GROUP);
if(groupId != null) {
ExplorerApplication.getCurrent().switchView(new TaskQueuedPage(groupId, taskId));
} else {
// When no group is available, just show the inbox
showInbox(taskId, uriFragment);
ExplorerApplication.getCurrent().showErrorNotification(
"Cannot view queued tasks", "No groupId was provided, can't show queued tasks");
}
}
protected void showInbox(String taskId, UriFragment uriFragment) {
if (taskId != null) {
ExplorerApplication.getCurrent().switchView(new TaskInboxPage(taskId));
} else {
ExplorerApplication.getCurrent().switchView(new TaskInboxPage());
}
}
}
......@@ -13,6 +13,7 @@
package org.activiti.explorer.navigation;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
......@@ -47,18 +48,21 @@ public class UriFragment {
}
public UriFragment(Map<String, String> parameters, String... uriParts) {
this.uriParts = Arrays.asList(uriParts);
this.uriParts = new ArrayList<String>(Arrays.asList(uriParts));
this.parameters = parameters;
}
public UriFragment(String... uriParts) {
this.uriParts = Arrays.asList(uriParts);
this.parameters = new LinkedHashMap<String, String>();
this(new LinkedHashMap<String, String>(), uriParts);
}
public void addParameter(String name, String value) {
parameters.put(name, value);
}
public void addUriPart(String part) {
uriParts.add(part);
}
public List<String> getUriParts() {
return uriParts;
......
......@@ -13,6 +13,8 @@
package org.activiti.explorer.ui.task;
import org.activiti.explorer.data.LazyLoadingQuery;
import org.activiti.explorer.navigation.TaskNavigationHandler;
import org.activiti.explorer.navigation.UriFragment;
......@@ -50,5 +52,17 @@ public class TaskInboxPage extends TaskPage {
selectListElement(taskListContainer.getIndexForObjectId(taskId));
}
}
@Override
protected UriFragment getUriFragment(String taskId) {
UriFragment taskFragment = new UriFragment(TaskNavigationHandler.TASK_URI_PART, taskId);
if(taskId != null) {
taskFragment.addUriPart(taskId);
}
taskFragment.addParameter(TaskNavigationHandler.PARAMETER_CATEGORY, TaskNavigationHandler.CATEGORY_INBOX);
return taskFragment;
}
}
......@@ -59,12 +59,12 @@ public abstract class TaskPage extends AbstractPage {
private static final long serialVersionUID = 8811553575319455854L;
public void valueChange(ValueChangeEvent event) {
Item item = taskTable.getItem(event.getProperty().getValue()); // the value of the property is the itemId of the table entry
if(item != null) {
String taskId = (String) item.getItemProperty("id").getValue();
splitPanel.setSecondComponent(new TaskDetailPanel(taskId, TaskPage.this));
UriFragment taskFragment = new UriFragment(TaskNavigationHandler.TASK_URI_PART, taskId);
taskFragment.addParameter("category", TaskNavigationHandler.CATEGORY_INBOX);
UriFragment taskFragment = getUriFragment(taskId);
ExplorerApplication.getCurrent().setCurrentUriFragment(taskFragment);
} else {
// Nothing is selected
......@@ -90,4 +90,6 @@ public abstract class TaskPage extends AbstractPage {
protected abstract LazyLoadingQuery createLazyLoadingQuery();
protected abstract UriFragment getUriFragment(String taskId);
}
......@@ -13,8 +13,8 @@
package org.activiti.explorer.ui.task;
import org.activiti.explorer.data.LazyLoadingQuery;
import org.activiti.explorer.navigation.TaskNavigationHandler;
import org.activiti.explorer.navigation.UriFragment;
/**
* @author Joram Barrez
......@@ -24,11 +24,17 @@ public class TaskQueuedPage extends TaskPage {
private static final long serialVersionUID = 1L;
protected String groupId;
protected String taskId;
public TaskQueuedPage(String groupId) {
this.groupId = groupId;
}
public TaskQueuedPage(String groupId, String taskId) {
this.groupId = groupId;
this.taskId = taskId;
}
@Override
protected LazyLoadingQuery createLazyLoadingQuery() {
return new TaskQueuedListQuery(groupId);
......@@ -37,7 +43,26 @@ public class TaskQueuedPage extends TaskPage {
@Override
protected void initUi() {
super.initUi();
selectListElement(0);
if(taskId != null) {
selectListElement(taskListContainer.getIndexForObjectId(taskId));
} else {
selectListElement(0);
}
}
@Override
protected UriFragment getUriFragment(String taskId) {
UriFragment taskFragment = new UriFragment(TaskNavigationHandler.TASK_URI_PART);
if(taskId != null) {
taskFragment.addUriPart(taskId);
}
taskFragment.addParameter(TaskNavigationHandler.PARAMETER_CATEGORY, TaskNavigationHandler.CATEGORY_QUEUED);
if(groupId != null) {
taskFragment.addParameter(TaskNavigationHandler.PARAMETER_GROUP, groupId);
}
return taskFragment;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册