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 07:01:26 UTC

svn commit: r1522431 - in /james/hupa/trunk: client/src/main/java/org/apache/hupa/client/activity/ client/src/main/java/org/apache/hupa/client/ui/ shared/src/main/java/org/apache/hupa/shared/events/

Author: dongxu
Date: Thu Sep 12 05:01:25 2013
New Revision: 1522431

URL: http://svn.apache.org/r1522431
Log:
fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode

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/MessageListFooterActivity.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
    james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.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=1522431&r1=1522430&r2=1522431&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 05:01:25 2013
@@ -294,13 +294,17 @@ import org.apache.hupa.shared.data.ImapF
 >>>>>>> fixed issue#82, make display message first and then mark etc.
 import org.apache.hupa.shared.domain.DeleteMessageByUidAction;
 import org.apache.hupa.shared.domain.DeleteMessageResult;
+import org.apache.hupa.shared.domain.GenericResult;
 import org.apache.hupa.shared.domain.GetMessageDetailsAction;
 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.domain.MoveMessageAction;
 import org.apache.hupa.shared.domain.User;
 import org.apache.hupa.shared.events.DeleteClickEvent;
 import org.apache.hupa.shared.events.DeleteClickEventHandler;
+import org.apache.hupa.shared.events.MoveMessageEvent;
+import org.apache.hupa.shared.events.MoveMessageEventHandler;
 import org.apache.hupa.shared.events.RefreshMessagesEvent;
 import org.apache.hupa.shared.events.RefreshMessagesEventHandler;
 import org.apache.hupa.shared.events.RefreshUnreadEvent;
@@ -320,7 +324,7 @@ public class MessageListActivity extends
 	@Inject private ToolBarActivity.Displayable toolBar;
 	@Inject private TopBarActivity.Displayable topBar;
 	private String folderName;
-//	private String searchValue;
+	// private String searchValue;
 	private User user;
 
 	@Override
@@ -377,15 +381,15 @@ public class MessageListActivity extends
 		return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
 	}
 
-	private void bindTo(EventBus eventBus) {
+	private void bindTo(final EventBus eventBus) {
 		eventBus.addHandler(DeleteClickEvent.TYPE, new DeleteClickEventHandler() {
 			@Override
 			public void onDeleteClickEvent(DeleteClickEvent event) {
 				deleteSelectedMessages();
 			}
 		});
-		
-		eventBus.addHandler(RefreshMessagesEvent.TYPE, new RefreshMessagesEventHandler(){
+
+		eventBus.addHandler(RefreshMessagesEvent.TYPE, new RefreshMessagesEventHandler() {
 			@Override
 			public void onRefresh(RefreshMessagesEvent event) {
 				display.setSearchValue(event.getSearchValue());
@@ -393,6 +397,56 @@ public class MessageListActivity extends
 			}
 		});
 
+		eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
+
+			@Override
+			public void onMoveMessageHandler(final MoveMessageEvent event) {
+				hc.showTopLoading("Moving...");
+				MoveMessageRequest req = rf.moveMessageRequest();
+				ImapFolder f = req.create(ImapFolder.class);
+				ImapFolder newF = req.create(ImapFolder.class);
+
+				String fullName = null;
+				if (pc.getWhere() instanceof FolderPlace) {
+					fullName = ((FolderPlace) pc.getWhere()).getToken();
+				} else {
+					fullName = ((MessagePlace) pc.getWhere()).getTokenWrapper().getFolder();
+				}
+				f.setFullName(fullName);
+				newF.setFullName(event.getNewFolder().getFullName());
+				MoveMessageAction action = req.create(MoveMessageAction.class);
+
+				final List<Long> uids = display.getSelectedMessagesIds();
+				if(uids.isEmpty() || uids.size() > 1){//TODO can move more than one message once.
+					hc.hideTopLoading();
+					hc.showNotice("Please select one and only one message", 10000);
+					return;
+				}
+				action.setMessageUid(uids.get(0));
+				action.setNewFolder(newF);
+				action.setOldFolder(f);
+				req.move(action).fire(new Receiver<GenericResult>() {
+
+					@Override
+					public void onSuccess(GenericResult response) {
+						display.refresh();
+						eventBus.fireEvent(new RefreshUnreadEvent());
+						hc.hideTopLoading();
+						hc.showNotice("The conversation has been moved to \"" + event.getNewFolder() + "\"", 10000);
+					}
+
+					@Override
+					public void onFailure(ServerFailure error) {
+						super.onFailure(error);
+						hc.hideTopLoading();
+						hc.showNotice(error.getMessage(), 10000);
+					}
+
+				});
+			}
+
+		});
+
 	}
 
 	public MessageListActivity with(String folderName) {

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListFooterActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListFooterActivity.java?rev=1522431&r1=1522430&r2=1522431&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListFooterActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListFooterActivity.java Thu Sep 12 05:01:25 2013
@@ -21,11 +21,15 @@ package org.apache.hupa.client.activity;
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 import org.apache.hupa.shared.data.ImapFolderImpl;
 import org.apache.hupa.shared.events.MoveMessageEvent;
 
 import com.google.gwt.event.dom.client.ChangeEvent;
 import com.google.gwt.event.dom.client.ChangeHandler;
+<<<<<<< HEAD
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
@@ -40,11 +44,18 @@ import com.google.gwt.user.cellview.clie
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
 >>>>>>> integrate all of the views to their corresponding activities and mappers
 =======
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
+import com.google.gwt.user.client.ui.HasVisibility;
 import com.google.gwt.user.client.ui.IsWidget;
+<<<<<<< HEAD
 >>>>>>> replace with IsWidget
+=======
+import com.google.gwt.user.client.ui.ListBox;
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 import com.google.inject.Inject;
 
 public class MessageListFooterActivity extends AppBaseActivity {
@@ -53,6 +64,9 @@ public class MessageListFooterActivity e
 	public void start(AcceptsOneWidget container, EventBus eventBus) {
 		container.setWidget(display.asWidget());
 <<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 		bindTo(eventBus);
 	}
 
@@ -67,8 +81,11 @@ public class MessageListFooterActivity e
 				}
 			}
 		});
