[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