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:41:05 UTC

svn commit: r1522376 - in /james/hupa/trunk/client/src/main/java/org/apache/hupa/client: activity/MessageListActivity.java activity/ToolBarActivity.java ui/FoldersTreeViewModel.java ui/MessageListView.java ui/MessagesCellTable.java ui/ToolBarView.java

Author: dongxu
Date: Thu Sep 12 04:41:05 2013
New Revision: 1522376

URL: http://svn.apache.org/r1522376
Log:
try to make messages list better for user experience

Modified:
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
    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/FoldersTreeViewModel.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java Thu Sep 12 04:41:05 2013
@@ -320,6 +320,7 @@ public class MessageListActivity extends
 	public void start(AcceptsOneWidget container, final EventBus eventBus) {
 		container.setWidget(display.asWidget());
 		bindTo(eventBus);
+		display.refresh();
 //		this.registerHandler(display.getGrid().addCellPreviewHandler(new Handler<Message>() {
 //			@Override
 //			public void onCellPreview(final CellPreviewEvent<Message> event) {

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=1522376&r1=1522375&r2=1522376&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:41:05 2013
@@ -34,6 +34,7 @@ import org.apache.hupa.client.place.Fold
 import org.apache.hupa.client.HupaController;
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> fixed issue#61; add loading to mark, unmark.
 =======
 import org.apache.hupa.client.place.ComposePlace;
@@ -42,6 +43,9 @@ import org.apache.hupa.client.place.Mail
 >>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in toolsbar
 =======
 >>>>>>> fixed issue#57 - really disable the tools in toolbar
+=======
+import org.apache.hupa.client.place.FolderPlace;
+>>>>>>> try to make messages list better for user experience
 import org.apache.hupa.client.rf.SetFlagRequest;
 import org.apache.hupa.client.ui.MessagesCellTable;
 import org.apache.hupa.client.ui.ToolBarView.Parameters;
@@ -184,6 +188,7 @@ import org.apache.hupa.shared.domain.Gen
 import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
 import org.apache.hupa.shared.domain.SetFlagAction;
+import org.apache.hupa.shared.events.RefreshUnreadEvent;
 
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -200,7 +205,6 @@ public class ToolBarActivity extends App
 	@Inject private Displayable display;
 	@Inject private MessagesCellTable table;
 	@Inject private MessageListActivity.Displayable messagesDisplay;
-	@Inject private FolderListActivity.Displayable folderListDisplay;
 	@Inject private HupaController hupaController;
 	private String folderName;
 
@@ -208,6 +212,9 @@ public class ToolBarActivity extends App
 	public void start(AcceptsOneWidget container, EventBus eventBus) {
 		container.setWidget(display.asWidget());
 		bindTo(eventBus);
+		if(pc.getWhere() instanceof FolderPlace){
+			display.enableAllTools(false);
+		}
 	}
 
 	public ToolBarActivity with(String folder) {
@@ -242,11 +249,11 @@ public class ToolBarActivity extends App
 				display.getPopup().hide();
 			}
 		}));