+<<<<<<< HEAD
 =======
 >>>>>>> integrate all of the views to their corresponding activities and mappers
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 	}
 
 	@Inject private Displayable display;
@@ -90,6 +107,8 @@ public class MessageListFooterActivity e
 	public interface Displayable extends IsWidget {
 >>>>>>> replace with IsWidget
 		SimplePager getPager();
+		HasVisibility getLabelsPanel();
+		ListBox getLabels();
 	}
 >>>>>>> try to rearrange the places and history managment.
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java?rev=1522431&r1=1522430&r2=1522431&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/LabelListView.java Thu Sep 12 05:01:25 2013
@@ -194,11 +194,9 @@ import org.apache.hupa.client.activity.L
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.shared.domain.ImapFolder;
 
-import com.google.gwt.cell.client.AbstractCell;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.uibinder.client.UiHandler;
@@ -267,27 +265,6 @@ public class LabelListView extends Compo
 				}
 			});
 
-	static class LabelCell extends AbstractCell<LabelNode> {
-
-		public LabelCell() {
-		}
-
-		@Override
-		public void render(com.google.gwt.cell.client.Cell.Context context, LabelNode value, SafeHtmlBuilder sb) {
-			if (value == null) {
-				return;
-			}
-
-			if (value.getFolder().getSubscribed()) {
-				sb.appendHtmlConstant(value.getNameForDisplay());
-			} else {
-				sb.appendHtmlConstant("<span style='color:gray;'>");
-				sb.appendHtmlConstant(value.getNameForDisplay());
-				sb.appendHtmlConstant("</span>");
-			}
-		}
-	}
-
 	public class ImapLabelListDataProvider extends AsyncDataProvider<LabelNode> implements HasRefresh {
 
 		private HupaRequestFactory rf;

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java?rev=1522431&r1=1522430&r2=1522431&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.java Thu Sep 12 05:01:25 2013
@@ -21,6 +21,9 @@ package org.apache.hupa.client.ui;
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 import java.util.ArrayList;
 import java.util.List;
 
@@ -35,6 +38,7 @@ import com.google.gwt.user.cellview.clie
 import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HasVisibility;
+<<<<<<< HEAD
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.SimplePanel;
@@ -129,21 +133,88 @@ import com.google.gwt.uibinder.client.Ui
 import com.google.gwt.user.cellview.client.SimplePager;
 import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
 import com.google.gwt.user.client.ui.Composite;
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 public class MessageListFooterView extends Composite implements MessageListFooterActivity.Displayable {
 
-	@UiField(provided = true)
-	SimplePager simplePager;
+	@UiField(provided = true) SimplePager simplePager;
+
+	@UiField ListBox labels;
+	@UiField SimplePanel labelsPanel;
+	private List<LabelNode> folderNodes = new ArrayList<LabelNode>();
+
+	private static final String ROOT_PATH = "imap_root";
 
 	@Inject
-	public MessageListFooterView(final MessagesCellTable table) {
+	public MessageListFooterView(final MessagesCellTable table, final HupaRequestFactory rf) {
 		SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
 		simplePager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
 		simplePager.setDisplay(table);
-//		simplePager.setRangeLimited(false);
+		// simplePager.setRangeLimited(false);
 		initWidget(binder.createAndBindUi(this));
+
+		rf.fetchFoldersRequest().fetch(null, Boolean.TRUE).fire(new Receiver<List<ImapFolder>>() {
+
+			private String INTENTS = "&nbsp;&nbsp;&nbsp;&nbsp;";
+
+			@Override
+			public void onSuccess(List<ImapFolder> response) {
+				folderNodes.clear();
+				if (response == null || response.size() == 0) {
+				} else {
+					for (ImapFolder folder : response) {
+						fillCellList(folderNodes, folder, LabelNode.ROOT, "");
+					}
+				}
+
+				makeParentList();
+			}
+
+			private void fillCellList(List<LabelNode> folderNodes, ImapFolder curFolder, LabelNode parent,
+					String intents) {
+				LabelNode labelNode = new LabelNode();
+				labelNode.setFolder(curFolder);
+				labelNode.setName(curFolder.getName());
+				labelNode.setNameForDisplay(intents + curFolder.getName());
+				labelNode.setParent(parent);
+				labelNode.setPath(curFolder.getFullName());
+				folderNodes.add(labelNode);
+				if ("inbox".equalsIgnoreCase(curFolder.getName())) {
+					// if(selectionModel.getSelectedObject() == null){
+					// selectionModel.setSelected(labelNode, true);
+					// }
+				}
+				if (curFolder.getHasChildren()) {
+					for (ImapFolder subFolder : curFolder.getChildren()) {
+						fillCellList(folderNodes, subFolder, labelNode, intents + INTENTS);
+					}
+				}
+			}
+
+			@Override
+			public void onFailure(ServerFailure error) {
+				if (error.isFatal()) {
+					throw new RuntimeException(error.getMessage());
+				}
+			}
+
+		});
+	}
+
+	private void makeParentList() {
+		labels.clear();
+		labels.addItem("Move to...", ROOT_PATH);
+		for (LabelNode folderNode : this.folderNodes) {
+			labels.addItem(folderNode.getNameForDisplay().replace("&nbsp;&nbsp;", ". "), folderNode.getPath());
+		}
+
 	}
 
 <<<<<<< HEAD
@@ -175,6 +246,9 @@ public class MessageListFooterView exten
 	}
 
 <<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 	@Override
 	public HasVisibility getLabelsPanel() {
 		return labelsPanel;
@@ -185,8 +259,11 @@ public class MessageListFooterView exten
 		return labels;
 	}
 
+<<<<<<< HEAD
 =======
 >>>>>>> make login page as one part of the overall layout & splite layout to little one
 =======
 >>>>>>> try to rearrange the places and history managment.
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml?rev=1522431&r1=1522430&r2=1522431&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListFooterView.ui.xml Thu Sep 12 05:01:25 2013
@@ -24,6 +24,7 @@
 		<c:SimplePager ui:field="simplePager" />
 		<g:SimplePanel ui:field="labelsPanel" addStyleNames="{style.moveMessage}">
 			<g:ListBox ui:field="labels"></g:ListBox>
+<<<<<<< HEAD
 		</g:SimplePanel>
 	</g:HorizontalPanel>
 =======
@@ -48,6 +49,8 @@
 =======
 		<g:SimplePanel addStyleNames="{style.moveMessage}">
 			<g:HTML>Hello</g:HTML>
+=======
+>>>>>>> fixed issue#85, can move one message now in DEMO mode, while not test in Gmail mode
 		</g:SimplePanel>
 	</g:HorizontalPanel>
 >>>>>>> remove deprecated code

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=1522431&r1=1522430&r2=1522431&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 05:01:25 2013
@@ -838,7 +838,7 @@ public class MessagesCellTable extends D
         dataProvider.updateRowData(range.getStart(), sortedList);
 	}
 	
-	private String parseFolderName(final PlaceController pc) {
+	public String parseFolderName(final PlaceController pc) {
 		Place place = pc.getWhere();
 		if (place instanceof FolderPlace) {
 			folderName = ((FolderPlace) place).getToken();

Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java?rev=1522431&r1=1522430&r2=1522431&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java Thu Sep 12 05:01:25 2013
@@ -119,7 +119,11 @@ public class MoveMessageEvent extends Gw
         this.message = message;
     }
 
-    public User getUser() {
+    public MoveMessageEvent(ImapFolder newFolder) {
+    	this.newFolder = newFolder;
+	}
+
+	public User getUser() {
         return user;
     }
 



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