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