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 ma...@apache.org on 2014/03/20 09:16:10 UTC

svn commit: r1579559 [2/23] - in /james/hupa/trunk: ./ client/ client/src/main/java/com/google/web/bindery/requestfactory/server/ client/src/main/java/org/apache/hupa/ client/src/main/java/org/apache/hupa/client/ client/src/main/java/org/apache/hupa/cl...

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java Thu Mar 20 08:16:02 2014
@@ -77,428 +77,428 @@ import com.google.web.bindery.requestfac
 import com.google.web.bindery.requestfactory.shared.RequestContext;
 
 public class ComposeActivity extends AppBaseActivity {
-	@Inject private Displayable display;
-	@Inject private HupaController hupaController;
-	private List<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
-	protected ComposePlace place;
-	private User user;
-
-	public Activity with(ComposePlace place) {
-		this.place = place;
-		return this;
-	}
-
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		bindTo(eventBus);
-		fillHeader();
-	}
-
-	@Override
-	public String mayStop() {
-		super.mayStop();
-		if (noContent()) {
-			return null;
-		}
-		return null;
-		// return "Do you want to leave this page?"; TODO
-	}
-
-	@Override
-	public void onStop() {
-		super.onStop();
-	}
-
-	private boolean noContent() {
-		return "".equals(display.getMessage().getText()) && "".equals(display.getSubject().getText());
-	}
-
-	@Override
-	public void onCancel() {
-
-	}
-
-	protected void fillHeader() {
-		if (place == null || place.getParameters() == null)
-			return;
-		if (user == null) {
-			user = place.getParameters().getUser();
-		}
-		if (user == null) {
-			user = HupaController.user;
-		}
-		display.getFromList().addItem(user.getName());
-		display.getUploader().reset();
-		if ("new".equals(place.getToken())) {
-			display.getTo().setText("");
-			display.getCc().setText("");
-			display.getBcc().setText("");
-			display.getSubject().setText(place.getSubject() == null ? "" : place.getSubject());
-			display.getMessageHTML().setHTML(place.getBody() == null ? "" : place.getBody());
-			attachments.clear();
-			return;
-		}
-		Message oldMessage = place.getParameters().getOldmessage();
-		display.getMessageHTML().setHTML(
-				wrapMessage(oldMessage, place.getParameters().getOldDetails(), place.getToken()));
-		if ("forward".equals(place.getToken())) {
-			String subject = oldMessage.getSubject() != null ? oldMessage.getSubject().trim() : "";
-			if (!subject.toLowerCase().startsWith("fwd:")) {
-				subject = "Fwd: " + subject;
-			}
-			display.getSubject().setText(subject);
-		} else if ("reply".equals(place.getToken()) || "replyAll".equals(place.getToken())) {
-
-			String subject = oldMessage.getSubject() != null ? oldMessage.getSubject().trim() : "";
-			if (!subject.toLowerCase().startsWith("re:")) {
-				subject = "Re: " + subject;
-			}
-			if ("reply".equals(place.getToken())) {
-				display.getSubject().setText(subject);
-				if (oldMessage.getReplyto() != null && !oldMessage.getFrom().contains(oldMessage.getReplyto())) {
-					display.getTo().setText(oldMessage.getReplyto());
-				} else {
-					display.getTo().setText(oldMessage.getFrom());
-				}
-			} else if ("replyAll".equals(place.getToken())) {
-				ArrayList<String> list = new ArrayList<String>();
-				if (oldMessage.getReplyto() != null && !oldMessage.getFrom().contains(oldMessage.getReplyto()))
-					list.add(oldMessage.getReplyto());
-				if (oldMessage.getTo() != null)
-					list.addAll(oldMessage.getTo());
-				if (oldMessage.getCc() != null)
-					list.addAll(oldMessage.getCc());
-				list = removeEmailFromList(list, user.getName());
-				display.getCc().setText(Util.listToString(list));
-				if (oldMessage.getTo() != null) {
-					oldMessage.getTo().remove(user.getName());
-				}
-				display.getTo().setText(oldMessage.getFrom());
-			}
-		}
-	}
-
-	protected ArrayList<String> removeEmailFromList(List<String> list, String email) {
-		ArrayList<String> ret = new ArrayList<String>();
-		String regex = ".*<?\\s*" + email.trim() + "\\s*>?\\s*";
-		for (String e : list) {
-			if (!e.matches(regex)) {
-				ret.add(e);
-			}
-		}
-		return ret;
-	}
-	private static String generateHeader(Message message, String type) {
-		String ret = "<br>";
-		if (message != null) {
-			if (type.equals("forward")) {
-				ret += "--------- Forwarded message --------- <br>";
-				ret += "From: " + message.getFrom().replaceAll("<", "&lt;").replaceAll(">", "&gt;") + "<br>";
-				ret += "Date: " + message.getReceivedDate() + "<br>";
-				ret += "Subject: " + message.getSubject() + "<br>";
-				ArrayList<String> to = new ArrayList<String>();
-				to.addAll(message.getTo());
-				to.addAll(message.getCc());
-				ret += "To: " + Util.listToString(to).replaceAll("<", "&lt;").replaceAll(">", "&gt;") + "<br>";
-			} else if (type.equals("reply") || type.equals("replyAll")) {
-				ret += "On " + message.getReceivedDate();
-				ret += ", " + message.getFrom().replaceAll("<", "&lt;").replaceAll(">", "&gt;");
-				ret += ". wrote:<br>";
-			}
-		}
-		return ret + "<br>";
-	}
-	public static String wrapMessage(Message message, MessageDetails details, String type) {
-		String ret = "";
-		if (message != null) {
-			ret += generateHeader(message, type);
-		}
-		if (details != null && details.getText() != null && details.getText().length() > 0) {
-			ret += "<blockquote style='border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;'>";
-			ret += details.getText();
-			ret += "</blockquote>";
-		}
-		return ret;
-	}
-	protected void bindTo(EventBus eventBus) {
-		eventBus.addHandler(AddressClickEvent.TYPE, new AddressClickEventHandler() {
-			@Override
-			public void onClick(AddressClickEvent event) {
-				String to = display.getTo().getText();
-				if(to != null && to.trim().length() > 0){
-				display.getTo().setText(to + ";" + event.getEmail());
-				}else {
-					display.getTo().setText(event.getEmail());
-				}
-			}
-		});
+    @Inject private Displayable display;
+    @Inject private HupaController hupaController;
+    private List<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
+    protected ComposePlace place;
+    private User user;
+
+    public Activity with(ComposePlace place) {
+        this.place = place;
+        return this;
+    }
+
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+        bindTo(eventBus);
+        fillHeader();
+    }
+
+    @Override
+    public String mayStop() {
+        super.mayStop();
+        if (noContent()) {
+            return null;
+        }
+        return null;
+        // return "Do you want to leave this page?"; TODO
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+    }
+
+    private boolean noContent() {
+        return "".equals(display.getMessage().getText()) && "".equals(display.getSubject().getText());
+    }
+
+    @Override
+    public void onCancel() {
+
+    }
+
+    protected void fillHeader() {
+        if (place == null || place.getParameters() == null)
+            return;
+        if (user == null) {
+            user = place.getParameters().getUser();
+        }
+        if (user == null) {
+            user = HupaController.user;
+        }
+        display.getFromList().addItem(user.getName());
+        display.getUploader().reset();
+        if ("new".equals(place.getToken())) {
+            display.getTo().setText("");
+            display.getCc().setText("");
+            display.getBcc().setText("");
+            display.getSubject().setText(place.getSubject() == null ? "" : place.getSubject());
+            display.getMessageHTML().setHTML(place.getBody() == null ? "" : place.getBody());
+            attachments.clear();
+            return;
+        }
+        Message oldMessage = place.getParameters().getOldmessage();
+        display.getMessageHTML().setHTML(
+                wrapMessage(oldMessage, place.getParameters().getOldDetails(), place.getToken()));
+        if ("forward".equals(place.getToken())) {
+            String subject = oldMessage.getSubject() != null ? oldMessage.getSubject().trim() : "";
+            if (!subject.toLowerCase().startsWith("fwd:")) {
+                subject = "Fwd: " + subject;
+            }
+            display.getSubject().setText(subject);
+        } else if ("reply".equals(place.getToken()) || "replyAll".equals(place.getToken())) {
+
+            String subject = oldMessage.getSubject() != null ? oldMessage.getSubject().trim() : "";
+            if (!subject.toLowerCase().startsWith("re:")) {
+                subject = "Re: " + subject;
+            }
+            if ("reply".equals(place.getToken())) {
+                display.getSubject().setText(subject);
+                if (oldMessage.getReplyto() != null && !oldMessage.getFrom().contains(oldMessage.getReplyto())) {
+                    display.getTo().setText(oldMessage.getReplyto());
+                } else {
+                    display.getTo().setText(oldMessage.getFrom());
+                }
+            } else if ("replyAll".equals(place.getToken())) {
+                ArrayList<String> list = new ArrayList<String>();
+                if (oldMessage.getReplyto() != null && !oldMessage.getFrom().contains(oldMessage.getReplyto()))
+                    list.add(oldMessage.getReplyto());
+                if (oldMessage.getTo() != null)
+                    list.addAll(oldMessage.getTo());
+                if (oldMessage.getCc() != null)
+                    list.addAll(oldMessage.getCc());
+                list = removeEmailFromList(list, user.getName());
+                display.getCc().setText(Util.listToString(list));
+                if (oldMessage.getTo() != null) {
+                    oldMessage.getTo().remove(user.getName());
+                }
+                display.getTo().setText(oldMessage.getFrom());
+            }
+        }
+    }
+
+    protected ArrayList<String> removeEmailFromList(List<String> list, String email) {
+        ArrayList<String> ret = new ArrayList<String>();
+        String regex = ".*<?\\s*" + email.trim() + "\\s*>?\\s*";
+        for (String e : list) {
+            if (!e.matches(regex)) {
+                ret.add(e);
+            }
+        }
+        return ret;
+    }
+    private static String generateHeader(Message message, String type) {
+        String ret = "<br>";
+        if (message != null) {
+            if (type.equals("forward")) {
+                ret += "--------- Forwarded message --------- <br>";
+                ret += "From: " + message.getFrom().replaceAll("<", "&lt;").replaceAll(">", "&gt;") + "<br>";
+                ret += "Date: " + message.getReceivedDate() + "<br>";
+                ret += "Subject: " + message.getSubject() + "<br>";
+                ArrayList<String> to = new ArrayList<String>();
+                to.addAll(message.getTo());
+                to.addAll(message.getCc());
+                ret += "To: " + Util.listToString(to).replaceAll("<", "&lt;").replaceAll(">", "&gt;") + "<br>";
+            } else if (type.equals("reply") || type.equals("replyAll")) {
+                ret += "On " + message.getReceivedDate();
+                ret += ", " + message.getFrom().replaceAll("<", "&lt;").replaceAll(">", "&gt;");
+                ret += ". wrote:<br>";
+            }
+        }
+        return ret + "<br>";
+    }
+    public static String wrapMessage(Message message, MessageDetails details, String type) {
+        String ret = "";
+        if (message != null) {
+            ret += generateHeader(message, type);
+        }
+        if (details != null && details.getText() != null && details.getText().length() > 0) {
+            ret += "<blockquote style='border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;'>";
+            ret += details.getText();
+            ret += "</blockquote>";
+        }
+        return ret;
+    }
+    protected void bindTo(EventBus eventBus) {
+        eventBus.addHandler(AddressClickEvent.TYPE, new AddressClickEventHandler() {
+            @Override
+            public void onClick(AddressClickEvent event) {
+                String to = display.getTo().getText();
+                if(to != null && to.trim().length() > 0){
+                display.getTo().setText(to + ";" + event.getEmail());
+                }else {
+                    display.getTo().setText(event.getEmail());
+                }
+            }
+        });
         eventBus.addHandler(SendClickEvent.TYPE, new SendClickEventHandler() {
             public void onSendClick(SendClickEvent event) {
                 send();
             }
         });
-		eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-			public void onLogin(LoginEvent event) {
-				user = event.getUser();
-			}
-		});
-		eventBus.addHandler(AttachClickEvent.TYPE, new AttachClickEventHandler() {
-			public void onAttachClick(AttachClickEvent event) {
-				display.getAttachButton().fireEvent(new ClickEvent() {
-				});
-			}
-		});
-		registerHandler(display.getSendClick().addClickHandler(sendClickHandler));
-		registerHandler(display.getCancelClick().addClickHandler(cancelClickHandler));
-
-		registerHandler(display.getCcClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.showCc();
-			}
-		}));
-		registerHandler(display.get_CcClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.hideCc();
-			}
-		}));
-		registerHandler(display.getBccClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.showBcc();
-			}
-		}));
-		registerHandler(display.get_BccClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.hideBcc();
-			}
-		}));
-		registerHandler(display.getReplyClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.showReply();
-			}
-		}));
-		registerHandler(display.get_ReplyClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.hideReply();
-			}
-		}));
-		registerHandler(display.getFollowupClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.showFollowup();
-			}
-		}));
-		registerHandler(display.get_FollowupClick().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.hideFollowup();
-			}
-		}));
-		registerHandler(display.getUploader().addOnStatusChangedHandler(onStatusChangedHandler));
-		registerHandler(display.getUploader().addOnFinishUploadHandler(onFinishUploadHandler));
-		registerHandler(display.getUploader().addOnCancelUploadHandler(onCancelUploadHandler));
-
-		eventBus.addHandler(MailToEvent.TYPE, new MailToEventHandler() {
-			@Override
-			public void onMailTo(MailToEvent event) {
-				display.getTo().setText(event.getMailto());
-			}
-		});
-
-		fillSuggestList();
-
-	}
-
-	private void fillSuggestList() {
-		// TODO move this to hupaStorage
-		Storage contactStore = Storage.getLocalStorageIfSupported();
-		if (contactStore != null) {
-			String contactsString = contactStore.getItem(MessageListActivity.CONTACTS_STORE);
-			if (contactsString != null) {
-				display.fillContactList(contactsString.replace("[", "").replace("]", "").trim().split(","));
-			}
-		}
-	}
-
-	private OnFinishUploaderHandler onFinishUploadHandler = new OnFinishUploaderHandler() {
-		public void onFinish(IUploader uploader) {
-			if (uploader.getStatus() == Status.SUCCESS) {
-				MessageAttachment attachment = new MessageAttachmentImpl();
-				// We use the fileInputName (unique) instead of the fileName so
-				// as we
-				// can find the item in the registry.
-				attachment.setName(uploader.getInputName());
-				attachment.setContentType(uploader.getServerInfo().ctype);
-				attachment.setSize(uploader.getServerInfo().size);
-				attachments.add(attachment);
-			}
-		}
-	};
-
-	private OnStatusChangedHandler onStatusChangedHandler = new OnStatusChangedHandler() {
-		public void onStatusChanged(IUploader uploader) {
-			Status stat = display.getUploader().getStatus();
-			((HasEnabled) display.getSendClick()).setEnabled(stat != Status.INPROGRESS);
-		}
-	};
-
-	private OnCancelUploaderHandler onCancelUploadHandler = new OnCancelUploaderHandler() {
-		public void onCancel(IUploader uploader) {
-			for (Iterator<MessageAttachment> i = attachments.iterator(); i.hasNext();) {
-				MessageAttachment attachment = i.next();
-				if (attachment.getName().equals(uploader.getInputName()))
-					i.remove();
-			}
-		}
-	};
-
-	private ClickHandler cancelClickHandler = new ClickHandler() {
-		@Override
-		public void onClick(ClickEvent event) {
-			History.back();
-		}
-
-	};
-
-	protected ClickHandler sendClickHandler = new ClickHandler() {
-		public void onClick(ClickEvent event) {
-			send();
-		}
-	};
-
-	protected void send() {
-		if (!validate())
-			return;
-		hupaController.showTopLoading("Sending...");
-
-		MessageDetails oldDetails = place.getParameters().getOldDetails();
-
-		if ("new".equals(place.getToken())) {
-			SendMessageRequest sendReq = rf.sendMessageRequest();
-			SendMessageAction sendAction = sendReq.create(SendMessageAction.class);
-			sendAction.setMessage(parseMessage(sendReq));
-			sendReq.send(sendAction).fire(new Receiver<GenericResult>() {
-				@Override
-				public void onSuccess(GenericResult response) {
-					afterSend(response);
-				}
-			});
-		} else if ("forward".equals(place.getToken())) {
-			// FIXME will get a NullPointerException given accessing
-			// directly from some URL like #/compose:forward
-			SendForwardMessageRequest req = rf.sendForwardMessageRequest();
-			SendForwardMessageAction action = req.create(SendForwardMessageAction.class);
-			action.setReferences(oldDetails.getReferences());
-
-			action.setMessage(parseMessage(req));
-			ImapFolder f = req.create(ImapFolder.class);
-			f.setFullName(place.getParameters().getFolderName());
-			action.setFolder(f);
-			action.setUid(place.getParameters().getOldmessage().getUid());
-			req.send(action).fire(new Receiver<GenericResult>() {
-				@Override
-				public void onSuccess(GenericResult response) {
-					afterSend(response);
-				}
-			});
-		} else {
-			SendReplyMessageRequest replyReq = rf.sendReplyMessageRequest();
-			SendReplyMessageAction action = replyReq.create(SendReplyMessageAction.class);
-			action.setReferences(oldDetails.getReferences());
-			action.setMessage(parseMessage(replyReq));
-			ImapFolder folder = replyReq.create(ImapFolder.class);
-			folder.setFullName(place.getParameters().getFolderName());
-			action.setFolder(folder);
-			action.setUid(place.getParameters().getOldmessage().getUid());
-			replyReq.send(action).fire(new Receiver<GenericResult>() {
-				@Override
-				public void onSuccess(GenericResult response) {
-					afterSend(response);
-				}
-			});
-		}
-	}
-	private boolean validate() {
-		// Don't trust only in view validation
-		return display.validate() && display.getTo().getText().trim().length() > 0
-				&& EmailListValidator.isValidAddressList(display.getTo().getText())
-				&& EmailListValidator.isValidAddressList(display.getCc().getText())
-				&& EmailListValidator.isValidAddressList(display.getBcc().getText());
-	}
-
-	protected SmtpMessage parseMessage(RequestContext rc) {
-		SmtpMessage message = rc.create(SmtpMessage.class);
-		List<MessageAttachment> attaches = new ArrayList<MessageAttachment>();
-		for (MessageAttachment attach : attachments) {
-			MessageAttachment attachMent = rc.create(MessageAttachment.class);
-			attachMent.setName(attach.getName());
-			attachMent.setSize(attach.getSize());
-			attachMent.setContentType(attach.getContentType());
-			attaches.add(attachMent);
-		}
-		message.setFrom(display.getFromText());
-		message.setSubject(display.getSubject().getText());
-		message.setText(display.getMessageHTML().getHTML());
-		message.setMessageAttachments(attaches);
-		message.setTo(emailTextToArray(display.getTo().getText()));
-		message.setCc(emailTextToArray(display.getCc().getText()));
-		message.setBcc(emailTextToArray(display.getBcc().getText()));
-		return message;
-	}
-
-	private List<String> emailTextToArray(String emails) {
-		List<String> cc = new ArrayList<String>();
-		for (String ccRaw : emails.split("[,;]+")) {
-			String ccRecip = ccRaw.trim();
-			if (ccRecip.length() > 0) {
-				cc.add(ccRaw.trim());
-			}
-		}
-		return cc;
-	}
-
-	private void afterSend(GenericResult response) {
-		hupaController.hideTopLoading();
-		hupaController.showNotice("Your mail has been sent.", 10000);
-		History.back();
-	}
-
-	public interface Displayable extends IsWidget {
-		String getFromText();
-		void showCc();
-		void hideCc();
-		void showBcc();
-		void hideBcc();
-		void showReply();
-		void hideReply();
-		void showFollowup();
-		void hideFollowup();
-		HasText getTo();
-		HasText getCc();
-		HasText getBcc();
-		HasText getSubject();
-		HasClickHandlers getSendClick();
-		HasClickHandlers getCancelClick();
-		HasClickHandlers getCcClick();
-		HasClickHandlers get_CcClick();
-		HasClickHandlers getBccClick();
-		HasClickHandlers get_BccClick();
-		HasClickHandlers getReplyClick();
-		HasClickHandlers get_ReplyClick();
-		HasClickHandlers getFollowupClick();
-		HasClickHandlers get_FollowupClick();
-		boolean validate();
-		HasText getMessage();
-		HasHTML getMessageHTML();
-		ListBox getFromList();
-		IUploader getUploader();
-		void fillContactList(String[] contacts);
-		HasFocusHandlers getAttachButton();
-	}
+        eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+            public void onLogin(LoginEvent event) {
+                user = event.getUser();
+            }
+        });
+        eventBus.addHandler(AttachClickEvent.TYPE, new AttachClickEventHandler() {
+            public void onAttachClick(AttachClickEvent event) {
+                display.getAttachButton().fireEvent(new ClickEvent() {
+                });
+            }
+        });
+        registerHandler(display.getSendClick().addClickHandler(sendClickHandler));
+        registerHandler(display.getCancelClick().addClickHandler(cancelClickHandler));
+
+        registerHandler(display.getCcClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.showCc();
+            }
+        }));
+        registerHandler(display.get_CcClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.hideCc();
+            }
+        }));
+        registerHandler(display.getBccClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.showBcc();
+            }
+        }));
+        registerHandler(display.get_BccClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.hideBcc();
+            }
+        }));
+        registerHandler(display.getReplyClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.showReply();
+            }
+        }));
+        registerHandler(display.get_ReplyClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.hideReply();
+            }
+        }));
+        registerHandler(display.getFollowupClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.showFollowup();
+            }
+        }));
+        registerHandler(display.get_FollowupClick().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.hideFollowup();
+            }
+        }));
+        registerHandler(display.getUploader().addOnStatusChangedHandler(onStatusChangedHandler));
+        registerHandler(display.getUploader().addOnFinishUploadHandler(onFinishUploadHandler));
+        registerHandler(display.getUploader().addOnCancelUploadHandler(onCancelUploadHandler));
+
+        eventBus.addHandler(MailToEvent.TYPE, new MailToEventHandler() {
+            @Override
+            public void onMailTo(MailToEvent event) {
+                display.getTo().setText(event.getMailto());
+            }
+        });
+
+        fillSuggestList();
+
+    }
+
+    private void fillSuggestList() {
+        // TODO move this to hupaStorage
+        Storage contactStore = Storage.getLocalStorageIfSupported();
+        if (contactStore != null) {
+            String contactsString = contactStore.getItem(MessageListActivity.CONTACTS_STORE);
+            if (contactsString != null) {
+                display.fillContactList(contactsString.replace("[", "").replace("]", "").trim().split(","));
+            }
+        }
+    }
+
+    private OnFinishUploaderHandler onFinishUploadHandler = new OnFinishUploaderHandler() {
+        public void onFinish(IUploader uploader) {
+            if (uploader.getStatus() == Status.SUCCESS) {
+                MessageAttachment attachment = new MessageAttachmentImpl();
+                // We use the fileInputName (unique) instead of the fileName so
+                // as we
+                // can find the item in the registry.
+                attachment.setName(uploader.getInputName());
+                attachment.setContentType(uploader.getServerInfo().ctype);
+                attachment.setSize(uploader.getServerInfo().size);
+                attachments.add(attachment);
+            }
+        }
+    };
+
+    private OnStatusChangedHandler onStatusChangedHandler = new OnStatusChangedHandler() {
+        public void onStatusChanged(IUploader uploader) {
+            Status stat = display.getUploader().getStatus();
+            ((HasEnabled) display.getSendClick()).setEnabled(stat != Status.INPROGRESS);
+        }
+    };
+
+    private OnCancelUploaderHandler onCancelUploadHandler = new OnCancelUploaderHandler() {
+        public void onCancel(IUploader uploader) {
+            for (Iterator<MessageAttachment> i = attachments.iterator(); i.hasNext();) {
+                MessageAttachment attachment = i.next();
+                if (attachment.getName().equals(uploader.getInputName()))
+                    i.remove();
+            }
+        }
+    };
+
+    private ClickHandler cancelClickHandler = new ClickHandler() {
+        @Override
+        public void onClick(ClickEvent event) {
+            History.back();
+        }
+
+    };
+
+    protected ClickHandler sendClickHandler = new ClickHandler() {
+        public void onClick(ClickEvent event) {
+            send();
+        }
+    };
+
+    protected void send() {
+        if (!validate())
+            return;
+        hupaController.showTopLoading("Sending...");
+
+        MessageDetails oldDetails = place.getParameters().getOldDetails();
+
+        if ("new".equals(place.getToken())) {
+            SendMessageRequest sendReq = rf.sendMessageRequest();
+            SendMessageAction sendAction = sendReq.create(SendMessageAction.class);
+            sendAction.setMessage(parseMessage(sendReq));
+            sendReq.send(sendAction).fire(new Receiver<GenericResult>() {
+                @Override
+                public void onSuccess(GenericResult response) {
+                    afterSend(response);
+                }
+            });
+        } else if ("forward".equals(place.getToken())) {
+            // FIXME will get a NullPointerException given accessing
+            // directly from some URL like #/compose:forward
+            SendForwardMessageRequest req = rf.sendForwardMessageRequest();
+            SendForwardMessageAction action = req.create(SendForwardMessageAction.class);
+            action.setReferences(oldDetails.getReferences());
+
+            action.setMessage(parseMessage(req));
+            ImapFolder f = req.create(ImapFolder.class);
+            f.setFullName(place.getParameters().getFolderName());
+            action.setFolder(f);
+            action.setUid(place.getParameters().getOldmessage().getUid());
+            req.send(action).fire(new Receiver<GenericResult>() {
+                @Override
+                public void onSuccess(GenericResult response) {
+                    afterSend(response);
+                }
+            });
+        } else {
+            SendReplyMessageRequest replyReq = rf.sendReplyMessageRequest();
+            SendReplyMessageAction action = replyReq.create(SendReplyMessageAction.class);
+            action.setReferences(oldDetails.getReferences());
+            action.setMessage(parseMessage(replyReq));
+            ImapFolder folder = replyReq.create(ImapFolder.class);
+            folder.setFullName(place.getParameters().getFolderName());
+            action.setFolder(folder);
+            action.setUid(place.getParameters().getOldmessage().getUid());
+            replyReq.send(action).fire(new Receiver<GenericResult>() {
+                @Override
+                public void onSuccess(GenericResult response) {
+                    afterSend(response);
+                }
+            });
+        }
+    }
+    private boolean validate() {
+        // Don't trust only in view validation
+        return display.validate() && display.getTo().getText().trim().length() > 0
+                && EmailListValidator.isValidAddressList(display.getTo().getText())
+                && EmailListValidator.isValidAddressList(display.getCc().getText())
+                && EmailListValidator.isValidAddressList(display.getBcc().getText());
+    }
+
+    protected SmtpMessage parseMessage(RequestContext rc) {
+        SmtpMessage message = rc.create(SmtpMessage.class);
+        List<MessageAttachment> attaches = new ArrayList<MessageAttachment>();
+        for (MessageAttachment attach : attachments) {
+            MessageAttachment attachMent = rc.create(MessageAttachment.class);
+            attachMent.setName(attach.getName());
+            attachMent.setSize(attach.getSize());
+            attachMent.setContentType(attach.getContentType());
+            attaches.add(attachMent);
+        }
+        message.setFrom(display.getFromText());
+        message.setSubject(display.getSubject().getText());
+        message.setText(display.getMessageHTML().getHTML());
+        message.setMessageAttachments(attaches);
+        message.setTo(emailTextToArray(display.getTo().getText()));
+        message.setCc(emailTextToArray(display.getCc().getText()));
+        message.setBcc(emailTextToArray(display.getBcc().getText()));
+        return message;
+    }
+
+    private List<String> emailTextToArray(String emails) {
+        List<String> cc = new ArrayList<String>();
+        for (String ccRaw : emails.split("[,;]+")) {
+            String ccRecip = ccRaw.trim();
+            if (ccRecip.length() > 0) {
+                cc.add(ccRaw.trim());
+            }
+        }
+        return cc;
+    }
+
+    private void afterSend(GenericResult response) {
+        hupaController.hideTopLoading();
+        hupaController.showNotice("Your mail has been sent.", 10000);
+        History.back();
+    }
+
+    public interface Displayable extends IsWidget {
+        String getFromText();
+        void showCc();
+        void hideCc();
+        void showBcc();
+        void hideBcc();
+        void showReply();
+        void hideReply();
+        void showFollowup();
+        void hideFollowup();
+        HasText getTo();
+        HasText getCc();
+        HasText getBcc();
+        HasText getSubject();
+        HasClickHandlers getSendClick();
+        HasClickHandlers getCancelClick();
+        HasClickHandlers getCcClick();
+        HasClickHandlers get_CcClick();
+        HasClickHandlers getBccClick();
+        HasClickHandlers get_BccClick();
+        HasClickHandlers getReplyClick();
+        HasClickHandlers get_ReplyClick();
+        HasClickHandlers getFollowupClick();
+        HasClickHandlers get_FollowupClick();
+        boolean validate();
+        HasText getMessage();
+        HasHTML getMessageHTML();
+        ListBox getFromList();
+        IUploader getUploader();
+        void fillContactList(String[] contacts);
+        HasFocusHandlers getAttachButton();
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeToolBarActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeToolBarActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeToolBarActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ComposeToolBarActivity.java Thu Mar 20 08:16:02 2014
@@ -31,17 +31,17 @@ import com.google.inject.Inject;
 public class ComposeToolBarActivity extends AppBaseActivity {
 
     public Activity with(ComposePlace place) {
-		return this;
-	}
-	
+        return this;
+    }
+
     @Inject private Displayable display;
-    
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-	}
 
