Author: dongxu
Date: Thu Sep 12 04:50:31 2013
New Revision: 1522402

URL: http://svn.apache.org/r1522402
Log:
fixed issue#75 with our own CheckboxHeader and DataGrid.redrawHeaders method

Modified:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java?rev=1522402&r1=1522401&r2=1522402&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
 Thu Sep 12 04:50:31 2013
@@ -255,11 +255,6 @@ public class ToolBarActivity extends App
                                display.getPopup().hide();
                        }
                }));
-//             registerHandler(display.getDeleteReg());
-//             registerHandler(display.getMarkReg());
-//             registerHandler(display.getReplyReg());
-//             registerHandler(display.getReplyAllReg());
-//             registerHandler(display.getForwardReg());
        }
 
        protected void toMarkRead(boolean read) {

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java?rev=1522402&r1=1522401&r2=1522402&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
 Thu Sep 12 04:50:31 2013
@@ -516,6 +516,7 @@ import org.apache.hupa.shared.domain.Fet
 import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
 
+import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.cell.client.DateCell;
 import com.google.gwt.cell.client.FieldUpdater;
@@ -523,6 +524,9 @@ import com.google.gwt.cell.client.ImageR
 import com.google.gwt.cell.client.TextCell;
 import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.InputElement;
+import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.i18n.client.DateTimeFormat;
@@ -544,6 +548,12 @@ import com.google.web.bindery.requestfac
 
 public class MessagesCellTable extends DataGrid<Message> {
 
+       @Inject private ToolBarActivity.Displayable toolBar;
+       @Inject protected HupaController hc;
+       @Inject EventBus eventBus;
+       private String folderName;
+       private String searchValue;
+
        public static final int PAGE_SIZE = 25;
 
        private HupaImageBundle imageBundle;
@@ -633,12 +643,43 @@ public class MessagesCellTable extends D
                }
 
        }
+       
+       public final class CheckboxHeader extends Header<Boolean> {
 
-       @Inject private ToolBarActivity.Displayable toolBar;
-       private String folderName;
-       private String searchValue;
-       @Inject protected HupaController hc;
-       @Inject EventBus eventBus;
+               private final MultiSelectionModel<? super Message> 
selectionModel;
+               private final AsyncDataProvider<Message> provider;
+
+               public CheckboxHeader(MultiSelectionModel<? super Message> 
selectionModel,
+                               AsyncDataProvider<Message> provider) {
+                       super(new CheckboxCell());
+                       this.selectionModel = selectionModel;
+                       this.provider = provider;
+               }
+
+               @Override
+               public Boolean getValue() {
+                       if(selectionModel == null || provider==null){
+                               return false;
+                       }
+                       if(selectionModel.getSelectedSet().size() == 0 || 
provider.getDataDisplays().size() == 0){
+                               return false;
+                       }
+                       boolean allItemsSelected = 
selectionModel.getSelectedSet().size() == provider.getDataDisplays().size();
+                       return allItemsSelected;
+               }
+
+               @Override
+               public void onBrowserEvent(Context context, Element elem, 
NativeEvent event) {
+                       InputElement input = elem.getFirstChild().cast();
+                       Boolean isChecked = input.isChecked();
+                       List<Message> displayedItems = 
MessagesCellTable.this.getVisibleItems();
+                       for (Message element : displayedItems) {
+                               selectionModel.setSelected(element, isChecked);
+                               checkboxCol.getFieldUpdater().update(0, 
element, isChecked);
+                       }
+               }
+
+       }
 
        @Inject
        public MessagesCellTable(final HupaImageBundle imageBundle, final 
HupaConstants constants,
@@ -672,7 +713,7 @@ public class MessagesCellTable extends D
                        }
                });
 
-               addColumn(checkboxCol, header);
+               addColumn(checkboxCol, new CheckboxHeader(selectionModel, 
dataProvider));
                setColumnWidth(checkboxCol, 3, Unit.EM);
                addColumn(fromCol, constants.mailTableFrom());
                setColumnWidth(fromCol, 40, Unit.PCT);
@@ -808,6 +849,7 @@ public class MessagesCellTable extends D
        }
        public void refresh() {
                dataProvider.refresh();
+               redrawHeaders();
        }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to