Refactor selection in CellList to allow targeted overriding of selection behavior. This is the absolute smallest change possible to allow custom selection management without duplication of logic.

Review by: jlabanca@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8895 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/cellview/client/CellList.java b/user/src/com/google/gwt/user/cellview/client/CellList.java
index 7eaaa66..df4c0fb 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellList.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellList.java
@@ -257,6 +257,13 @@
     return cell.dependsOnSelection();
   }
 
+  protected void doSelection(Event event, T value, int indexOnPage) {
+    SelectionModel<? super T> selectionModel = getSelectionModel();
+    if (selectionModel != null) {
+      selectionModel.setSelected(value, true);
+    }
+  }
+
   /**
    * Fire an event to the cell.
    *
@@ -349,9 +356,8 @@
         return;
       }
       T value = getDisplayedItem(indexOnPage);
-      SelectionModel<? super T> selectionModel = getSelectionModel();
-      if (selectionModel != null && isMouseDown && !cell.handlesSelection()) {
-        selectionModel.setSelected(value, true);
+      if (isMouseDown && !cell.handlesSelection()) {
+        doSelection(event, value, indexOnPage);
       }
 
       // Focus on the cell.