-	public interface Displayable extends IsWidget {
-		HasClickHandlers getSendClick();
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+    }
+
+    public interface Displayable extends IsWidget {
+        HasClickHandlers getSendClick();
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactPropertiesActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactPropertiesActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactPropertiesActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactPropertiesActivity.java Thu Mar 20 08:16:02 2014
@@ -31,15 +31,15 @@ import com.google.inject.Inject;
 
 public class ContactPropertiesActivity extends AppBaseActivity {
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+    }
 
-	@Inject private Displayable display;
+    @Inject private Displayable display;
 
-	public interface Displayable extends IsWidget {
-		void cascade(LabelNode labelNode, List<LabelNode> list, int cascadeTypeAdd);
-		HasClickHandlers getSave();
-	}
+    public interface Displayable extends IsWidget {
+        void cascade(LabelNode labelNode, List<LabelNode> list, int cascadeTypeAdd);
+        HasClickHandlers getSave();
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactsListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactsListActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactsListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ContactsListActivity.java Thu Mar 20 08:16:02 2014
@@ -44,70 +44,70 @@ import com.google.web.bindery.requestfac
 
 public class ContactsListActivity extends AppBaseActivity {
 
-	@Inject private HupaController hupaController;
-	@Inject private Displayable display;
-	@Inject private LabelPropertiesActivity.Displayable labelProperties;
-
-
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		bindTo(eventBus);
-	}
-
-	private void bindTo(final EventBus eventBus) {
-		this.registerHandler(display.getDelete().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				if (Window.confirm("Are you sure?")) {
-					eventBus.fireEvent(new DeleteFolderEvent());
-				}
-			}
-		}));
-		eventBus.addHandler(DeleteFolderEvent.TYPE, new DeleteFolderEventHandler() {
-			@Override
-			public void onDeleteFolderEvent(DeleteFolderEvent event) {
-				deleteSelected();
-			}
-		});
-		eventBus.addHandler(RefreshLabelListEvent.TYPE, new RefreshLabelListEventHandler(){
-			@Override
-			public void onRefreshEvent(RefreshLabelListEvent event) {
-				display.refresh();
-			}
-		});
-	}
-
-	public interface Displayable extends IsWidget {
-		final int CASCADE_TYPE_ADD = 0x01;
-		final int CASCADE_TYPE_RENAME = 0x02;
-		SingleSelectionModel<LabelNode> getSelectionModel();
-		HasClickHandlers getAdd();
-		HasClickHandlers getDelete();
-		void refresh();
-	}
-
-	public void deleteSelected() {
-		hupaController.showTopLoading("Deleting...");
-		SingleSelectionModel<LabelNode> selectionModel = display.getSelectionModel();
-		LabelNode labelNode = selectionModel.getSelectedObject();
-		DeleteFolderRequest req = rf.deleteFolderRequest();
-		DeleteFolderAction action = req.create(DeleteFolderAction.class);
-		final ImapFolder f = req.create(ImapFolder.class);
-		f.setFullName(labelNode.getFolder().getFullName());
-		action.setFolder(f);
-		req.delete(action).fire(new Receiver<GenericResult>() {
-			@Override
-			public void onSuccess(GenericResult response) {
-				hupaController.hideTopLoading();
-				display.refresh();
-				hupaController.showNotice("The label \"" + f.getFullName() + "\" was deleted.", 10000);
-			}
-			@Override
-			public void onFailure(ServerFailure error) {
-				hupaController.hideTopLoading();
-				hupaController.showNotice(error.getMessage(), 10000);
-			}
-		});
-	}
+    @Inject private HupaController hupaController;
+    @Inject private Displayable display;
+    @Inject private LabelPropertiesActivity.Displayable labelProperties;
+
+
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+        bindTo(eventBus);
+    }
+
+    private void bindTo(final EventBus eventBus) {
+        this.registerHandler(display.getDelete().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                if (Window.confirm("Are you sure?")) {
+                    eventBus.fireEvent(new DeleteFolderEvent());
+                }
+            }
+        }));
+        eventBus.addHandler(DeleteFolderEvent.TYPE, new DeleteFolderEventHandler() {
+            @Override
+            public void onDeleteFolderEvent(DeleteFolderEvent event) {
+                deleteSelected();
+            }
+        });
+        eventBus.addHandler(RefreshLabelListEvent.TYPE, new RefreshLabelListEventHandler(){
+            @Override
+            public void onRefreshEvent(RefreshLabelListEvent event) {
+                display.refresh();
+            }
+        });
+    }
+
+    public interface Displayable extends IsWidget {
+        final int CASCADE_TYPE_ADD = 0x01;
+        final int CASCADE_TYPE_RENAME = 0x02;
+        SingleSelectionModel<LabelNode> getSelectionModel();
+        HasClickHandlers getAdd();
+        HasClickHandlers getDelete();
+        void refresh();
+    }
+
+    public void deleteSelected() {
+        hupaController.showTopLoading("Deleting...");
+        SingleSelectionModel<LabelNode> selectionModel = display.getSelectionModel();
+        LabelNode labelNode = selectionModel.getSelectedObject();
+        DeleteFolderRequest req = rf.deleteFolderRequest();
+        DeleteFolderAction action = req.create(DeleteFolderAction.class);
+        final ImapFolder f = req.create(ImapFolder.class);
+        f.setFullName(labelNode.getFolder().getFullName());
+        action.setFolder(f);
+        req.delete(action).fire(new Receiver<GenericResult>() {
+            @Override
+            public void onSuccess(GenericResult response) {
+                hupaController.hideTopLoading();
+                display.refresh();
+                hupaController.showNotice("The label \"" + f.getFullName() + "\" was deleted.", 10000);
+            }
+            @Override
+            public void onFailure(ServerFailure error) {
+                hupaController.hideTopLoading();
+                hupaController.showNotice(error.getMessage(), 10000);
+            }
+        });
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/FolderListActivity.java Thu Mar 20 08:16:02 2014
@@ -30,37 +30,37 @@ import com.google.inject.Inject;
 
 public class FolderListActivity extends AppBaseActivity {
 
-	@Inject private Displayable display;
+    @Inject private Displayable display;
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		bindTo(eventBus);
-	}
-	
-	private Timer refreshFoldersTimer = new Timer() {
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+        bindTo(eventBus);
+    }
+
+    private Timer refreshFoldersTimer = new Timer() {
         public void run() {
            eventBus.fireEvent(new RefreshFoldersEvent());
         }
     };
 
-	private void bindTo(EventBus eventBus) {
-		eventBus.addHandler(RefreshFoldersEvent.TYPE, new RefreshFoldersEventHandler() {
-			@Override
-			public void onRefreshEvent(RefreshFoldersEvent event) {
-				display.refresh();
-			}
-		});
+    private void bindTo(EventBus eventBus) {
+        eventBus.addHandler(RefreshFoldersEvent.TYPE, new RefreshFoldersEventHandler() {
+            @Override
+            public void onRefreshEvent(RefreshFoldersEvent event) {
+                display.refresh();
+            }
+        });
         refreshFoldersTimer.scheduleRepeating(3*60*1000);
-	}
-	
-	@Override
-	public void onStop() {
-	    super.onStop();
-	    refreshFoldersTimer.cancel();
-	}
-
-	public interface Displayable extends IsWidget {
-		void refresh();
-	}
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        refreshFoldersTimer.cancel();
+    }
+
+    public interface Displayable extends IsWidget {
+        void refresh();
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelListActivity.java Thu Mar 20 08:16:02 2014
@@ -44,70 +44,70 @@ import com.google.web.bindery.requestfac
 
 public class LabelListActivity extends AppBaseActivity {
 
-	@Inject private HupaController hupaController;
-	@Inject private Displayable display;
-	@Inject private LabelPropertiesActivity.Displayable labelProperties;
-
-
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		bindTo(eventBus);
-	}
-
-	private void bindTo(final EventBus eventBus) {
-		this.registerHandler(display.getDelete().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				if (Window.confirm("Are you sure?")) {
-					eventBus.fireEvent(new DeleteFolderEvent());
-				}
-			}
-		}));
-		eventBus.addHandler(DeleteFolderEvent.TYPE, new DeleteFolderEventHandler() {
-			@Override
-			public void onDeleteFolderEvent(DeleteFolderEvent event) {
-				deleteSelected();
-			}
-		});
-		eventBus.addHandler(RefreshLabelListEvent.TYPE, new RefreshLabelListEventHandler(){
-			@Override
-			public void onRefreshEvent(RefreshLabelListEvent event) {
-				display.refresh();
-			}
-		});
-	}
-
-	public interface Displayable extends IsWidget {
-		final int CASCADE_TYPE_ADD = 0x01;
-		final int CASCADE_TYPE_RENAME = 0x02;
-		SingleSelectionModel<LabelNode> getSelectionModel();
-		HasClickHandlers getAdd();
-		HasClickHandlers getDelete();
-		void refresh();
-	}
-
-	public void deleteSelected() {
-		hupaController.showTopLoading("Deleting...");
-		SingleSelectionModel<LabelNode> selectionModel = display.getSelectionModel();
-		LabelNode labelNode = selectionModel.getSelectedObject();
-		DeleteFolderRequest req = rf.deleteFolderRequest();
-		DeleteFolderAction action = req.create(DeleteFolderAction.class);
-		final ImapFolder f = req.create(ImapFolder.class);
-		f.setFullName(labelNode.getFolder().getFullName());
-		action.setFolder(f);
-		req.delete(action).fire(new Receiver<GenericResult>() {
-			@Override
-			public void onSuccess(GenericResult response) {
-				hupaController.hideTopLoading();
-				display.refresh();
-				hupaController.showNotice("The label \"" + f.getFullName() + "\" was deleted.", 10000);
-			}
-			@Override
-			public void onFailure(ServerFailure error) {
-				hupaController.hideTopLoading();
-				hupaController.showNotice(error.getMessage(), 10000);
-			}
-		});
-	}
+    @Inject private HupaController hupaController;
+    @Inject private Displayable display;
+    @Inject private LabelPropertiesActivity.Displayable labelProperties;
+
+
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+        bindTo(eventBus);
+    }
+
+    private void bindTo(final EventBus eventBus) {
+        this.registerHandler(display.getDelete().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                if (Window.confirm("Are you sure?")) {
+                    eventBus.fireEvent(new DeleteFolderEvent());
+                }
+            }
+        }));
+        eventBus.addHandler(DeleteFolderEvent.TYPE, new DeleteFolderEventHandler() {
+            @Override
+            public void onDeleteFolderEvent(DeleteFolderEvent event) {
+                deleteSelected();
+            }
+        });
+        eventBus.addHandler(RefreshLabelListEvent.TYPE, new RefreshLabelListEventHandler(){
+            @Override
+            public void onRefreshEvent(RefreshLabelListEvent event) {
+                display.refresh();
+            }
+        });
+    }
+
+    public interface Displayable extends IsWidget {
+        final int CASCADE_TYPE_ADD = 0x01;
+        final int CASCADE_TYPE_RENAME = 0x02;
+        SingleSelectionModel<LabelNode> getSelectionModel();
+        HasClickHandlers getAdd();
+        HasClickHandlers getDelete();
+        void refresh();
+    }
+
+    public void deleteSelected() {
+        hupaController.showTopLoading("Deleting...");
+        SingleSelectionModel<LabelNode> selectionModel = display.getSelectionModel();
+        LabelNode labelNode = selectionModel.getSelectedObject();
+        DeleteFolderRequest req = rf.deleteFolderRequest();
+        DeleteFolderAction action = req.create(DeleteFolderAction.class);
+        final ImapFolder f = req.create(ImapFolder.class);
+        f.setFullName(labelNode.getFolder().getFullName());
+        action.setFolder(f);
+        req.delete(action).fire(new Receiver<GenericResult>() {
+            @Override
+            public void onSuccess(GenericResult response) {
+                hupaController.hideTopLoading();
+                display.refresh();
+                hupaController.showNotice("The label \"" + f.getFullName() + "\" was deleted.", 10000);
+            }
+            @Override
+            public void onFailure(ServerFailure error) {
+                hupaController.hideTopLoading();
+                hupaController.showNotice(error.getMessage(), 10000);
+            }
+        });
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LabelPropertiesActivity.java Thu Mar 20 08:16:02 2014
@@ -31,15 +31,15 @@ import com.google.inject.Inject;
 
 public class LabelPropertiesActivity extends AppBaseActivity {
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+    }
 
-	@Inject private Displayable display;
+    @Inject private Displayable display;
 
-	public interface Displayable extends IsWidget {
-		void cascade(LabelNode labelNode, List<LabelNode> list, int cascadeTypeAdd);
-		HasClickHandlers getSave();
-	}
+    public interface Displayable extends IsWidget {
+        void cascade(LabelNode labelNode, List<LabelNode> list, int cascadeTypeAdd);
+        HasClickHandlers getSave();
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java Thu Mar 20 08:16:02 2014
@@ -44,13 +44,13 @@ import com.google.web.bindery.requestfac
 import com.google.web.bindery.requestfactory.shared.ServerFailure;
 
 public class LoginActivity extends AppBaseActivity {
-    
+
 
     @Inject private HupaLayoutable hupaLayout;
     @Inject private Displayable display;
     @Inject private HupaConstants constants;
     @Inject private HupaStorage storage;
-    
+
     private Settings settings;
 
     @Override
@@ -72,24 +72,24 @@ public class LoginActivity extends AppBa
         if (user.isEmpty() || pass.isEmpty())
             return;
         display.setLoading(true);
-        
+
         LoginUserRequest loginRequest = rf.loginRequest();
         if (settings != null) {
              settings = display.getSettings(loginRequest.edit(settings));
         }
-        
+
         loginRequest.login(user, pass, settings).fire(new Receiver<User>() {
             @Override
             public void onSuccess(User response) {
                 HupaController.user = response;
-                
+
                 RootLayoutPanel.get().clear();
                 RootLayoutPanel.get().add(hupaLayout.get());
                 pc.goTo(new FolderPlace(response.getSettings().getInboxFolderName()));
-                
+
                 eventBus.fireEvent(new LoginEvent(response));
                 display.setLoading(false);
-                
+
                 storage.saveSettings(user, settings);
             }
             @Override
@@ -109,7 +109,7 @@ public class LoginActivity extends AppBa
         public Widget asWidget();
         void setSettings(Settings s);
     }
-    
+
     public void loadSettings() {
       System.out.println("Load settings");
       String email = display.getUserNameValue().getValue();

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LogoActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LogoActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LogoActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LogoActivity.java Thu Mar 20 08:16:02 2014
@@ -26,12 +26,12 @@ import com.google.inject.Inject;
 
 public class LogoActivity extends AppBaseActivity {
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+    }
 
-	@Inject private Displayable display;
-	
-	public interface Displayable extends IsWidget {}
+    @Inject private Displayable display;
+
+    public interface Displayable extends IsWidget {}
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageContentActivity.java Thu Mar 20 08:16:02 2014
@@ -54,134 +54,134 @@ import com.google.web.bindery.requestfac
 
 public class MessageContentActivity extends AppBaseActivity {
 
-	private static final Logger log = Logger.getLogger(MessageContentActivity.class.getName());
+    private static final Logger log = Logger.getLogger(MessageContentActivity.class.getName());
 
-	@Inject private Displayable display;
+    @Inject private Displayable display;
     @Inject private ToolBarActivity.Displayable toolBar;
-	
-	private String folder;
-	private String uid;
-	private MessageDetails details;
-	
-	public MessageContentActivity() {
+
+    private String folder;
+    private String uid;
+    private MessageDetails details;
+
+    public MessageContentActivity() {
        exportJSMethods(this);
     }
-	
-	@Override
-	public void start(AcceptsOneWidget container, final EventBus eventBus) {
-		bindTo(eventBus);
-		if (isUidSet()) {
+
+    @Override
+    public void start(AcceptsOneWidget container, final EventBus eventBus) {
+        bindTo(eventBus);
+        if (isUidSet()) {
             hc.showTopLoading("Loading... ");
             display.clearContent();
-			GetMessageDetailsRequest req = rf.messageDetailsRequest();
-			GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
-			final ImapFolder f = req.create(ImapFolder.class);
-			f.setFullName(folder);
-			action.setFolder(f);
-			action.setUid(Long.parseLong(uid));
-
-			final String id = uid; 
-			req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
-				@Override
-				public void onSuccess(GetMessageDetailsResult response) {
-				    if (!id.equals(uid)) {
-				        return;
-				    }
+            GetMessageDetailsRequest req = rf.messageDetailsRequest();
+            GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
+            final ImapFolder f = req.create(ImapFolder.class);
+            f.setFullName(folder);
+            action.setFolder(f);
+            action.setUid(Long.parseLong(uid));
+
+            final String id = uid;
+            req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
+                @Override
+                public void onSuccess(GetMessageDetailsResult response) {
+                    if (!id.equals(uid)) {
+                        return;
+                    }
                     hc.hideTopLoading();
-		            eventBus.fireEvent(new MessageViewEvent(response.getMessageDetails()));
+                    eventBus.fireEvent(new MessageViewEvent(response.getMessageDetails()));
 
-		            details = response.getMessageDetails();
-					display.fillMessageContent(details.getText(), false);
-					
-					List<MessageAttachment> attaches = details.getMessageAttachments();
-					if (attaches != null && !attaches.isEmpty()) {
-						display.setAttachments(attaches, folder, Long.parseLong(uid));
-					}
-				}
+                    details = response.getMessageDetails();
+                    display.fillMessageContent(details.getText(), false);
 
-				@Override
-				public void onFailure(ServerFailure error) {
+                    List<MessageAttachment> attaches = details.getMessageAttachments();
+                    if (attaches != null && !attaches.isEmpty()) {
+                        display.setAttachments(attaches, folder, Long.parseLong(uid));
+                    }
+                }
+
+                @Override
+                public void onFailure(ServerFailure error) {
                     hc.hideTopLoading();
                     toolBar.enableAllTools(false);
-					if (error.isFatal()) {
-						hc.showNotice(error.getMessage(), 10000);
-					}
-				}
-			});
-		}
-		container.setWidget(display.asWidget());
-	}
-
-	private void bindTo(EventBus eventBus) {
-		eventBus.addHandler(ShowRawEvent.TYPE, new ShowRawEventHandler() {
-			@Override
-			public void onShowRaw(ShowRawEvent event) {
-				String message_url = GWT.getModuleBaseURL() + SConsts.SERVLET_SOURCE + "?" + SConsts.PARAM_UID + "="
-						+ uid + "&" + SConsts.PARAM_FOLDER + "=" + folder;
-				Window.open(message_url, "_blank", "");
-			}
-		});
-		eventBus.addHandler(RefreshFoldersEvent.TYPE, new RefreshFoldersEventHandler() {
+                    if (error.isFatal()) {
+                        hc.showNotice(error.getMessage(), 10000);
+                    }
+                }
+            });
+        }
+        container.setWidget(display.asWidget());
+    }
+
+    private void bindTo(EventBus eventBus) {
+        eventBus.addHandler(ShowRawEvent.TYPE, new ShowRawEventHandler() {
+            @Override
+            public void onShowRaw(ShowRawEvent event) {
+                String message_url = GWT.getModuleBaseURL() + SConsts.SERVLET_SOURCE + "?" + SConsts.PARAM_UID + "="
+                        + uid + "&" + SConsts.PARAM_FOLDER + "=" + folder;
+                Window.open(message_url, "_blank", "");
+            }
+        });
+        eventBus.addHandler(RefreshFoldersEvent.TYPE, new RefreshFoldersEventHandler() {
             public void onRefreshEvent(RefreshFoldersEvent event) {
                 display.clearContent();
             }
         });
-	}
-	
-	private boolean isUidSet() {
-		return uid != null && uid.matches("\\d+");
-	}
+    }
 
-	public interface Displayable extends IsWidget {
-		void clearContent();
+    private boolean isUidSet() {
+        return uid != null && uid.matches("\\d+");
+    }
+
+    public interface Displayable extends IsWidget {
+        void clearContent();
         void setAttachments(List<MessageAttachment> attachements, String folder, long uid);
-		HasHTML getMessageHTML();
+        HasHTML getMessageHTML();
         void fillMessageContent(String messageDetail, boolean isEditable);
-	}
+    }
+
+    public Activity with(TokenWrapper tokenWrapper) {
+        folder = tokenWrapper.getFolder();
+        uid = tokenWrapper.getUid();
+        return this;
+    }
+
+    public void openLink(String url) {
+        Window.open(url, "_blank", "");
+    }
+
+    public void mailTo(String mailto) {
+        pc.goTo(new ComposePlace("new").with(new Parameters(null, null, null, null)));
+        eventBus.fireEvent(new MailToEvent(mailto));
+    }
 
-	public Activity with(TokenWrapper tokenWrapper) {
-		folder = tokenWrapper.getFolder();
-		uid = tokenWrapper.getUid();
-		return this;
-	}
-
-	public void openLink(String url) {
-		Window.open(url, "_blank", "");
-	}
-
-	public void mailTo(String mailto) {
-		pc.goTo(new ComposePlace("new").with(new Parameters(null, null, null, null)));
-		eventBus.fireEvent(new MailToEvent(mailto));
-	}
-	
-	private String getHeader(String key) {
+    private String getHeader(String key) {
         for (MailHeader h : details.getMailHeaders()) {
             if (h.getName().equals(key)) {
                 return h.getValue();
             }
         }
         return null;
-	}
-    
+    }
+
     private boolean isSenderMessage() {
         String from = getHeader("From");
         return from != null && from.contains(HupaController.user.getName())
               || folder.equals(HupaController.user.getSettings().getSentFolderName());
     }
 
-	protected native void exportJSMethods(MessageContentActivity activity)
-	/*-{
-	   $wnd.openLink = function(url) {
-    	   try {
-    	       activity.@org.apache.hupa.client.activity.MessageContentActivity::openLink(Ljava/lang/String;) (url);
-    	   } catch(e) {}
-	       return false;
-	   };
-	   $wnd.mailTo = function(mail) {
-    	   try {
-    	       activity.@org.apache.hupa.client.activity.MessageContentActivity::mailTo(Ljava/lang/String;) (mail);
-    	   } catch(e) {}
-	       return false;
-	   };
+    protected native void exportJSMethods(MessageContentActivity activity)
+    /*-{
+       $wnd.openLink = function(url) {
+           try {
+               activity.@org.apache.hupa.client.activity.MessageContentActivity::openLink(Ljava/lang/String;) (url);
+           } catch(e) {}
+           return false;
+       };
+       $wnd.mailTo = function(mail) {
+           try {
+               activity.@org.apache.hupa.client.activity.MessageContentActivity::mailTo(Ljava/lang/String;) (mail);
+           } catch(e) {}
+           return false;
+       };
    }-*/;
 }

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=1579559&r1=1579558&r2=1579559&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 Mar 20 08:16:02 2014
@@ -73,56 +73,56 @@ import com.google.web.bindery.requestfac
 
 public class MessageListActivity extends AppBaseActivity {
 
-	@Inject protected Displayable display;
-	@Inject protected ToolBarActivity.Displayable toolBar;
+    @Inject protected Displayable display;
+    @Inject protected ToolBarActivity.Displayable toolBar;
     @Inject protected HupaStorage hupaStorage;
 
     protected String folderName;
-	protected User user;
-	FetchMessagesResult currentFechResult;
-	Promise gettingMessages;
-
-	boolean first = true;
-	
-	@Inject
-	public MessageListActivity(EventBus eventBus) {
-	    bindTo(eventBus);
+    protected User user;
+    FetchMessagesResult currentFechResult;
+    Promise gettingMessages;
+
+    boolean first = true;
+
+    @Inject
+    public MessageListActivity(EventBus eventBus) {
+        bindTo(eventBus);
     }
-	
+
     private Timer refreshMessagesTimer = new Timer() {
         public void run() {
             display.refresh();
         }
     };
-    
+
     @Override
     public void onStop() {
         super.onStop();
         refreshMessagesTimer.cancel();
-    }    
-	
-	@Override
-	public void start(AcceptsOneWidget container, final EventBus eventBus) {
-	    refreshMessagesTimer.scheduleRepeating(5*60*1000);
-	    
-		container.setWidget(display.asWidget());
-		if (!first) {
-			display.refresh();
-			first = false;
-		}
-		rf.sessionRequest().getUser().fire(new Receiver<User>() {
-			@Override
-			public void onSuccess(User u) {
-				if (u == null) {
-					onFailure(null);
-				} else {
-					user = u;
-				}
-			}
-			@Override
-			public void onFailure(ServerFailure error) {
-			}
-		});
+    }
+
+    @Override
+    public void start(AcceptsOneWidget container, final EventBus eventBus) {
+        refreshMessagesTimer.scheduleRepeating(5*60*1000);
+
+        container.setWidget(display.asWidget());
+        if (!first) {
+            display.refresh();
+            first = false;
+        }
+        rf.sessionRequest().getUser().fire(new Receiver<User>() {
+            @Override
+            public void onSuccess(User u) {
+                if (u == null) {
+                    onFailure(null);
+                } else {
+                    user = u;
+                }
+            }
+            @Override
+            public void onFailure(ServerFailure error) {
+            }
+        });
         this.registerHandler(display.getGrid().addCellPreviewHandler(new Handler<Message>() {
             @Override
             public void onCellPreview(final CellPreviewEvent<Message> event) {
@@ -130,10 +130,10 @@ public class MessageListActivity extends
                     onMessageSelected(event.getValue());
                 }
             }
-        }));  		
-	}
-	
-	protected void onMessageSelected(Message message) {
+        }));
+    }
+
+    protected void onMessageSelected(Message message) {
         antiSelectMessages(display.getGrid().getVisibleItems());
         GetMessageDetailsRequest req = rf.messageDetailsRequest();
         GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
@@ -149,91 +149,91 @@ public class MessageListActivity extends
         toolBar.enableDealingTools(true);
         ToolBarView.Parameters p = new ToolBarView.Parameters(user, folderName, message, null);
         toolBar.setParameters(p);
-        
+
         // display.refresh();
 //        eventBus.fireEvent(new RefreshFoldersEvent(event.getValue()));
-	    
-	}
-	
+
+    }
+
     private String getToken(Message message) {
         String token = folderName + AbstractPlace.SPLITTER + message.getUid();
         return token;
     }
-    
-	private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) {
-		return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
-	}
-
-	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() {
-			@Override
-			public void onRefresh(RefreshMessagesEvent event) {
-				display.setSearchValue(event.getSearchValue());
-				display.refresh();
-				System.out.println("REFRESH DISPLAY");
-			}
-		});
-
-		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();
-				// TODO can move more than one message once.
-				if (uids.isEmpty() || uids.size() > 1) {
-					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 RefreshFoldersEvent());
-						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);
-					}
-
-				});
-			}
-
-		});
-		
-		eventBus.addHandler(MessageViewEvent.TYPE, new MessageViewEventHandler() {
+
+    private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) {
+        return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
+    }
+
+    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() {
+            @Override
+            public void onRefresh(RefreshMessagesEvent event) {
+                display.setSearchValue(event.getSearchValue());
+                display.refresh();
+                System.out.println("REFRESH DISPLAY");
+            }
+        });
+
+        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();
+                // TODO can move more than one message once.
+                if (uids.isEmpty() || uids.size() > 1) {
+                    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 RefreshFoldersEvent());
+                        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);
+                    }
+
+                });
+            }
+
+        });
+
+        eventBus.addHandler(MessageViewEvent.TYPE, new MessageViewEventHandler() {
             public void onMessageViewEvent(final MessageViewEvent event) {
                 if (event.messageDetails != null && gettingMessages != null) {
                     gettingMessages.done(new Function() {
@@ -257,14 +257,14 @@ public class MessageListActivity extends
                                     toolBar.setParameters(p);
                                     break;
                                 }
-                            }                            
+                            }
                         }
                     });
                 }
             }
         });
