[jbpm-commits] JBoss JBPM SVN: r3011 - in projects/gwt-console/trunk: server/src/main/java/org/jboss/bpm/console/server and 7 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Nov 20 08:13:46 EST 2008
Author: heiko.braun at jboss.com
Date: 2008-11-20 08:13:45 -0500 (Thu, 20 Nov 2008)
New Revision: 3011
Added:
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskDetailsFormPanel.java
Removed:
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/DetailsFormPanel.java
Modified:
projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/JBPM3MgmtFacade.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskMgmtFacade.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/UserMgmtFacade.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3FormParser.java
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskManagement.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentCallback.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentFormPanel.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/FormWidgets.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelChangeListener.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelListenerRegistry.java
projects/gwt-console/trunk/war/src/main/resources/org/jboss/bpm/console/public/console.css
projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestApplication.java
projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestDTOParser.java
Log:
task reassignment, first cut
Modified: projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java
===================================================================
--- projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -45,7 +45,7 @@
private List<String> transitionNames = new ArrayList<String>();
private List<String> pooledActors = new ArrayList<String>();
- public enum STATE {OPEN, IN_PROGRESS, CLOSED};
+ public enum STATE {OPEN, ASSIGNED, CLOSED};
private STATE currentState;
public TaskReference()
@@ -121,6 +121,7 @@
{
if(null==actor)
actor = "";
+
this.actor = actor;
initOrUpdateState();
}
@@ -165,16 +166,13 @@
}
else
{
- if(pooledActors.contains(actor))
- currentState = STATE.OPEN;
- else
- currentState = STATE.IN_PROGRESS;
+ currentState = STATE.ASSIGNED;
}
}
public void close()
{
- if(STATE.IN_PROGRESS != currentState)
+ if(STATE.ASSIGNED != currentState)
throw new IllegalArgumentException("Cannot close task in state " + currentState);
currentState = STATE.CLOSED;
@@ -195,9 +193,8 @@
return "TaskRef{id:"+id+",state:"+currentState+"}";
}
- public boolean hasPooledActors()
+ public List<String> getPooledActors()
{
- return !pooledActors.isEmpty();
+ return pooledActors;
}
-
}
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/JBPM3MgmtFacade.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/JBPM3MgmtFacade.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/JBPM3MgmtFacade.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -51,7 +51,7 @@
private JBPM3Extension JBPM3Extension = null;
private ProcessManagement processManagement = null;
- private ProcessManagement getProcessDAO()
+ private ProcessManagement getProcessManagement()
{
if(null==this.processManagement)
{
@@ -64,7 +64,7 @@
}
- private JBPM3Extension getExtensionDAO()
+ private JBPM3Extension getManagementExtension()
{
if(null==this.JBPM3Extension)
{
@@ -112,7 +112,7 @@
// Process a file upload in memory
byte[] data = item.get();
- getProcessDAO().deployNewDefinition(data);
+ getProcessManagement().deployNewDefinition(data);
// Process stream
//InputStream uploadedStream = item.getInputStream();
@@ -139,7 +139,7 @@
long id
)
{
- byte[] image = getExtensionDAO().getProcessImage(id);
+ byte[] image = getManagementExtension().getProcessImage(id);
if(null==image)
return Response.serverError().build();
else
@@ -154,7 +154,7 @@
long id
)
{
- return getExtensionDAO().getDiagramInfo(id);
+ return getManagementExtension().getDiagramInfo(id);
}
@GET
@@ -165,7 +165,7 @@
long id
)
{
- ActiveNodeInfo activNodeInfo = getExtensionDAO().getActivNodeInfo(id);
+ ActiveNodeInfo activNodeInfo = getManagementExtension().getActivNodeInfo(id);
return activNodeInfo;
}
@@ -180,7 +180,7 @@
{
log.debug("Signal token " + id + " -> " + signalName);
- getExtensionDAO().signalToken(id, signalName);
+ getManagementExtension().signalToken(id, signalName);
return Response.ok().type("application/json").build();
}
@@ -193,7 +193,7 @@
{
log.debug("Signal token " + id);
- getExtensionDAO().signalToken(id, null);
+ getManagementExtension().signalToken(id, null);
return Response.ok().type("application/json").build();
}
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskMgmtFacade.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskMgmtFacade.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskMgmtFacade.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -57,7 +57,7 @@
/**
* Lazy load the {@link org.jboss.bpm.console.server.dao.ProcessManagement}
*/
- private TaskManagement getTaskDAO()
+ private TaskManagement getTaskManagement()
{
if(null==this.taskManagement)
{
@@ -90,7 +90,7 @@
)
{
TaskReferenceWrapper wrapper =
- new TaskReferenceWrapper(getTaskDAO().getTasksByActor(actorName));
+ new TaskReferenceWrapper(getTaskManagement().getTasksByActor(actorName));
return createJsonResponse(wrapper);
}
@@ -125,7 +125,7 @@
)
{
log.debug("Reassign task " + taskId + " to '" + actorId +"'");
- getTaskDAO().reassignTask(taskId, actorId);
+ getTaskManagement().reassignTask(taskId, actorId);
return Response.ok().build();
}
@@ -138,7 +138,7 @@
)
{
log.debug("Release task " + taskId);
- getTaskDAO().reassignTask(taskId, null);
+ getTaskManagement().reassignTask(taskId, null);
return Response.ok().build();
}
@@ -164,7 +164,7 @@
)
{
log.debug("Close task " + taskId);
- getTaskDAO().closeTask(taskId, signalName);
+ getTaskManagement().closeTask(taskId, signalName);
return Response.ok().build();
}
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/UserMgmtFacade.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/UserMgmtFacade.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/UserMgmtFacade.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -33,9 +33,7 @@
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
+import java.util.*;
import com.google.gson.Gson;
@@ -115,6 +113,28 @@
return createJsonResponse(groups);
}
+ @GET
+ @Path("/user/{actorId}/actors")
+ @Produces("application/json")
+ public Response getAvailableActors(
+ @PathParam("actorId")
+ String actorId
+ )
+ {
+ Set<String> users = new HashSet<String>();
+ List<String> groups = getUserManagement().getGroupsForActor(actorId);
+ for(String group : groups)
+ {
+ List<String> actors = getUserManagement().getActorsForGroup(group);
+ users.addAll(actors);
+ }
+
+ List<String> availableActors = new ArrayList<String>();
+ availableActors.addAll(users);
+ availableActors.addAll(groups);
+ return createJsonResponse(availableActors);
+ }
+
private Response createJsonResponse(Object wrapper)
{
Gson gson = GsonFactory.createInstance();
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3FormParser.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3FormParser.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3FormParser.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -36,7 +36,7 @@
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
-class JBPM3FormParser
+public class JBPM3FormParser
{
private static final Log log = LogFactory.getLog(JBPM3FormParser.class);
Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskManagement.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskManagement.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskManagement.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -52,12 +52,7 @@
taskRefs.add( Transform.taskInstance(t0));
}
- List<TaskReference> copy = new ArrayList<TaskReference>();
- for(TaskReference ref : taskRefs)
- {
- copy.add(ref);
- }
- return copy;
+ return taskRefs;
}
public TaskReference getTaskById(long taskId)
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -152,9 +152,9 @@
return getBaseUrl() + "/rs/jbpm3/tokens/"+tok.getId()+"/transition?signal="+encodedSignal;
}
- public String getGroupsForActorUrl(String actorId)
+ public String getAvailableActorsUrl(String actorId)
{
- return getBaseUrl() + "/rs/identity/user/"+actorId+"/groups";
+ return getBaseUrl() + "/rs/identity/user/"+actorId+"/actors";
}
}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -22,6 +22,7 @@
package org.jboss.bpm.console.client.process;
import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.core.client.GWT;
import com.gwtext.client.core.Connection;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.*;
@@ -111,12 +112,18 @@
{
public boolean doBeforeAction(Form form)
- {
- if(form.findField("file").getValueAsString().equals(""))
+ {
+ if(!GWT.isScript())
{
+ MessageBox.alert("Uploads only work on web mode!");
+ return false;
+ }
+ else if(form.findField("file").getValueAsString().equals(""))
+ {
MessageBox.alert("Please provide a process definition file");
return false;
}
+
return true;
}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -100,7 +100,8 @@
// ----------------------------------------
Panel detailsForm = assembleDetailsForm();
- tokenEditorPanel = new Panel("Tokens");
+ tokenEditorPanel = new Panel("Tokens");
+ tokenEditorPanel.setIconCls("bpm-tools-icon");
tabPanel.add( detailsForm );
tabPanel.add(tokenEditorPanel);
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentCallback.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentCallback.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentCallback.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -24,7 +24,9 @@
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
-public interface AssignmentCallback
+interface AssignmentCallback
{
void onAssignmentDone();
+
+ void onTaskEnd();
}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentFormPanel.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentFormPanel.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/AssignmentFormPanel.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -43,6 +43,8 @@
import java.util.List;
/**
+ * Form panel for task assignments.
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
class AssignmentFormPanel extends Panel implements ModelChangeListener
@@ -52,7 +54,8 @@
private MainView mainView;
private AssignmentCallback callback;
- private List<String> selectedGroups;
+ private List<String> availableActors;
+ private TaskReference selectedInstance;
public AssignmentFormPanel(MainView mainView, AssignmentCallback callback)
{
@@ -60,9 +63,10 @@
this.mainView = mainView;
this.callback = callback;
- setTitle("Assigment");
+ setTitle("Reassign Task");
setBorder(false);
setFrame(false);
+ setIconCls("bpm-tools-icon");
// ---------------
@@ -76,7 +80,6 @@
public void onClick(Button button, EventObject eventObject)
{
-
Form form = formPanel.getForm();
RefreshableComboBox cb = (RefreshableComboBox)form.findField("actorId");
String rawValue = cb.getRawValue();
@@ -87,22 +90,21 @@
return;
}
- // TODO: implement
- Log.debug("Assign to " + rawValue);
+ if(null==selectedInstance)
+ throw new IllegalArgumentException("Task selection cannot be null");
+ reassignTask(selectedInstance.getId(), rawValue);
}
}
);
formPanel.add(assignBtn);
this.add(formPanel);
-
+
// ---------------
this.addListener(
new PanelListenerAdapter()
{
-
-
public void onAfterLayout(Container container)
{
refreshComboBox();
@@ -116,13 +118,23 @@
public void onModelChange(ModelListenerRegistry parent, Object changeEvent)
{
TaskListEditor editor = (TaskListEditor)parent.getUnderlying();
- TaskReference taskRef = (TaskReference)changeEvent;
+ selectedInstance= (TaskReference)changeEvent;
+ availableActors = null;
- Log.debug("onModelChange " + taskRef);
- selectedGroups = null;
+ if(selectedInstance.getPooledActors().isEmpty())
+ {
+ // no pooled actors -> can be assigned to any user
+ // of current users groups
+ loadActors();
+ }
+ else
+ {
+ // has pooled actors -> can be asigned to pooled actors only
+ availableActors = selectedInstance.getPooledActors();
+ }
- String resourceUrl = mainView.getUrlBuilder().getGroupsForActorUrl(mainView.getUsername());
- updateAssigmentForm(resourceUrl);
+ // finally refresh the combobox
+ refreshComboBox();
}
@@ -131,8 +143,9 @@
// ignore
}
- private void updateAssigmentForm(String url)
+ private void loadActors()
{
+ String url = mainView.getUrlBuilder().getAvailableActorsUrl(mainView.getUsername());
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url );
try
@@ -147,12 +160,7 @@
JSONValue value = JSONParser.parse(response.getText());
- selectedGroups = DTOParser.parseStringArray(value);
-
- if(isRendered())
- refreshComboBox();
-
- Log.debug("Update from " + selectedGroups);
+ availableActors = DTOParser.parseStringArray(value);
}
public void onError(Request request, Throwable t)
@@ -170,11 +178,47 @@
private void refreshComboBox()
{
- if(null==selectedGroups)
- throw new IllegalArgumentException("Group list cannot be null");
+ if(null== availableActors)
+ throw new IllegalArgumentException("available actors cannot be null");
- Form form = formPanel.getForm();
- RefreshableComboBox cb = (RefreshableComboBox)form.findField("actorId");
- cb.display(selectedGroups);
+ if(isRendered())
+ {
+ Form form = formPanel.getForm();
+ RefreshableComboBox cb = (RefreshableComboBox)form.findField("actorId");
+ cb.display(availableActors);
+ }
}
+
+ private void reassignTask(long taskId, String actor)
+ {
+ RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
+ mainView.getUrlBuilder().getTaskAssignmentURL(taskId, actor)
+ );
+
+ try
+ {
+ rb.sendRequest("",
+ new RequestCallback() {
+
+ public void onResponseReceived(Request request, Response response)
+ {
+ if(200 != response.getStatusCode())
+ Log.error("Failed to reassign task: " + response.getStatusText());
+
+ selectedInstance = null;
+ callback.onAssignmentDone();
+ }
+
+ public void onError(Request request, Throwable t)
+ {
+ // Unknown error
+ Log.error("Unknown error", t);
+ }
+ });
+ }
+ catch (RequestException e1)
+ {
+ Log.error("Request failed" ,e1);
+ }
+ }
}
Deleted: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/DetailsFormPanel.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/DetailsFormPanel.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/DetailsFormPanel.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -1,274 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.console.client.task;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.google.gwt.http.client.*;
-import com.gwtext.client.core.EventObject;
-import com.gwtext.client.data.Record;
-import com.gwtext.client.widgets.Button;
-import com.gwtext.client.widgets.MessageBox;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.widgets.form.ComboBox;
-import com.gwtext.client.widgets.form.Form;
-import com.gwtext.client.widgets.form.FormPanel;
-import com.gwtext.client.widgets.form.TextField;
-import org.jboss.bpm.console.client.MainView;
-import org.jboss.bpm.console.client.UIConstants;
-import org.jboss.bpm.console.client.model.TaskReference;
-import org.jboss.bpm.console.client.widgets.FormWidgets;
-import org.jboss.bpm.console.client.widgets.ModelChangeListener;
-import org.jboss.bpm.console.client.widgets.ModelListenerRegistry;
-import org.jboss.bpm.console.client.widgets.RefreshableComboBox;
-
-/**
- * @author Heiko.Braun <heiko.braun at jboss.com>
- */
-public class DetailsFormPanel extends Panel implements ModelChangeListener
-{
-
- private FormPanel formPanel;
- private TaskReference selectedInstance;
- private MainView mainView;
-
- private Button startBtn;
- private Button stopBtn;
- private Button endBtn;
-
- private AssignmentCallback callback;
-
- public DetailsFormPanel(final MainView mainView, AssignmentCallback callback)
- {
- super();
- this.mainView = mainView;
- this.callback = callback;
-
- setTitle("Task Details");
- setBorder(false);
- setFrame(false);
-
- // ---------------
-
- formPanel = FormWidgets.createBaseFormPanel();
-
- //the field names must match the data field values from the Store
- TextField idField = new TextField("Id", "id", 230);
- idField.setReadOnly(true);
- formPanel.add(idField);
-
- TextField nameField = new TextField("Name", "name", 230);
- nameField.setReadOnly(true);
- formPanel.add(nameField);
-
- TextField actorField = new TextField("Actor", "actor", 230);
- actorField.setReadOnly(true);
- formPanel.add(actorField);
-
- TextField stateField = new TextField("State", "currentState", 230);
- stateField.setReadOnly(true);
- formPanel.add(stateField);
-
- // ----------
- RefreshableComboBox cb = new RefreshableComboBox("signal", "End signal");
- formPanel.add(cb);
-
- startBtn = new Button("Assign current user",
- new ButtonListenerAdapter()
- {
-
- public void onClick(Button button, EventObject eventObject)
- {
- if(null==selectedInstance)
- {
- MessageBox.alert("Please select a task.");
- return;
- }
- selectedInstance.setActor(mainView.getUsername());
- reassignTask();
- }
- }
- );
-
- stopBtn = new Button("Release",
- new ButtonListenerAdapter()
- {
-
- public void onClick(Button button, EventObject eventObject)
- {
- if(null==selectedInstance)
- {
- MessageBox.alert("Please select a task.");
- return;
- }
- selectedInstance.setActor(null);
- reassignTask();
- }
- }
- );
-
- endBtn = new Button("End",
- new ButtonListenerAdapter()
- {
-
- public void onClick(Button button, EventObject eventObject)
- {
- if(null==selectedInstance)
- {
- MessageBox.alert("Please select a task.");
- return;
- }
-
- selectedInstance.close();
-
- ComboBox cb = (ComboBox) formPanel.getForm().findField("signal");
- String signalName = cb.getRawValue();
- if(signalName.equals(""))
- MessageBox.alert("Please select a signal to end this task");
- else
- endTask(signalName);
- }
- }
- );
-
- formPanel.addButton(startBtn);
- formPanel.addButton(stopBtn);
- formPanel.addButton(endBtn);
-
- this.add(formPanel);
- }
-
- private void reassignTask()
- {
- RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
- mainView.getUrlBuilder().getTaskAssignmentURL(
- selectedInstance.getId(), selectedInstance.getActor()
- )
- );
-
- try
- {
- rb.sendRequest("",
- new RequestCallback() {
-
- public void onResponseReceived(Request request, Response response)
- {
- if(200 != response.getStatusCode())
- Log.error("Failed to reassign task: " + response.getStatusText());
-
- selectedInstance = null;
- callback.onAssignmentDone();
- }
-
- public void onError(Request request, Throwable t)
- {
- // Unknown error
- Log.error("Unknown error", t);
- }
- });
- }
- catch (RequestException e1)
- {
- Log.error("Request failed" ,e1);
- }
- }
-
- private void endTask(String signalName)
- {
- String taskCloseURL = signalName.equals(UIConstants.DEFAULT_TRANSITION) ?
- mainView.getUrlBuilder().getTaskEndURL(selectedInstance.getId()) :
- mainView.getUrlBuilder().getTaskEndURL(selectedInstance.getId(), signalName);
-
- RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
- taskCloseURL
- );
-
- Log.debug(taskCloseURL);
-
- try
- {
- rb.sendRequest("",
- new RequestCallback() {
-
- public void onResponseReceived(Request request, Response response)
- {
- if(200 != response.getStatusCode())
- Log.error("Failed to end task: " + response.getStatusText());
-
- selectedInstance = null;
- }
-
- public void onError(Request request, Throwable t)
- {
- // Unknown error
- Log.error("Unknown error", t);
- }
- });
- }
- catch (RequestException e1)
- {
- Log.error("Failed to close task", e1);
- }
- }
-
-
- public void onRecordChange(ModelListenerRegistry parent, Record changeEvent)
- {
- TaskListEditor editor = (TaskListEditor)parent.getUnderlying();
- selectedInstance = TaskList.transform(changeEvent);
-
- Form form = formPanel.getForm();
- RefreshableComboBox cb = (RefreshableComboBox)form.findField("signal");
-
- if(!selectedInstance.hasPooledActors())
- {
- // no group assignment available
- startBtn.disable();
- stopBtn.disable();
- }
- else if(TaskReference.STATE.IN_PROGRESS == selectedInstance.getCurrentState())
- {
- startBtn.disable();
- stopBtn.enable();
- cb.enable();
- endBtn.enable();
- }
- else
- {
- startBtn.enable();
- stopBtn.disable();
- cb.disable();
- endBtn.disable();
- }
-
- cb.display( selectedInstance.getTransitionNames() );
-
- formPanel.getForm().loadRecord(changeEvent);
- formPanel.doLayout();
- }
-
-
- public void onModelChange(ModelListenerRegistry parent, Object changeEvent)
- {
- // ignore
- }
-}
Copied: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskDetailsFormPanel.java (from rev 2996, projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/DetailsFormPanel.java)
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskDetailsFormPanel.java (rev 0)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskDetailsFormPanel.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -0,0 +1,271 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.console.client.task;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.http.client.*;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.data.Record;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.MessageBox;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.form.ComboBox;
+import com.gwtext.client.widgets.form.Form;
+import com.gwtext.client.widgets.form.FormPanel;
+import com.gwtext.client.widgets.form.TextField;
+import org.jboss.bpm.console.client.MainView;
+import org.jboss.bpm.console.client.UIConstants;
+import org.jboss.bpm.console.client.model.TaskReference;
+import org.jboss.bpm.console.client.widgets.FormWidgets;
+import org.jboss.bpm.console.client.widgets.ModelChangeListener;
+import org.jboss.bpm.console.client.widgets.ModelListenerRegistry;
+import org.jboss.bpm.console.client.widgets.RefreshableComboBox;
+
+/**
+ * @author Heiko.Braun <heiko.braun at jboss.com>
+ */
+class TaskDetailsFormPanel extends Panel implements ModelChangeListener
+{
+
+ private FormPanel formPanel;
+ private TaskReference selectedInstance;
+ private MainView mainView;
+
+ private Button startBtn;
+ private Button stopBtn;
+ private Button endBtn;
+
+ private AssignmentCallback callback;
+
+ public TaskDetailsFormPanel(final MainView mainView, AssignmentCallback callback)
+ {
+ super();
+ this.mainView = mainView;
+ this.callback = callback;
+
+ setTitle("Task Details");
+ setBorder(false);
+ setFrame(false);
+
+ // ---------------
+
+ formPanel = FormWidgets.createBaseFormPanel();
+
+ //the field names must match the data field values from the Store
+ TextField idField = new TextField("Id", "id", 230);
+ idField.setReadOnly(true);
+ formPanel.add(idField);
+
+ TextField nameField = new TextField("Name", "name", 230);
+ nameField.setReadOnly(true);
+ formPanel.add(nameField);
+
+ TextField actorField = new TextField("Actor", "actor", 230);
+ actorField.setReadOnly(true);
+ formPanel.add(actorField);
+
+ TextField stateField = new TextField("State", "currentState", 230);
+ stateField.setReadOnly(true);
+ formPanel.add(stateField);
+
+ // ----------
+ RefreshableComboBox cb = new RefreshableComboBox("signal", "End signal");
+ formPanel.add(cb);
+
+ startBtn = new Button("Assign current user",
+ new ButtonListenerAdapter()
+ {
+
+ public void onClick(Button button, EventObject eventObject)
+ {
+ if(null==selectedInstance)
+ {
+ MessageBox.alert("Please select a task.");
+ return;
+ }
+ selectedInstance.setActor(mainView.getUsername());
+ reassignTask();
+ }
+ }
+ );
+
+ stopBtn = new Button("Release",
+ new ButtonListenerAdapter()
+ {
+
+ public void onClick(Button button, EventObject eventObject)
+ {
+ if(null==selectedInstance)
+ {
+ MessageBox.alert("Please select a task.");
+ return;
+ }
+ selectedInstance.setActor(null);
+ reassignTask();
+ }
+ }
+ );
+
+ endBtn = new Button("End",
+ new ButtonListenerAdapter()
+ {
+
+ public void onClick(Button button, EventObject eventObject)
+ {
+ if(null==selectedInstance)
+ {
+ MessageBox.alert("Please select a task.");
+ return;
+ }
+
+ selectedInstance.close();
+
+ ComboBox cb = (ComboBox) formPanel.getForm().findField("signal");
+ String signalName = cb.getRawValue();
+ if(signalName.equals(""))
+ MessageBox.alert("Please select a signal to end this task");
+ else
+ endTask(signalName);
+ }
+ }
+ );
+
+ formPanel.addButton(startBtn);
+ formPanel.addButton(stopBtn);
+ formPanel.addButton(endBtn);
+
+ this.add(formPanel);
+ }
+
+ private void reassignTask()
+ {
+ RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
+ mainView.getUrlBuilder().getTaskAssignmentURL(
+ selectedInstance.getId(), selectedInstance.getActor()
+ )
+ );
+
+ try
+ {
+ rb.sendRequest("",
+ new RequestCallback() {
+
+ public void onResponseReceived(Request request, Response response)
+ {
+ if(200 != response.getStatusCode())
+ Log.error("Failed to reassign task: " + response.getStatusText());
+
+ selectedInstance = null;
+ callback.onAssignmentDone();
+ }
+
+ public void onError(Request request, Throwable t)
+ {
+ // Unknown error
+ Log.error("Unknown error", t);
+ }
+ });
+ }
+ catch (RequestException e1)
+ {
+ Log.error("Request failed" ,e1);
+ }
+ }
+
+ private void endTask(String signalName)
+ {
+ String taskCloseURL = signalName.equals(UIConstants.DEFAULT_TRANSITION) ?
+ mainView.getUrlBuilder().getTaskEndURL(selectedInstance.getId()) :
+ mainView.getUrlBuilder().getTaskEndURL(selectedInstance.getId(), signalName);
+
+ RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,taskCloseURL);
+
+ try
+ {
+ rb.sendRequest("",
+ new RequestCallback() {
+
+ public void onResponseReceived(Request request, Response response)
+ {
+ if(200 != response.getStatusCode())
+ Log.error("Failed to end task: " + response.getStatusText());
+
+ selectedInstance = null;
+ callback.onTaskEnd();
+ }
+
+ public void onError(Request request, Throwable t)
+ {
+ // Unknown error
+ Log.error("Unknown error", t);
+ }
+ });
+ }
+ catch (RequestException e1)
+ {
+ Log.error("Failed to close task", e1);
+ }
+ }
+
+
+ public void onRecordChange(ModelListenerRegistry parent, Record changeEvent)
+ {
+ TaskListEditor editor = (TaskListEditor)parent.getUnderlying();
+ selectedInstance = TaskList.transform(changeEvent);
+
+ Form form = formPanel.getForm();
+ RefreshableComboBox cb = (RefreshableComboBox)form.findField("signal");
+
+ if(selectedInstance.getPooledActors().isEmpty())
+ {
+ // no group assignment available
+ startBtn.disable();
+ stopBtn.disable();
+ }
+ else if(TaskReference.STATE.ASSIGNED == selectedInstance.getCurrentState())
+ {
+ startBtn.disable();
+ stopBtn.enable();
+ cb.enable();
+ endBtn.enable();
+ }
+ else
+ {
+ startBtn.enable();
+ stopBtn.disable();
+ cb.disable();
+ endBtn.disable();
+ }
+
+ cb.display( selectedInstance.getTransitionNames() );
+
+ formPanel.getForm().loadRecord(changeEvent);
+ formPanel.doLayout();
+ }
+
+
+ public void onModelChange(ModelListenerRegistry parent, Object changeEvent)
+ {
+ // ignore
+ }
+}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -46,9 +46,7 @@
import java.util.HashMap;
import java.util.Map;
-/**
- * TODO: Buffer either generated form panels or at least the FormDef
- *
+/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class TaskList extends Panel
@@ -88,14 +86,15 @@
// PanelListener will lazy load store data.
// Store.onLoad() callback will populate the grid
// and add it to the container panel.
- this.addListener( new PanelListenerAdapter()
- {
- public boolean doBeforeRender(Component component)
- {
- reloadStore();
- return true;
- }
- }
+ this.addListener(
+ new PanelListenerAdapter()
+ {
+ public boolean doBeforeRender(Component component)
+ {
+ reloadStore();
+ return true;
+ }
+ }
);
}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -135,7 +135,7 @@
// ----------------------------------
- Panel detailsPanel = new DetailsFormPanel(mainView, this);
+ Panel detailsPanel = new TaskDetailsFormPanel(mainView, this);
Panel assignmentPanel = new AssignmentFormPanel(mainView, this);
modelListeners.addListener((ModelChangeListener)detailsPanel);
@@ -169,4 +169,9 @@
{
taskList.reloadStore();
}
+
+ public void onTaskEnd()
+ {
+ taskList.reloadStore();
+ }
}
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/FormWidgets.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/FormWidgets.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/FormWidgets.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -26,6 +26,8 @@
import org.jboss.bpm.console.client.UIConstants;
/**
+ * Helps construction common form elements.
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class FormWidgets
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelChangeListener.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelChangeListener.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelChangeListener.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -24,6 +24,7 @@
import com.gwtext.client.data.Record;
/**
+ * Get's notified when model change events are fire on {@link org.jboss.bpm.console.client.widgets.ModelListenerRegistry}
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface ModelChangeListener
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelListenerRegistry.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelListenerRegistry.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/ModelListenerRegistry.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -27,7 +27,7 @@
import java.util.ArrayList;
/**
- * Utility to propaget model change events across widgets
+ * Utility to propagate model change events to {@link org.jboss.bpm.console.client.widgets.ModelChangeListener}
*
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
Modified: projects/gwt-console/trunk/war/src/main/resources/org/jboss/bpm/console/public/console.css
===================================================================
--- projects/gwt-console/trunk/war/src/main/resources/org/jboss/bpm/console/public/console.css 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/main/resources/org/jboss/bpm/console/public/console.css 2008-11-20 13:13:45 UTC (rev 3011)
@@ -87,6 +87,10 @@
}
.bpm-settings-icon {
+
+}
+
+.bpm-tools-icon {
background-image: url( images/icons/36.png)
}
Modified: projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestApplication.java
===================================================================
--- projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestApplication.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestApplication.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -90,7 +90,7 @@
delayTestFinish(500);
}
- public void testProcessDefList()
+ /*public void testProcessDefList()
{
final MainView view = application.getConsoleView();
assertNotNull("View not initialized", view);
@@ -144,5 +144,5 @@
verification.schedule(1500);
delayTestFinish(2000);
- }
+ }*/
}
Modified: projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestDTOParser.java
===================================================================
--- projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestDTOParser.java 2008-11-20 08:30:16 UTC (rev 3010)
+++ projects/gwt-console/trunk/war/src/test/java/org/jboss/bpm/console/client/GwtTestDTOParser.java 2008-11-20 13:13:45 UTC (rev 3011)
@@ -50,7 +50,7 @@
List<TaskReference> result = DTOParser.parseTaskReferenceList(json);
assertTrue("Failed to parse TaskReferenceList", result.size()==1);
assertTrue("Failed to parse transitionNames", result.get(0).getTransitionNames().size()==2);
- assertTrue("Failed to parse pooledActors", result.get(0).hasPooledActors());
+ assertFalse("Failed to parse pooledActors", result.get(0).getPooledActors().isEmpty());
}
More information about the jbpm-commits
mailing list