[jbpm-commits] JBoss JBPM SVN: r4595 - in projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client: process and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Apr 21 11:02:50 EDT 2009


Author: heiko.braun at jboss.com
Date: 2009-04-21 11:02:50 -0400 (Tue, 21 Apr 2009)
New Revision: 4595

Modified:
   projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/common/AbstractDataRequestAction.java
   projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/InstanceListView.java
   projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadDefinitionsAction.java
   projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadInstancesAction.java
   projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/ProcessEditor.java
Log:
lazy init InstanceListView

Modified: projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/common/AbstractDataRequestAction.java
===================================================================
--- projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/common/AbstractDataRequestAction.java	2009-04-21 14:41:11 UTC (rev 4594)
+++ projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/common/AbstractDataRequestAction.java	2009-04-21 15:02:50 UTC (rev 4595)
@@ -42,10 +42,10 @@
     this.appContext = appContetext;
   }
 
-  abstract String getId();
-  abstract String getUrl(Object event);
-  abstract RequestBuilder.Method getRequestMethod();
-  abstract void handleSuccessfulResponse(final Controller controller, final Object event, Response response);
+  public abstract String getId();
+  public abstract String getUrl(Object event);
+  public abstract RequestBuilder.Method getRequestMethod();
+  public abstract void handleSuccessfulResponse(final Controller controller, final Object event, Response response);
 
   public void execute(final Controller controller, final Object object)
   {    

Modified: projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/InstanceListView.java
===================================================================
--- projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/InstanceListView.java	2009-04-21 14:41:11 UTC (rev 4594)
+++ projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/InstanceListView.java	2009-04-21 15:02:50 UTC (rev 4595)
@@ -36,13 +36,15 @@
 import org.gwt.mosaic.ui.client.list.DefaultListModel;
 import org.jboss.bpm.console.client.model.ProcessDefinitionRef;
 import org.jboss.bpm.console.client.model.ProcessInstanceRef;
+import org.jboss.bpm.console.client.v2.LazyPanel;
 
 import java.util.List;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
  */
-class InstanceListView extends LayoutPanel implements ViewInterface
+class InstanceListView extends LayoutPanel
+    implements ViewInterface, LazyPanel
 {
   public final static String ID = InstanceListView.class.getName();
 
@@ -54,116 +56,137 @@
 
   private ProcessDefinitionRef currentDefinition;
 
+  private boolean isInitialized;
+
+  private List<ProcessInstanceRef> cachedInstances = null;
+
   public InstanceListView()
   {
     super();
     setTitle("Process Instances");
 
-    instanceList = new LayoutPanel( new BoxLayout(BoxLayout.Orientation.VERTICAL));
-    instanceList.setPadding(0);
-    instanceList.setWidgetSpacing(0);
+  }
 
-    listBox =
-        new ListBox<ProcessInstanceRef>(
-            new String[] {
-                "Instance ID", "State", "Start Date"}
-        );
+  public boolean isInitialized()
+  {
+    return isInitialized;
+  }
 
+  public void initialize()
+  {
+    if(!isInitialized)
+    {
+      instanceList = new LayoutPanel( new BoxLayout(BoxLayout.Orientation.VERTICAL));
+      instanceList.setPadding(0);
+      instanceList.setWidgetSpacing(0);
 
-    listBox.setCellRenderer(new ListBox.CellRenderer<ProcessInstanceRef>() {
-      public void renderCell(ListBox<ProcessInstanceRef> listBox, int row, int column,
-                             ProcessInstanceRef item) {
-        switch (column) {
-          case 0:
-            listBox.setText(row, column, item.getId());
-            break;
-          case 1:
-            listBox.setText(row, column, item.getState().toString());
-            break;
-          case 2:
-            listBox.setText(row, column, item.getStartDate().toString());
-            break;
-          default:
-            throw new RuntimeException("Unexpected column size");
-        }
-      }
-    });
+      listBox =
+          new ListBox<ProcessInstanceRef>(
+              new String[] {
+                  "Instance ID", "State", "Start Date"}
+          );
 
-    // toolbar
-
-    final LayoutPanel toolBox = new LayoutPanel();
-    toolBox.setPadding(0);
-    toolBox.setWidgetSpacing(5);
-    //toolBox.setLayout(new BoxLayout(BoxLayout.Orientation.VERTICAL));
-
-    final ToolBar toolBar = new ToolBar();
-    toolBar.add(
-        new ToolButton("Refresh", new ClickListener() {
-          public void onClick(Widget sender) {
-            controller.handleEvent(
-                new Event(
-                    LoadInstancesAction.ID,
-                    getCurrentDefinition()
-                )
-            );
+      listBox.setCellRenderer(new ListBox.CellRenderer<ProcessInstanceRef>() {
+        public void renderCell(ListBox<ProcessInstanceRef> listBox, int row, int column,
+                               ProcessInstanceRef item) {
+          switch (column) {
+            case 0:
+              listBox.setText(row, column, item.getId());
+              break;
+            case 1:
+              listBox.setText(row, column, item.getState().toString());
+              break;
+            case 2:
+              listBox.setText(row, column, item.getStartDate().toString());
+              break;
+            default:
+              throw new RuntimeException("Unexpected column size");
           }
         }
-        )
-    );
+      });
 
-    toolBar.addSeparator();
+      // toolbar
+      final LayoutPanel toolBox = new LayoutPanel();
+      toolBox.setPadding(0);
+      toolBox.setWidgetSpacing(5);      
 
-    toolBar.add(
-        new ToolButton("Start new instance", new ClickListener()
-        {
-          public void onClick(Widget sender)
-          {
-            controller.handleEvent(
-                new Event(
-                    StartNewInstanceAction.ID,
-                    getCurrentDefinition()
-                )
-            );
+      final ToolBar toolBar = new ToolBar();
+      toolBar.add(
+          new ToolButton("Refresh", new ClickListener() {
+            public void onClick(Widget sender) {
+              controller.handleEvent(
+                  new Event(
+                      LoadInstancesAction.ID,
+                      getCurrentDefinition()
+                  )
+              );
+            }
           }
-        }
-        )
-    );
+          )
+      );
 
-    toolBar.addSeparator();
+      toolBar.addSeparator();
 
-    toolBar.add(
-        new ToolButton("Cancel execution", new ClickListener()
-        {
-          public void onClick(Widget sender)
+      toolBar.add(
+          new ToolButton("Start new instance", new ClickListener()
           {
-            ProcessInstanceRef selection = getSelection();
-            if(selection!=null)
+            public void onClick(Widget sender)
             {
-              selection.setState(ProcessInstanceRef.STATE.ENDED);
-              
               controller.handleEvent(
                   new Event(
-                      StateChangeAction.ID,
-                      selection
+                      StartNewInstanceAction.ID,
+                      getCurrentDefinition()
                   )
               );
             }
-            else
+          }
+          )
+      );
+
+      toolBar.addSeparator();
+
+      toolBar.add(
+          new ToolButton("Cancel execution", new ClickListener()
+          {
+            public void onClick(Widget sender)
             {
-              MessageBox.alert("Missing selection", "Please select an instance"); 
+              ProcessInstanceRef selection = getSelection();
+              if(selection!=null)
+              {
+                selection.setState(ProcessInstanceRef.STATE.ENDED);
+
+                controller.handleEvent(
+                    new Event(
+                        StateChangeAction.ID,
+                        selection
+                    )
+                );
+              }
+              else
+              {
+                MessageBox.alert("Missing selection", "Please select an instance");
+              }
             }
           }
-        }
-        )
-    );
+          )
+      );
 
-    toolBox.add(toolBar, new BoxLayoutData(BoxLayoutData.FillStyle.HORIZONTAL));
+      toolBox.add(toolBar, new BoxLayoutData(BoxLayoutData.FillStyle.HORIZONTAL));
 
-    instanceList.add(toolBox, new BoxLayoutData(BoxLayoutData.FillStyle.HORIZONTAL));
-    instanceList.add(listBox, new BoxLayoutData(BoxLayoutData.FillStyle.BOTH));
+      instanceList.add(toolBox, new BoxLayoutData(BoxLayoutData.FillStyle.HORIZONTAL));
+      instanceList.add(listBox, new BoxLayoutData(BoxLayoutData.FillStyle.BOTH));
 
-    this.add(instanceList);
-    
+      // cached data?
+      if(this.cachedInstances!=null)
+        bindData(this.cachedInstances);
+
+      this.add(instanceList);
+
+      
+
+      isInitialized = true;
+
+    }
   }
 
   public ProcessInstanceRef getSelection()
@@ -188,7 +211,16 @@
   public void update(final ProcessDefinitionRef def, List<ProcessInstanceRef> instances)
   {
     this.currentDefinition = def;
+    this.cachedInstances = instances;
 
+    if(isInitialized())
+    {
+      bindData(instances);
+    }   
+  }
+
+  private void bindData(List<ProcessInstanceRef> instances)
+  {
     final DefaultListModel<ProcessInstanceRef> model =
         (DefaultListModel<ProcessInstanceRef>) listBox.getModel();
     model.clear();

Modified: projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadDefinitionsAction.java
===================================================================
--- projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadDefinitionsAction.java	2009-04-21 14:41:11 UTC (rev 4594)
+++ projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadDefinitionsAction.java	2009-04-21 15:02:50 UTC (rev 4595)
@@ -47,23 +47,22 @@
     super(appContext);
   }
 
-
-  String getId()
+  public String getId()
   {
     return ID;
   }
 
-  String getUrl(Object event)
+  public String getUrl(Object event)
   {
     return appContext.getUrlBuilder().getProcessDefinitionsURL();
   }
 
-  RequestBuilder.Method getRequestMethod()
+  public RequestBuilder.Method getRequestMethod()
   {
     return RequestBuilder.GET;
   }
 
-  void handleSuccessfulResponse(final Controller controller, final Object event, Response response)
+  public void handleSuccessfulResponse(final Controller controller, final Object event, Response response)
   {
     if (200 == response.getStatusCode())
     {

Modified: projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadInstancesAction.java
===================================================================
--- projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadInstancesAction.java	2009-04-21 14:41:11 UTC (rev 4594)
+++ projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/LoadInstancesAction.java	2009-04-21 15:02:50 UTC (rev 4595)
@@ -49,23 +49,23 @@
     super(appContext);
   }
 
-  String getId()
+  public String getId()
   {
     return ID;
   }
 
-  String getUrl(Object event)
+  public String getUrl(Object event)
   {
     final ProcessDefinitionRef def = (ProcessDefinitionRef)event;
     return appContext.getUrlBuilder().getProcessInstancesURL(def.getId());
   }
 
-  RequestBuilder.Method getRequestMethod()
+  public RequestBuilder.Method getRequestMethod()
   {
     return RequestBuilder.GET;
   }
 
-  protected void handleSuccessfulResponse(final Controller controller, final Object event, Response response)
+  public void handleSuccessfulResponse(final Controller controller, final Object event, Response response)
   {
     final ProcessDefinitionRef def = (ProcessDefinitionRef)event;
     JSONValue json = JSONParser.parse(response.getText());

Modified: projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/ProcessEditor.java
===================================================================
--- projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/ProcessEditor.java	2009-04-21 14:41:11 UTC (rev 4594)
+++ projects/gwt-console/branches/hbraun/war/src/main/java/org/jboss/bpm/console/client/process/ProcessEditor.java	2009-04-21 15:02:50 UTC (rev 4595)
@@ -35,6 +35,7 @@
 import org.jboss.bpm.console.client.ApplicationContext;
 import org.jboss.bpm.console.client.Editor;
 import org.jboss.bpm.console.client.MenuSection;
+import org.jboss.bpm.console.client.v2.LazyPanel;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -57,6 +58,26 @@
       // create inner tab layout
       tabPanel = new DecoratedTabLayoutPanel();
       tabPanel.setPadding(5);
+      tabPanel.addTabListener(
+          new TabListener()
+          {
+            public boolean onBeforeTabSelected(SourcesTabEvents sourcesTabEvents, int i)
+            {
+              return true;
+            }
+
+            public void onTabSelected(SourcesTabEvents sourcesTabEvents, int i)
+            {
+              LazyPanel lazyPanel = (LazyPanel) tabPanel.getWidget(i);
+              if(!lazyPanel.isInitialized())
+              {
+                lazyPanel.initialize();
+                refreshView(); // TODO: hack around rendering problems
+              }
+            }
+          }
+      );
+
       this.add(tabPanel, new BorderLayoutData(Region.CENTER));
 
       // create and register views




More information about the jbpm-commits mailing list