-		
-		eventBus.addHandler(MessageListRangeChangedEvent.TYPE, new MessageListRangeChangedEventHandler() {
+
+        eventBus.addHandler(MessageListRangeChangedEvent.TYPE, new MessageListRangeChangedEventHandler() {
             public void onRangeChangedEvent(MessageListRangeChangedEvent event) {
                 gettingMessages = hupaStorage
                 .gettingMessages(true, folderName, event.start, event.size, event.search)
@@ -285,52 +285,52 @@ public class MessageListActivity extends
                     public void f() {
                         hc.hideTopLoading();
                     }
-                });                
-                
+                });
+
             }
         });
 
-	}
+    }
 
-	public MessageListActivity with(String folderName) {
-		this.folderName = folderName;
-		return this;
-	}
+    public MessageListActivity with(String folderName) {
+        this.folderName = folderName;
+        return this;
+    }
 
-	public interface Displayable extends IsWidget {
-		MessagesCellTable getGrid();
+    public interface Displayable extends IsWidget {
+        MessagesCellTable getGrid();
 
-		void refresh();
+        void refresh();
 
-		List<Long> getSelectedMessagesIds();
+        List<Long> getSelectedMessagesIds();
 
-		Set<Message> getSelectedMessages();
+        Set<Message> getSelectedMessages();
 
-		void setSearchValue(String searchValue);
+        void setSearchValue(String searchValue);
 
         MessageListDataProvider getDataProvider();
-	}
+    }
+
+    private void antiSelectMessages(Collection<Message> c) {
+        toolBar.enableAllTools(false);
+        for (Message msg : c) {
+            if (!display.getGrid().getSelectionModel().isSelected(msg))
+                continue;
+            display.getGrid().getSelectionModel().setSelected(msg, false);
+        }
+    }
+    private void deleteSelectedMessages() {
+        final List<Long> uids = display.getSelectedMessagesIds();
 
-	private void antiSelectMessages(Collection<Message> c) {
-		toolBar.enableAllTools(false);
-		for (Message msg : c) {
-			if (!display.getGrid().getSelectionModel().isSelected(msg))
-				continue;
-			display.getGrid().getSelectionModel().setSelected(msg, false);
-		}
-	}
-	private void deleteSelectedMessages() {
-		final List<Long> uids = display.getSelectedMessagesIds();
-		
-		if (uids.size() > 1) {
+        if (uids.size() > 1) {
             Dialog.confirm("Do you want to delete selected messages?", new Command() {
                 public void execute() {
                     doDelete(uids);
                 }
             });
-		}
-		
-	}
+        }
+
+    }
 
     protected void doDelete(final List<Long> uids) {
         hc.showTopLoading("Deleting...");
@@ -341,36 +341,36 @@ public class MessageListActivity extends
         } else {
             fullName = ((MessagePlace) pc.getWhere()).getTokenWrapper().getFolder();
         }
