You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by do...@apache.org on 2013/09/12 06:50:31 UTC

svn commit: r1522402 - in /james/hupa/trunk/client/src/main/java/org/apache/hupa/client: activity/ToolBarActivity.java ui/MessagesCellTable.java

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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org