-		registerHandler(display.getDeleteReg());
-		registerHandler(display.getMarkReg());
-		registerHandler(display.getReplyReg());
-		registerHandler(display.getReplyAllReg());
-		registerHandler(display.getForwardReg());
+//		registerHandler(display.getDeleteReg());
+//		registerHandler(display.getMarkReg());
+//		registerHandler(display.getReplyReg());
+//		registerHandler(display.getReplyAllReg());
+//		registerHandler(display.getForwardReg());
 	}
 
 	protected void toMarkRead(boolean read) {
@@ -268,7 +275,7 @@ public class ToolBarActivity extends App
 		req.set(action).fire(new Receiver<GenericResult>() {
 			@Override
 			public void onSuccess(GenericResult response) {
-				folderListDisplay.refresh();
+				eventBus.fireEvent(new RefreshUnreadEvent());
 				messagesDisplay.refresh();
 				hupaController.hideTopLoading();
 			}

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java Thu Sep 12 04:41:05 2013
@@ -28,12 +28,12 @@ import org.apache.hupa.client.activity.T
 import org.apache.hupa.client.place.FolderPlace;
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.shared.domain.ImapFolder;
+import org.apache.hupa.shared.events.RefreshUnreadEvent;
+import org.apache.hupa.shared.events.RefreshUnreadEventHandler;
 
 import com.google.gwt.cell.client.AbstractCell;
-import com.google.gwt.cell.client.ValueUpdater;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.place.shared.PlaceController;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.view.client.AsyncDataProvider;
@@ -56,7 +56,7 @@ public class FoldersTreeViewModel implem
 	@Inject private MessageListActivity.Displayable msgListDisplay;
 
 	@Inject
-	public FoldersTreeViewModel() {
+	public FoldersTreeViewModel(final EventBus eventBus) {
 		selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
 			@SuppressWarnings("unchecked")
 			@Override
@@ -68,6 +68,13 @@ public class FoldersTreeViewModel implem
 				msgListDisplay.refresh();
 			}
 		});
+
+		eventBus.addHandler(RefreshUnreadEvent.TYPE, new RefreshUnreadEventHandler() {
+			@Override
+			public void onRefreshEvent(RefreshUnreadEvent event) {
+				refresh();
+			}
+		});
 	}
 
 	private final SingleSelectionModel<ImapFolder> selectionModel = new SingleSelectionModel<ImapFolder>(

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java Thu Sep 12 04:41:05 2013
@@ -101,6 +101,7 @@ import com.google.gwt.user.client.ui.Com
 import com.google.gwt.user.client.ui.SimpleLayoutPanel;
 import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.view.client.MultiSelectionModel;
+import com.google.gwt.view.client.NoSelectionModel;
 import com.google.inject.Inject;
 
 public class MessageListView extends Composite implements MessageListActivity.Displayable {
@@ -260,6 +261,8 @@ public class MessageListView extends Com
 		List<Long> selecteds = new ArrayList<Long>();
 		MultiSelectionModel<? super Message> selectionModel = (MultiSelectionModel<? super Message>) grid
 				.getSelectionModel();
+		NoSelectionModel<? super Message> noSelectionModel = (NoSelectionModel<? super Message>)grid.getSelectionModel();
+		
 		selectionModel.getSelectedSet();
 		for (Message msg : getSelectedMessages()) {
 			selecteds.add(msg.getUid());

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=1522376&r1=1522375&r2=1522376&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:41:05 2013
@@ -519,6 +519,7 @@ import org.apache.hupa.shared.domain.Get
 import org.apache.hupa.shared.domain.GetMessageDetailsResult;
 import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
+import org.apache.hupa.shared.events.RefreshUnreadEvent;
 
 import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.cell.client.DateCell;
@@ -528,6 +529,8 @@ import com.google.gwt.cell.client.TextCe
 import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.place.shared.Place;
 import com.google.gwt.place.shared.PlaceController;
@@ -550,7 +553,6 @@ import com.google.web.bindery.requestfac
 public class MessagesCellTable extends DataGrid<Message> {
 
 	public static final int PAGE_SIZE = 25;
-	@Inject ToolBarActivity.Displayable toolBarDisplay;
 
 	private HupaImageBundle imageBundle;
 	CheckboxColumn checkboxCol = new CheckboxColumn();
@@ -643,15 +645,19 @@ public class MessagesCellTable extends D
 	private String folderName;
 	private String searchValue;
 	@Inject protected HupaController hc;
+	@Inject EventBus eventBus;
+
+//	private HandlerRegistration selectionManagerReg = addCellPreviewHandler(DefaultSelectionEventManager
+//			.<Message> createCheckboxManager(0));
+
 	@Inject
-	public MessagesCellTable(final HupaImageBundle imageBundle, final HupaConstants constants, 
-			final PlaceController pc,
-			final HupaRequestFactory rf) {
+	public MessagesCellTable(final HupaImageBundle imageBundle, final HupaConstants constants,
+			final PlaceController pc, final HupaRequestFactory rf) {
 		super(PAGE_SIZE, Resources.INSTANCE);
 		this.pc = pc;
 		this.rf = rf;
 		this.imageBundle = imageBundle;
-		
+
 		CheckboxCell headerCheckbox = new CheckboxCell();
 		ImageResourceCell headerAttached = new ImageResourceCell();
 		Header<Boolean> header = new Header<Boolean>(headerCheckbox) {
@@ -691,7 +697,8 @@ public class MessagesCellTable extends D
 		// redraw();
 		setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
 		setAutoHeaderRefreshDisabled(true);
-//		setSelectionModel(selectionModel, DefaultSelectionEventManager.<Message> createCheckboxManager(0));
+		// setSelectionModel(selectionModel,
+		// DefaultSelectionEventManager.<Message> createCheckboxManager(0));
 
 		setSelectionModel(noSelectionModel, DefaultSelectionEventManager.<Message> createBlacklistManager(0));
 
@@ -711,10 +718,14 @@ public class MessagesCellTable extends D
 					public void onSuccess(GetMessageDetailsResult response) {
 						// display.getGrid().getSelectionModel().setSelected(event.getValue(),
 						// true);
-//						noSelectionModel.setSelected(message, true);
+						// noSelectionModel.setSelected(message, true);
 						toolBar.enableAllTools(true);
+						ToolBarView.Parameters p = new ToolBarView.Parameters(null, folderName, message, response
+								.getMessageDetails());
+						toolBar.setParameters(p);
 						MessagePlace place = new MessagePlace(folderName + AbstractPlace.SPLITTER + message.getUid());
 						refresh();
+						eventBus.fireEvent(new RefreshUnreadEvent());
 						pc.goTo(place);
 					}
 
@@ -724,7 +735,7 @@ public class MessagesCellTable extends D
 							// log.log(Level.SEVERE, error.getMessage());
 							// TODO write the error message to
 							// status bar.
-							// toolBar.enableAllTools(false);
+							toolBar.enableAllTools(false);
 							throw new RuntimeException(error.getMessage());
 						}
 					}
@@ -740,16 +751,16 @@ public class MessagesCellTable extends D
 		refresh();
 	}
 
-
 	private String parseFolderName(final PlaceController pc) {
 		Place place = pc.getWhere();
-		if(place instanceof FolderPlace){
-			folderName= ((FolderPlace)place).getToken();
-		}else if (place instanceof MessagePlace){
-			folderName = ((MessagePlace)place).getTokenWrapper().getFolder();
+		if (place instanceof FolderPlace) {
+			folderName = ((FolderPlace) place).getToken();
+		} else if (place instanceof MessagePlace) {
+			folderName = ((MessagePlace) place).getTokenWrapper().getFolder();
 		}
 		return folderName;
 	}
+
 	Message message; // the object selected by selectionModel
 
 	public String getMessageStyle(Message row) {
@@ -780,10 +791,10 @@ public class MessagesCellTable extends D
 					selectionModel.setSelected(object, value);
 					int size = selectionModel.getSelectedSet().size();
 					if (size >= 1) {
-						toolBarDisplay.enableDealingTools(true);
-						toolBarDisplay.enableSendingTools(false);
+						toolBar.enableDealingTools(true);
+						toolBar.enableSendingTools(false);
 					} else {
-						toolBarDisplay.enableAllTools(false);
+						toolBar.enableAllTools(false);
 					}
 				}
 			});

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java Thu Sep 12 04:41:05 2013
@@ -557,9 +557,12 @@ public class ToolBarView extends Composi
 		replyAllReg = replyAll.addClickHandler(replyAllHandler);
 		forwardReg = forward.addClickHandler(forwardHandler);
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> fixed issue#57 - really disable the tools in toolbar
 =======
 		enableAllTools(false);
+=======
+>>>>>>> try to make messages list better for user experience
 	}
 
 	@UiHandler("compose")
@@ -683,6 +686,9 @@ public class ToolBarView extends Composi
 			replyReg.removeHandler();
 			replyAllReg.removeHandler();
 			forwardReg.removeHandler();	
+			replyReg = null;
+			replyAllReg = null;
+			forwardReg = null;
 		}
 	}
 
@@ -692,7 +698,12 @@ public class ToolBarView extends Composi
 		forwardGroup.removeStyleName(style.disabledButton());
 		replyAllTip.removeStyleName(style.disabledButton());
 		forwardTip.removeStyleName(style.disabledButton());
-		
+
+		if(replyReg != null){
+			replyReg.removeHandler();
+			replyAllReg.removeHandler();
+			forwardReg.removeHandler();	
+		}
 		replyReg = reply.addClickHandler(replyHandler);
 		replyAllReg = replyAll.addClickHandler(replyAllHandler);
 		forwardReg = forward.addClickHandler(forwardHandler);
@@ -708,6 +719,8 @@ public class ToolBarView extends Composi
 		if(deleteReg != null){
 			deleteReg.removeHandler();
 			markReg.removeHandler();
+			deleteReg = null;
+			markReg = null;
 		}
 	}
 
@@ -718,9 +731,17 @@ public class ToolBarView extends Composi
 =======
 		mark.removeStyleName(style.disabledButton());
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> 1.do not select the message which is being focused on. 2.create the mark popup menu
 =======
 		
+=======
+
+		if(markReg != null){
+			deleteReg.removeHandler();
+			markReg.removeHandler();
+		}
+>>>>>>> try to make messages list better for user experience
 		markReg = mark.addClickHandler(markHandler);
 		deleteReg = delete.addClickHandler(deleteHandler);
 >>>>>>> fixed issue#57 - really disable the tools in toolbar



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