-        
+
         DeleteMessageByUidRequest req = rf.deleteMessageByUidRequest();
-		DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class);
-		ImapFolder f = req.create(ImapFolder.class);
-		f.setFullName(fullName);
-		action.setMessageUids(uids);
-		action.setFolder(f);
-		req.delete(action).fire(new Receiver<DeleteMessageResult>() {
-			@Override
-			public void onSuccess(DeleteMessageResult response) {
-				antiSelectMessages(display.getSelectedMessages());
-				display.refresh();
-				hc.hideTopLoading();
+        DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class);
+        ImapFolder f = req.create(ImapFolder.class);
+        f.setFullName(fullName);
+        action.setMessageUids(uids);
+        action.setFolder(f);
+        req.delete(action).fire(new Receiver<DeleteMessageResult>() {
+            @Override
+            public void onSuccess(DeleteMessageResult response) {
+                antiSelectMessages(display.getSelectedMessages());
+                display.refresh();
+                hc.hideTopLoading();
                 pc.goTo(new FolderPlace(folderName));
-				eventBus.fireEvent(new RefreshFoldersEvent());
+                eventBus.fireEvent(new RefreshFoldersEvent());
                 for (Long uid : uids) {
                     removeMessage(uid);
                 }
                 display.getDataProvider().setFechMessagesResult(currentFechResult);
 //                display.getGrid().getRowElement(0).scrollIntoView();
-			}
-			
-			@Override
-			public void onFailure(ServerFailure error) {
-			    hc.hideTopLoading();
-			    hc.showNotice("Error removing messages", 5000);
-			    super.onFailure(error);
-			}
-			
-			private void removeMessage(Long uid) {
+            }
+
+            @Override
+            public void onFailure(ServerFailure error) {
+                hc.hideTopLoading();
+                hc.showNotice("Error removing messages", 5000);
+                super.onFailure(error);
+            }
+
+            private void removeMessage(Long uid) {
                 List<Message> messages = currentFechResult.getMessages();
                 int l = messages.size();
                 for (int i = 0; i < l; i++){
@@ -380,11 +380,11 @@ public class MessageListActivity extends
                         return;
                     }
                 }
-			}
-		});
+            }
+        });
     }
