Refactor Test Planner GWT code. Factoring out common functionality in
presenter, display, and tab classes for reuse with other Test Planner
tabs.

Signed-off-by: James Ren <[email protected]>

--- /dev/null   2009-12-17 12:29:38.000000000 -0800
+++ autotest/frontend/client/src/autotest/planner/TestPlannerDisplay.java       
2010-04-30 13:21:36.000000000 -0700
@@ -0,0 +1,7 @@
+package autotest.planner;
+
+import com.google.gwt.user.client.ui.HTMLPanel;
+
+public interface TestPlannerDisplay {
+    public void initialize(HTMLPanel htmlPanel);
+}
--- /dev/null   2009-12-17 12:29:38.000000000 -0800
+++ autotest/frontend/client/src/autotest/planner/TestPlannerPresenter.java     
2010-04-30 13:21:36.000000000 -0700
@@ -0,0 +1,32 @@
+package autotest.planner;
+
+import autotest.common.ui.HasTabVisible;
+
+public abstract class TestPlannerPresenter implements 
TestPlanSelector.Listener {
+    private TestPlanSelector selector;
+    private HasTabVisible tab;
+
+    public void initialize(TestPlanSelector selector, HasTabVisible tab) {
+        this.selector = selector;
+        this.tab = tab;
+        selector.addListener(this);
+    }
+
+    public void refresh() {
+        String planId = selector.getSelectedPlan();
+        if (planId == null) {
+            return;
+        }
+
+        refresh(planId);
+    }
+
+    @Override
+    public void onPlanSelected() {
+        if (tab.isTabVisible()) {
+            refresh();
+        }
+    }
+
+    public abstract void refresh(String planId);
+}
--- /dev/null   2009-12-17 12:29:38.000000000 -0800
+++ autotest/frontend/client/src/autotest/planner/TestPlannerTab.java   
2010-04-30 13:21:36.000000000 -0700
@@ -0,0 +1,32 @@
+package autotest.planner;
+
+import autotest.common.ui.TabView;
+
+import com.google.gwt.user.client.ui.HTMLPanel;
+
+public abstract class TestPlannerTab extends TabView {
+
+    private TestPlanSelector selector;
+
+    public TestPlannerTab(TestPlanSelector selector) {
+        this.selector = selector;
+    }
+
+    @Override
+    public void initialize() {
+        super.initialize();
+        getPresenter().initialize(selector, this);
+        getDisplay().initialize((HTMLPanel) getWidget());
+        bindDisplay();
+    }
+
+    @Override
+    public void refresh() {
+        super.refresh();
+        getPresenter().refresh();
+    }
+
+    protected abstract TestPlannerPresenter getPresenter();
+    protected abstract TestPlannerDisplay getDisplay();
+    protected abstract void bindDisplay();
+}
--- autotest/frontend/client/src/autotest/planner/triage/TriageViewDisplay.java 
2010-04-30 13:21:36.000000000 -0700
+++ autotest/frontend/client/src/autotest/planner/triage/TriageViewDisplay.java 
2010-04-30 11:36:56.000000000 -0700
@@ -1,6 +1,7 @@
 package autotest.planner.triage;
 
 import autotest.common.ui.NotifyManager;
+import autotest.planner.TestPlannerDisplay;
 
 import com.google.gwt.event.dom.client.HasClickHandlers;
 import com.google.gwt.event.logical.shared.ResizeEvent;
@@ -12,44 +13,46 @@
 import com.google.gwt.user.client.ui.VerticalPanel;
 
 