-	
-	
+
+
     // TODO move this stuff to hupaStorage
     private void cacheContacts() {
         for (Message message : currentFechResult.getMessages()) {
@@ -405,7 +405,7 @@ public class MessageListActivity extends
         }
         saveToLocalStorage(contacts);
     }
-    
+
     private void saveToLocalStorage(Set<String> contacts) {
         contactsStore = Storage.getLocalStorageIfSupported();
         if (contactsStore != null) {
@@ -418,7 +418,7 @@ public class MessageListActivity extends
             contactsStore.setItem(CONTACTS_STORE, contacts.toString());
         }
     }
-    
+
     public static final String CONTACTS_STORE = "hupa-contacts";
     Set<String> contacts = new LinkedHashSet<String>();
     private Storage contactsStore = null;

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=1579559&r1=1579558&r2=1579559&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 Mar 20 08:16:02 2014
@@ -34,30 +34,30 @@ import com.google.inject.Inject;
 
 public class MessageListFooterActivity extends AppBaseActivity {
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		bindTo(eventBus);
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+        bindTo(eventBus);
+    }
 
-	private void bindTo(final EventBus eventBus) {
-		final ListBox labels = display.getLabels();
-		labels.addChangeHandler(new ChangeHandler() {
-			public void onChange(ChangeEvent event) {
-				int selectedIndex = labels.getSelectedIndex();
-				if (selectedIndex > 0){
-					String newFolderName = labels.getItemText(labels.getSelectedIndex()).replace(".", "").trim();
-					eventBus.fireEvent(new MoveMessageEvent(new ImapFolderImpl(newFolderName)));
-				}
-			}
-		});
-	}
+    private void bindTo(final EventBus eventBus) {
+        final ListBox labels = display.getLabels();
+        labels.addChangeHandler(new ChangeHandler() {
+            public void onChange(ChangeEvent event) {
+                int selectedIndex = labels.getSelectedIndex();
+                if (selectedIndex > 0){
+                    String newFolderName = labels.getItemText(labels.getSelectedIndex()).replace(".", "").trim();
+                    eventBus.fireEvent(new MoveMessageEvent(new ImapFolderImpl(newFolderName)));
+                }
+            }
+        });
+    }
 
-	@Inject private Displayable display;
-	
-	public interface Displayable extends IsWidget {
-		SimplePager getPager();
-		HasVisibility getLabelsPanel();
-		ListBox getLabels();
-	}
+    @Inject private Displayable display;
+
+    public interface Displayable extends IsWidget {
+        SimplePager getPager();
+        HasVisibility getLabelsPanel();
+        ListBox getLabels();
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NavigationActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NavigationActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NavigationActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NavigationActivity.java Thu Mar 20 08:16:02 2014
@@ -29,24 +29,24 @@ import com.google.inject.Inject;
 
 public class NavigationActivity extends AppBaseActivity {
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		itemChangeByPlace();
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+        itemChangeByPlace();
+    }
 
-	private void itemChangeByPlace() {
-		Place place = pc.getWhere();
-		if (place instanceof SettingPlace) {
-			display.select(2);
-		} else {
-			display.select(1);
-		}
-	}
+    private void itemChangeByPlace() {
+        Place place = pc.getWhere();
+        if (place instanceof SettingPlace) {
+            display.select(2);
+        } else {
+            display.select(1);
+        }
+    }
 
-	@Inject private Displayable display;
+    @Inject private Displayable display;
 
-	public interface Displayable extends IsWidget {
-		void select(int i);
-	}
+    public interface Displayable extends IsWidget {
+        void select(int i);
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NotificationActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NotificationActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NotificationActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/NotificationActivity.java Thu Mar 20 08:16:02 2014
@@ -26,15 +26,15 @@ import com.google.inject.Inject;
 
 public class NotificationActivity extends AppBaseActivity {
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+    }
 
-	@Inject private Displayable display;
+    @Inject private Displayable display;
 
-	public interface Displayable extends IsWidget {
-		void hideNotification();
-		void notice(String html);
-	}
+    public interface Displayable extends IsWidget {
+        void hideNotification();
+        void notice(String html);
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SearchBoxActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SearchBoxActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SearchBoxActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SearchBoxActivity.java Thu Mar 20 08:16:02 2014
@@ -35,14 +35,14 @@ import com.google.inject.Inject;
 
 public class SearchBoxActivity extends AppBaseActivity {
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		bindTo(eventBus);
-		container.setWidget(display.asWidget());
-		
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        bindTo(eventBus);
+        container.setWidget(display.asWidget());
 
-	private void bindTo(final EventBus eventBus) {
+    }
+
+    private void bindTo(final EventBus eventBus) {
 
         registerHandler(display.getSearchClick().addClickHandler(new ClickHandler() {
 
@@ -66,15 +66,15 @@ public class SearchBoxActivity extends A
 //            }
 //
 //        }));
-	}
+    }
 
-	@Inject private Displayable display;
+    @Inject private Displayable display;
 
-	public interface Displayable extends IsWidget {
-		HasClickHandlers getSearchClick();
+    public interface Displayable extends IsWidget {
+        HasClickHandlers getSearchClick();
 
-		HasValue<String> getSearchValue();
+        HasValue<String> getSearchValue();
 
-		void fillSearchOracle(List<Message> messages);
-	}
+        void fillSearchOracle(List<Message> messages);
+    }
 }

Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SettingNavActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SettingNavActivity.java?rev=1579559&r1=1579558&r2=1579559&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SettingNavActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/SettingNavActivity.java Thu Mar 20 08:16:02 2014
@@ -33,29 +33,29 @@ public class SettingNavActivity extends 
 
     @Inject protected Displayable display;
 
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		itemChangeByPlace();
-		bindTo(eventBus);
-	}
+    @Override
+    public void start(AcceptsOneWidget container, EventBus eventBus) {
+        container.setWidget(display.asWidget());
+        itemChangeByPlace();
+        bindTo(eventBus);
+    }
 
-	protected void itemChangeByPlace() {
+    protected void itemChangeByPlace() {
         display.singleSelect(1);
-	}
+    }
 
-	protected void bindTo(EventBus eventBus) {
-		registerHandler(display.getLabelsAchor().addClickHandler(new ClickHandler() {
-			@Override
-			public void onClick(ClickEvent event) {
-				display.singleSelect(1);
-				pc.goTo(new SettingPlace("labels"));
-			}
-		}));
-	}
+    protected void bindTo(EventBus eventBus) {
+        registerHandler(display.getLabelsAchor().addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                display.singleSelect(1);
+                pc.goTo(new SettingPlace("labels"));
+            }
+        }));
+    }
 
-	public interface Displayable extends IsWidget {
-		HasClickHandlers getLabelsAchor();
-		void singleSelect(int i);
-	}
+    public interface Displayable extends IsWidget {
+        HasClickHandlers getLabelsAchor();
+        void singleSelect(int i);
+    }
 }



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