-public class TriageViewDisplay implements TriageViewPresenter.Display, 
ResizeHandler {
-    
+public class TriageViewDisplay implements TestPlannerDisplay,
+        TriageViewPresenter.Display, ResizeHandler {
+
     private static final int HEIGHT_FUDGE = 300;
-    
+
     private VerticalPanel container = new VerticalPanel();
     private ScrollPanel scroll = new ScrollPanel(container);
     private Button triage = new Button("Triage");
-    
+
+    @Override
     public void initialize(HTMLPanel htmlPanel) {
         container.setSpacing(25);
         container.setWidth("90%");
-        
+
         scroll.setSize("100%", getHeightParam(Window.getClientHeight()));
         scroll.setVisible(false);
         triage.setVisible(false);
-        
+
         htmlPanel.add(scroll, "triage_failure_tables");
         htmlPanel.add(triage, "triage_button");
-        
+
         Window.addResizeHandler(this);
     }
-    
+
     @Override
     public void setLoading(boolean loading) {
         NotifyManager.getInstance().setLoading(loading);
         scroll.setVisible(!loading);
-        
+
         scroll.setVisible(true);
         triage.setVisible(true);
     }
-    
+
     @Override
     public FailureTable.Display generateFailureTable(String group, String[] 
columnNames) {
         FailureTableDisplay display = new FailureTableDisplay(group, 
columnNames);
         container.add(display);
         return display;
     }
-    
+
     @Override
     public TriagePopup.Display generateTriagePopupDisplay() {
         return new TriagePopupDisplay();
@@ -69,7 +72,7 @@
     public void onResize(ResizeEvent event) {
         scroll.setHeight(getHeightParam(event.getHeight()));
     }
-    
+
     private String getHeightParam(int height) {
         return (height - HEIGHT_FUDGE) + "px";
     }
--- 
autotest/frontend/client/src/autotest/planner/triage/TriageViewPresenter.java   
    2010-04-30 13:21:36.000000000 -0700
+++ 
autotest/frontend/client/src/autotest/planner/triage/TriageViewPresenter.java   
    2010-04-30 13:21:36.000000000 -0700
@@ -2,8 +2,7 @@
 
 import autotest.common.JsonRpcCallback;
 import autotest.common.JsonRpcProxy;
-import autotest.common.ui.HasTabVisible;
-import autotest.planner.TestPlanSelector;
+import autotest.planner.TestPlannerPresenter;
 
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -16,9 +15,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
-public class TriageViewPresenter implements ClickHandler, 
TestPlanSelector.Listener,
-                                            TriagePopup.Listener {
-    
+public class TriageViewPresenter extends TestPlannerPresenter
+        implements ClickHandler, TriagePopup.Listener {
+
     public interface Display {
         public void setLoading(boolean loading);
         public void clearAllFailureTables();
@@ -26,34 +25,22 @@
         public TriagePopup.Display generateTriagePopupDisplay();
         public HasClickHandlers getTriageButton();
     }
-    
-    private TestPlanSelector selector;
+
     private Display display;
-    private HasTabVisible tab;
     private List<FailureTable> failureTables = new ArrayList<FailureTable>();
-    
-    public TriageViewPresenter(TestPlanSelector selector, HasTabVisible tab) {
-        this.selector = selector;
-        this.tab = tab;
-        selector.addListener(this);
-    }
-    
+
     public void bindDisplay(Display display) {
         this.display = display;
         display.getTriageButton().addClickHandler(this);
     }
-    
-    public void refresh() {
-        String planId = selector.getSelectedPlan();
-        if (planId == null) {
-            return;
-        }
-        
+
+    @Override
+    public void refresh(String planId) {
         display.setLoading(true);
-        
+
         JSONObject params = new JSONObject();
         params.put("plan_id", new JSONString(planId));
-        
+
         JsonRpcProxy.getProxy().rpcCall("get_failures", params, new 
JsonRpcCallback() {
             @Override
             public void onSuccess(JSONValue result) {
@@ -61,7 +48,7 @@
                 display.setLoading(false);
                 generateFailureTables(result.isObject());
             }
-            
+
             @Override
             public void onError(JSONObject errorObject) {
                 super.onError(errorObject);
@@ -69,42 +56,35 @@
             }
         });
     }
-    
+
     private void generateFailureTables(JSONObject failures) {
         failureTables.clear();
-        
+
         for (String group : failures.keySet()) {
             FailureTable table = new FailureTable();
             FailureTable.Display tableDisplay =
                     display.generateFailureTable(group, 
FailureTable.COLUMN_NAMES);
             table.bindDisplay(tableDisplay);
-            
+
             JSONArray groupFailures = failures.get(group).isArray();
-            
+
             for (int i = 0; i < groupFailures.size(); i++) {
                 table.addFailure(groupFailures.get(i).isObject());
             }
-            
-            failureTables.add(table);
-        }
-    }
 
-    @Override
-    public void onPlanSelected() {
-        if (tab.isTabVisible()) {
-            refresh();
+            failureTables.add(table);
         }
     }
 
     @Override
     public void onClick(ClickEvent event) {
         assert event.getSource() == display.getTriageButton();
-        
+
         List<Integer> failureIds = new ArrayList<Integer>();
         for (FailureTable failure : failureTables) {
             failureIds.addAll(failure.getSelectedFailureIds());
         }
-        
+
         TriagePopup popup = new TriagePopup(this, failureIds);
         popup.bindDisplay(display.generateTriagePopupDisplay());
         popup.render();
--- autotest/frontend/client/src/autotest/planner/triage/TriageViewTab.java     
2010-04-30 13:21:36.000000000 -0700
+++ autotest/frontend/client/src/autotest/planner/triage/TriageViewTab.java     
2010-04-30 13:21:36.000000000 -0700
@@ -1,35 +1,37 @@
 package autotest.planner.triage;
 
-import autotest.common.ui.TabView;
 import autotest.planner.TestPlanSelector;
+import autotest.planner.TestPlannerDisplay;
+import autotest.planner.TestPlannerPresenter;
+import autotest.planner.TestPlannerTab;
 
-import com.google.gwt.user.client.ui.HTMLPanel;
 
+public class TriageViewTab extends TestPlannerTab {
 
-public class TriageViewTab extends TabView {
-    
-    private TriageViewPresenter presenter;
+    private TriageViewPresenter presenter = new TriageViewPresenter();
     private TriageViewDisplay display = new TriageViewDisplay();
-    
+
     public TriageViewTab(TestPlanSelector selector) {
-        presenter = new TriageViewPresenter(selector, this);
+        super(selector);
     }
-    
+
     @Override
     public String getElementId() {
         return "triage_view";
     }
-    
+
     @Override
-    public void initialize() {
-        super.initialize();
-        display.initialize((HTMLPanel) getWidget());
-        presenter.bindDisplay(display);
+    protected TestPlannerDisplay getDisplay() {
+        return display;
     }
-    
+
     @Override
-    public void refresh() {
-        super.refresh();
-        presenter.refresh();
+    protected TestPlannerPresenter getPresenter() {
+        return presenter;
+    }
+
+    @Override
+    protected void bindDisplay() {
+        presenter.bindDisplay(display);
     }
 }
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to