Remove unused source files

git-svn-id: https://svn.apache.org/repos/asf/james/hupa/trunk@1526135 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/client/src/main/java/org/apache/hupa/client/CachingDispatchAsync.java b/client/src/main/java/org/apache/hupa/client/CachingDispatchAsync.java
deleted file mode 100644
index 28d1e14..0000000
--- a/client/src/main/java/org/apache/hupa/client/CachingDispatchAsync.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.client;

-

-import java.util.HashMap;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import java.util.HashSet;

-import java.util.Map;

-

-import org.apache.hupa.shared.rpc.GetMessageDetails;

-

-import net.customware.gwt.dispatch.client.ExceptionHandler;

-import net.customware.gwt.dispatch.client.standard.StandardDispatchAsync;

-import net.customware.gwt.dispatch.shared.Action;

-import net.customware.gwt.dispatch.shared.Result;

-

-import com.google.gwt.core.client.GWT;

-import com.google.gwt.user.client.rpc.AsyncCallback;

-import com.google.inject.Inject;

-

-/**

- * Dispatcher which support caching of data in memory.

- * 

- * It also avoids simultaneous executions of the same action, which 

- * is very useful in development.

- * 

- */

-public class CachingDispatchAsync extends StandardDispatchAsync {

-

-    

-    @Inject

-    public CachingDispatchAsync(ExceptionHandler exceptionHandler) {

-        super(exceptionHandler);

-    }

-

-    private Map<Action<Result>, Result> cache = new HashMap<Action<Result>, Result>();

-    

-    private HashSet<Class<?>> running = new HashSet<Class<?>>();

-

-    @Override

-    public <A extends Action<R>, R extends Result> void execute(final A action,

-            final AsyncCallback<R> callback) {

-        

-        if (action instanceof GetMessageDetails) {

-            executeWithCache(action, callback);

-        } else {

-            if (GWT.isProdMode()) {

-                super.execute(action, callback);

-            } else {

-                executeOneRequestPerAction(action, callback);

-            }

-        }

-    }

-    

-    /**

-     * Avoid parallel executions of the same action

-     */

-    public <A extends Action<R>, R extends Result> void executeOneRequestPerAction (

-            final A action, final AsyncCallback<R> callback) {

-

-        final Class<?> clz = action.getClass();

-        if (running.contains(clz)) {

-            System.err.println("ATTENTION: avoiding a parallel execution of the action: " + action.getClass().getName());

-//            new RuntimeException().printStackTrace();

-            

-            return;

-        } else {

-            running.add(clz);

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-//            if (action instanceof FetchMessages) {

-//                new RuntimeException().printStackTrace();

-//            }

->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-            super.execute(action, new AsyncCallback<R>() {

-                public void onFailure(Throwable caught) {

-                    running.remove(clz);

-                    callback.onFailure(caught);

-                }

-                public void onSuccess(final R result) {

-                    running.remove(clz);

-                    callback.onSuccess(result);

-                }

-            });

-         }

-    }

-

-    /**

-     * If the Action was executed before it will get fetched from the cache

-=======
-=======
-import java.util.HashSet;

->>>>>>> constantly changed by manolo
-import java.util.Map;

-

-import org.apache.hupa.shared.rpc.GetMessageDetails;

-

-import net.customware.gwt.dispatch.client.ExceptionHandler;

-import net.customware.gwt.dispatch.client.standard.StandardDispatchAsync;

-import net.customware.gwt.dispatch.shared.Action;

-import net.customware.gwt.dispatch.shared.Result;

-

-import com.google.gwt.core.client.GWT;

-import com.google.gwt.user.client.rpc.AsyncCallback;

-import com.google.inject.Inject;

-

-/**

- * Dispatcher which support caching of data in memory.

- * 

- * It also avoids simultaneous executions of the same action, which 

- * is very useful in development.

- * 

- */

-public class CachingDispatchAsync extends StandardDispatchAsync {

-

-    

-    @Inject

-    public CachingDispatchAsync(ExceptionHandler exceptionHandler) {

-        super(exceptionHandler);

-    }

-

-    private Map<Action<Result>, Result> cache = new HashMap<Action<Result>, Result>();

-    

-    private HashSet<Class<?>> running = new HashSet<Class<?>>();

-

-    @Override

-    public <A extends Action<R>, R extends Result> void execute(final A action,

-            final AsyncCallback<R> callback) {

-        

-        if (action instanceof GetMessageDetails) {

-            executeWithCache(action, callback);

-        } else {

-            if (GWT.isProdMode()) {

-                super.execute(action, callback);

-            } else {

-                executeOneRequestPerAction(action, callback);

-            }

-        }

-    }

-    

-    /**

-     * Avoid parallel executions of the same action

-     */

-    public <A extends Action<R>, R extends Result> void executeOneRequestPerAction (

-            final A action, final AsyncCallback<R> callback) {

-

-        final Class<?> clz = action.getClass();

-        if (running.contains(clz)) {

-            System.err.println("ATTENTION: avoiding a parallel execution of the action: " + action.getClass().getName());

-//            new RuntimeException().printStackTrace();

-            

-            return;

-        } else {

-            running.add(clz);

-=======
-//            if (action instanceof FetchMessages) {

-//                new RuntimeException().printStackTrace();

-//            }

->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-            super.execute(action, new AsyncCallback<R>() {

-                public void onFailure(Throwable caught) {

-                    running.remove(clz);

-                    callback.onFailure(caught);

-                }

-                public void onSuccess(final R result) {

-                    running.remove(clz);

-                    callback.onSuccess(result);

-                }

-            });

-         }

-    }

-

-    /**

-<<<<<<< HEAD
-     * Execute the give Action. If the Action was executed before it will get fetched from the cache

-     * 

-     * @param <A> Action implementation

-     * @param <R> Result implementation

-     * @param action the action

-     * @param callback the callback

->>>>>>> first commit
-=======
-     * If the Action was executed before it will get fetched from the cache

->>>>>>> constantly changed by manolo
-     */

-    @SuppressWarnings("unchecked")

-    public <A extends Action<R>, R extends Result> void executeWithCache(

-            final A action, final AsyncCallback<R> callback) {

-        Result r = cache.get(action);

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-

-        final Class<?> clz = action.getClass();

-        if (running.contains(clz)) {

-            System.out.println("Contanins " + clz);

-            return;

-        } else {

-            System.out.println("new " + clz);

-            running.add(clz);

-        }

-        

-<<<<<<< HEAD
-        if (r != null) {

-            callback.onSuccess((R) r);

-        } else {

-            super.execute(action, new AsyncCallback<R>() {

-                public void onFailure(Throwable caught) {

-                    running.remove(clz);

-=======
-=======
->>>>>>> constantly changed by manolo
-        if (r != null) {

-            callback.onSuccess((R) r);

-        } else {

-            super.execute(action, new AsyncCallback<R>() {

-                public void onFailure(Throwable caught) {

-<<<<<<< HEAD
->>>>>>> first commit
-=======
-                    running.remove(clz);

->>>>>>> constantly changed by manolo
-                    callback.onFailure(caught);

-                }

-

-                public void onSuccess(R result) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-                    running.remove(clz);

-                    cache.put((Action<Result>) action, (Result) result);

-                    callback.onSuccess(result);

-                }

-=======
-                    cache.put((Action<Result>) action, (Result) result);

-                    callback.onSuccess(result);

-                }

-

->>>>>>> first commit
-=======
-                    running.remove(clz);

-                    cache.put((Action<Result>) action, (Result) result);

-                    callback.onSuccess(result);

-                }

->>>>>>> constantly changed by manolo
-            });

-        }

-    }

-

-    /**

-     * Clear the cache

-     */

-    public void clear() {

-        cache.clear();

-    }

-

-}

diff --git a/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageActivity.java b/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageActivity.java
deleted file mode 100644
index 06e9f1c..0000000
--- a/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageActivity.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.activity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-<<<<<<< HEAD
-import org.apache.hupa.client.CachingDispatchAsync;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.evo.HupaEvoCallback;
-=======
->>>>>>> other RFs
-import org.apache.hupa.client.place.IMAPMessagePlace;
-import org.apache.hupa.client.rf.DeleteMessageByUidRequest;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.shared.SConsts;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import org.apache.hupa.client.HupaEvoCallback;
-import org.apache.hupa.client.mvp.WidgetDisplayable;
-=======
-import org.apache.hupa.client.evo.HupaEvoCallback;
->>>>>>> Make the evo more clear.
-import org.apache.hupa.client.place.IMAPMessagePlace;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.shared.SConsts;
-import org.apache.hupa.shared.data.IMAPFolder;
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import org.apache.hupa.shared.data.Message;
-=======
->>>>>>> try to change fetch messages to use RF
-import org.apache.hupa.shared.data.MessageAttachment;
-import org.apache.hupa.shared.data.MessageDetails;
-=======
->>>>>>> try to get message details, problem is:
-=======
-import org.apache.hupa.shared.domain.DeleteMessageByUidAction;
-import org.apache.hupa.shared.domain.DeleteMessageResult;
->>>>>>> other RFs
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageAttachment;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.ForwardMessageEvent;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.ReplyMessageEvent;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.DeleteMessageByUid;
-import org.apache.hupa.shared.rpc.DeleteMessageResult;
-=======
->>>>>>> other RFs
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.inject.Inject;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-
-public class IMAPMessageActivity extends AppBaseActivity {
-
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		updateDisplay();
-		bind();
-		container.setWidget(display.asWidget());
-	}
-
-	public IMAPMessageActivity with(IMAPMessagePlace place) {
-		this.message = place.getMessage();
-		this.messageDetails = place.getMessageDetails();
-		this.folder = place.getFolder();
-		this.user = place.getUser();
-		return this;
-	}
-
-	private void updateDisplay() {
-		display.setAttachments(messageDetails.getMessageAttachments(), folder.getFullName(), message.getUid());
-		display.setHeaders(message);
-		display.setContent(messageDetails.getText());
-	}
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private void updateDisplay() {
-        display.setAttachments(messageDetails.getMessageAttachments(), folder.getFullName(),message.getUid());
-        display.setHeaders(message);
-        display.setContent(messageDetails.getText());
-    }
-    
-    protected void bind(){
-    	display.getDeleteButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                ArrayList<Long> uidList = new ArrayList<Long>();
-                uidList.add(message.getUid());
-//                dispatcher.execute(new DeleteMessageByUid(folder, uidList), new HupaEvoCallback<DeleteMessageResult>(dispatcher, eventBus) {
-//                    public void callback(DeleteMessageResult result) {
-//                        eventBus.fireEvent(new LoadMessagesEvent(user,folder));
-//                    }
-//                }); 
-            }
-
-        });
-    	display.getForwardButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new ForwardMessageEvent(user,folder,message, messageDetails));
-            }
-            
-        });
-    	display.getReplyButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, false));
-            }
-            
-        });
-    	display.getReplyAllButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, true));
-            }
-            
-        });
-    	display.getBackButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new BackEvent());
-            }
-            
-        });
-    	display.getShowRawMessageClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                String message_url = GWT.getModuleBaseURL() + SConsts.SERVLET_SOURCE + 
-                "?" + SConsts.PARAM_UID + "=" + message.getUid() + 
-                "&" + SConsts.PARAM_FOLDER + "=" + folder.getFullName();
-                Window.open(message_url, "_blank", "");
-            }
-            
-        });
-    	
-    }
-    
-    private MessageDetails messageDetails;
-    private Message message;
-<<<<<<< HEAD
-    private CachingDispatchAsync dispatcher;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-=======
-    private IMAPFolder folder;
->>>>>>> 1. improve the inbox folder place.
-=======
-    private IMAPFolderProxy folder;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-=======
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-    private ImapFolder folder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private User user;
-//    @Inject private CachingDispatchAsync dispatcher;
-    @Inject private Displayable display;
-    @Inject private EventBus eventBus;
-    @Inject private PlaceController placeController;
-	public interface Displayable extends WidgetDisplayable{
-        public void setHeaders(Message msg);
-        public void setAttachments(List<MessageAttachment> attachements, String folder,  long uid);
-        public void setContent(String content);
-        
-        public HasClickHandlers getShowRawMessageClick();
-        public HasClickHandlers getDeleteButtonClick();
-        public HasClickHandlers getReplyButtonClick();
-        public HasClickHandlers getReplyAllButtonClick();
-        public HasClickHandlers getForwardButtonClick();
-        public HasClickHandlers getBackButtonClick();
-=======
-=======
-	private void cloneFolder(ImapFolder desc, ImapFolder src) {
-	    desc.setChildren(src.getChildren());
-		desc.setDelimiter(src.getDelimiter());
-		desc.setFullName(src.getFullName());
-		desc.setMessageCount(src.getMessageCount());
-		desc.setName(src.getName());
-		desc.setSubscribed(src.getSubscribed());
-		desc.setUnseenMessageCount(src.getUnseenMessageCount());
-    }
->>>>>>> fix issue 14
-	protected void bind() {
-		registrations.add(display.getDeleteButtonClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				ArrayList<Long> uidList = new ArrayList<Long>();
-				uidList.add(message.getUid());
-				DeleteMessageByUidRequest req = requestFactory.deleteMessageByUidRequest();
-				DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class);
-				ImapFolder f = req.create(ImapFolder.class);
-				cloneFolder(f, folder);
-				action.setMessageUids(uidList);
-				action.setFolder(f);
-				req.delete(action).fire(new Receiver<DeleteMessageResult>() {
-					@Override
-					public void onSuccess(DeleteMessageResult response) {
-						eventBus.fireEvent(new LoadMessagesEvent(user, folder));
-					}
-				});
-			}
-
-		}));
-		registrations.add(display.getForwardButtonClick().addClickHandler(new ClickHandler() {
-
-			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new ForwardMessageEvent(user, folder, message, messageDetails));
-			}
-
-		}));
-		registrations.add(display.getReplyButtonClick().addClickHandler(new ClickHandler() {
-
-			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new ReplyMessageEvent(user, folder, message, messageDetails, false));
-			}
-
-		}));
-		registrations.add(display.getReplyAllButtonClick().addClickHandler(new ClickHandler() {
-
-			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new ReplyMessageEvent(user, folder, message, messageDetails, true));
-			}
-
-		}));
-		registrations.add(display.getBackButtonClick().addClickHandler(new ClickHandler() {
-
-			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new BackEvent());
-			}
-
-		}));
-		registrations.add(display.getShowRawMessageClick().addClickHandler(new ClickHandler() {
-
-			public void onClick(ClickEvent event) {
-				String message_url = GWT.getModuleBaseURL() + SConsts.SERVLET_SOURCE + "?" + SConsts.PARAM_UID + "="
-				        + message.getUid() + "&" + SConsts.PARAM_FOLDER + "=" + folder.getFullName();
-				Window.open(message_url, "_blank", "");
-			}
-
-		}));
-
-	}
-
-	private MessageDetails messageDetails;
-	private Message message;
-	private ImapFolder folder;
-	private User user;
-	@Inject private Displayable display;
-
-	public interface Displayable extends WidgetDisplayable {
-		public void setHeaders(Message msg);
-		public void setAttachments(List<MessageAttachment> attachements, String folder, long uid);
-		public void setContent(String content);
-		public HasClickHandlers getShowRawMessageClick();
-		public HasClickHandlers getDeleteButtonClick();
-		public HasClickHandlers getReplyButtonClick();
-		public HasClickHandlers getReplyAllButtonClick();
-		public HasClickHandlers getForwardButtonClick();
-		public HasClickHandlers getBackButtonClick();
->>>>>>> other RFs
-	}
-}
diff --git a/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java b/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
deleted file mode 100644
index d33859a..0000000
--- a/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java
+++ /dev/null
@@ -1,1333 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.activity;
-
-import java.util.ArrayList;
-import java.util.List;
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> fix the main part of issue 11 - delete selected messages.
-import java.util.Set;
-
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-import org.apache.hupa.client.place.FolderPlace;
-<<<<<<< HEAD
-import org.apache.hupa.client.place.MessageSendPlace;
-import org.apache.hupa.client.rf.DeleteMessageAllRequest;
-import org.apache.hupa.client.rf.DeleteMessageByUidRequest;
-import org.apache.hupa.client.rf.MoveMessageRequest;
-import org.apache.hupa.client.rf.SetFlagRequest;
-import org.apache.hupa.client.ui.MessagesCellTable;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
-import org.apache.hupa.shared.domain.DeleteMessageAllAction;
-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.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MoveMessageAction;
-import org.apache.hupa.shared.domain.SetFlagAction;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.DecreaseUnseenEvent;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.IncreaseUnseenEvent;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LogoutEvent;
-import org.apache.hupa.shared.events.LogoutEventHandler;
-import org.apache.hupa.shared.events.MessagesReceivedEvent;
-import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
-import org.apache.hupa.shared.events.MoveMessageEvent;
-import org.apache.hupa.shared.events.MoveMessageEventHandler;
-import org.apache.hupa.widgets.ui.HasEnable;
-
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasChangeHandlers;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.HasValue;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-
-public class IMAPMessageListActivity extends AppBaseActivity {
-
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		bind();
-		revealDisplay(user, folder, searchValue);
-		container.setWidget(display.asWidget());
-	}
-	private void bind() {
-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-			public void onLogout(LogoutEvent logoutEvent) {
-				IMAPMessageListActivity.this.display.reset();
-				IMAPMessageListActivity.this.display.getSearchValue().setValue("");
-			}
-		});
-		eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {
-			public void onMessagesReceived(MessagesReceivedEvent event) {
-				// fill the oracle
-				display.fillSearchOracle(event.getMessages());
-			}
-		});
-		registrations.add(display.getSearchClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				String searchValue = null;
-				if (display.getSearchValue().getValue().trim().length() > 0) {
-					searchValue = display.getSearchValue().getValue().trim();
-				}
-				eventBus.fireEvent(new LoadMessagesEvent(user, folder, searchValue));
-			}
-		}));
-		eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
-			public void onMoveMessageHandler(MoveMessageEvent event) {
-				final Message message = event.getMessage();
-				MoveMessageRequest req = rf.moveMessageRequest();
-<<<<<<< HEAD
-				MoveMessageAction action = req.create(MoveMessageAction.class);
-				ImapFolder newOne = req.create(ImapFolder.class);
-				ImapFolder oldOne = req.create(ImapFolder.class);
-				event.getNewFolder().setFolderTo(newOne);
-				event.getOldFolder().setFolderTo(oldOne);
-				action.setMessageUid(message.getUid());
-				action.setNewFolder(newOne);
-				action.setOldFolder(oldOne);
-				req.move(action).fire(new Receiver<GenericResult>() {
-					@Override
-					public void onSuccess(GenericResult response) {
-						List<Message> messageArray = new ArrayList<Message>();
-						messageArray.add(message);
-						display.removeMessages(messageArray);
-					}
-				});
-			}
-		});
-		registrations.add(display.getSelectAllClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.deselectAllMessages();
-				display.selectAllMessages();
-			}
-		}));
-		registrations.add(display.getSelectNoneClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.deselectAllMessages();
-			}
-		}));
-		registrations.add(display.getDeleteClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-			public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
-				if (folder.getFullName().equals(user.getSettings().getTrashFolderName())) {
-					display.getConfirmDeleteDialog().show();
-				} else {
-					deleteMessages();
-				}
-			}
-		}));
-		registrations.add(display.getConfirmDeleteDialogClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				deleteMessages();
-			}
-		}));
-		registrations.add(display.getNewClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-			public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
-				// eventBus.fireEvent(new NewMessageEvent());
-				pc.goTo(messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
-			}
-		}));
-		registrations.add(display.getDeleteAllClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.getConfirmDeleteAllDialog().center();
-			}
-		}));
-		registrations.add(display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				DeleteMessageAllRequest req = rf.deleteMessageAllRequest();
-				DeleteMessageAllAction action = req.create(DeleteMessageAllAction.class);
-				ImapFolder f = req.create(ImapFolder.class);
-				folder.setFolderTo(f);
-				action.setFolder(f);
-				req.delete(action).fire(new Receiver<DeleteMessageResult>() {
-					@Override
-					public void onSuccess(DeleteMessageResult response) {
-						redrawTable();
-						eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, response.getCount()));
-					}
-				});
-			}
-		}));
-		registrations.add(display.getMarkSeenClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
-				ArrayList<Long> uids = new ArrayList<Long>();
-				for (Message m : selectedMessages) {
-					if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
-						uids.add(m.getUid());
-					} else {
-						selectedMessages.remove(m);
-					}
-				}
-				SetFlagRequest req = rf.setFlagRequest();
-				SetFlagAction action = req.create(SetFlagAction.class);
-				ImapFolder f = req.create(ImapFolder.class);
-				folder.setFolderTo(f);
-				action.setFlag(IMAPFlag.SEEN);
-				action.setFolder(f);
-				action.setUids(uids);
-				action.setValue(true);
-				req.set(action).fire(new Receiver<GenericResult>() {
-					@Override
-					public void onSuccess(GenericResult response) {
-						for (Message m : selectedMessages) {
-							if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
-								m.getFlags().add(IMAPFlag.SEEN);
-							}
-						}
-						display.redraw();
-						eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, selectedMessages.size()));
-					}
-				});
-			}
-		}));
-		registrations.add(display.getMarkUnseenClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
-				ArrayList<Long> uids = new ArrayList<Long>();
-				for (Message m : selectedMessages) {
-					if (m.getFlags().contains(IMAPFlag.SEEN)) {
-						uids.add(m.getUid());
-					} else {
-						selectedMessages.remove(m);
-					}
-				}
-				SetFlagRequest req = rf.setFlagRequest();
-				SetFlagAction action = req.create(SetFlagAction.class);
-				ImapFolder f = req.create(ImapFolder.class);
-				folder.setFolderTo(f);
-				action.setFlag(IMAPFlag.SEEN);
-				action.setFolder(f);
-				action.setUids(uids);
-				action.setValue(false);
-				req.set(action).fire(new Receiver<GenericResult>() {
-					@Override
-					public void onSuccess(GenericResult response) {
-						for (Message m : selectedMessages) {
-							if (m.getFlags().contains(IMAPFlag.SEEN)) {
-								m.getFlags().remove(IMAPFlag.SEEN);
-							}
-						}
-						display.redraw();
-						eventBus.fireEvent(new IncreaseUnseenEvent(user, folder, selectedMessages.size()));
-					}
-				});
-			}
-
-		}));
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {// TODO
-			        public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				        folder = event.getFolder();
-				        user = event.getUser();
-			        }
-
-		        });
-		registrations.add(display.getRefreshClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.reset();
-				display.reloadData();
-			}
-
-		}));
-		registrations.add(display.getRowsPerPageChange().addChangeHandler(new ChangeHandler() {
-			public void onChange(ChangeEvent event) {
-				// firePresenterRevealedEvent(true);
-				// firePresenterChangedEvent();
-			}
-
-		}));
-		// display.addTableListener(tableListener);
-	}
-
-	private void deleteMessages() {
-		Set<Message> ml = display.getSelectedMessages();
-		final List<Message> selectedMessages = new ArrayList<Message>(ml);
-		List<Long> uids = new ArrayList<Long>();
-		for (Message m : selectedMessages) {
-			uids.add(m.getUid());
-			display.getTable().getSelectionModel().setSelected(m, false); // FIXME should be deSelected, or removed?
-		}
-		// maybe its better to just remove the messages from the table and
-		// expect the removal will work
-		display.removeMessages(selectedMessages);
-		DeleteMessageByUidRequest req = rf.deleteMessageByUidRequest();
-		DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class);
-		ImapFolder f = req.create(ImapFolder.class);
-//		folder.setFolderTo(f); FIXME cannot use any more, for it's already a requestContext assigned.
-		clone(f, folder);
-		action.setMessageUids(uids);
-		action.setFolder(f);
-		req.delete(action).fire(new Receiver<DeleteMessageResult>() {
-			@Override
-			public void onSuccess(DeleteMessageResult response) {
-				redrawTable();//TODO presenter
-				eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, response.getCount()));
-			}
-		});
-	}
-	private void clone(ImapFolder f, ImapFolder folder) {
-	    f.setChildren(folder.getChildren());
-		f.setDelimiter(folder.getDelimiter());
-		f.setFullName(folder.getFullName());
-		f.setMessageCount(folder.getMessageCount());
-		f.setName(folder.getName());
-		f.setSubscribed(folder.getSubscribed());
-		f.setUnseenMessageCount(folder.getUnseenMessageCount());
-    }
-
-	private void redrawTable() {
-        display.getTable().setVisibleRangeAndClearData(display.getTable().getVisibleRange(), true);
-    }
-	public IMAPMessageListActivity with(FolderPlace place) {
-//		this.user = place.getUser();
-//		this.folder = place.getFolder();
-//		this.searchValue = place.getSearchValue();
-		return this;
-	}
-
-	protected void onRevealDisplay() {
-		if (user != null && folder != null) {
-			display.reloadData();
-		}
-	}
-	public void revealDisplay(User user, ImapFolder folder, String searchValue) {
-		this.user = user;
-		if (this.user == null || !this.user.getName().equals(user.getName()) || this.folder == null
-		        || !this.folder.getFullName().equals(folder.getFullName())
-		        || (searchValue == null && this.searchValue != null)
-		        || (searchValue != null && searchValue.equals(this.searchValue) == false)) {
-			display.reset();
-			display.deselectAllMessages();
-		}
-		display.setExpandLoading(false);
-		this.searchValue = searchValue;
-		this.folder = folder;
-		onRevealDisplay();
-	}
-
-	private String searchValue;
-	private User user;
-	private ImapFolder folder;
-
-	@Inject private Displayable display;
-	@Inject private Provider<MessageSendPlace> messageSendPlaceProvider;
-	
-	public interface Displayable extends IsWidget {
-		public void setPostFetchMessageCount(int count);
-		public void fillSearchOracle(List<Message> messages);
-		public void setExpandLoading(boolean expanding);
-		public void redraw();
-		public void goToPage(int page);
-		public void reloadData();
-		public void removeMessages(List<Message> messages);
-		public void selectAllMessages();
-		public void deselectAllMessages();
-		public void reset();
-		public int getCurrentPage();
-		public int getRowsPerPageIndex();
-		public HasClickHandlers getNewClick();
-		public Message getData(int rowIndex);
-		public HasClickHandlers getDeleteClick();
-		public HasClickHandlers getDeleteAllClick();
-		public HasEnable getDeleteEnable();
-		public Set<Message> getSelectedMessages();
-		public HasDialog getConfirmDeleteDialog();
-		public HasDialog getConfirmDeleteAllDialog();
-		public HasClickHandlers getConfirmDeleteDialogClick();
-		public HasClickHandlers getConfirmDeleteAllDialogClick();
-		public HasClickHandlers getSelectAllClick();
-		public HasClickHandlers getSelectNoneClick();
-		public HasClickHandlers getMarkSeenClick();
-		public HasClickHandlers getMarkUnseenClick();
-		public HasEnable getMarkSeenEnable();
-		public HasEnable getMarkUnseenEnable();
-		public HasClickHandlers getRefreshClick();
-		public HasChangeHandlers getRowsPerPageChange();
-		public HasClickHandlers getSearchClick();
-		public HasValue<String> getSearchValue();
-		public MessagesCellTable getTable();
-	}
-=======
-=======
->>>>>>> Change to new mvp framework - first step
-package org.apache.hupa.client.activity;
-=======
->>>>>>> try to fetch messages, yet can not fire the login event in ModelTable such that just get a NullPointerException in it.
-
-<<<<<<< HEAD
-import java.util.ArrayList;
-
-<<<<<<< HEAD
-import net.customware.gwt.dispatch.client.DispatchAsync;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.client.HandlerRegistrationAdapter;
-=======
->>>>>>> remove gwt-incubator dependency in Messages List Model; 
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-import org.apache.hupa.client.place.MailFolderPlace;
-=======
->>>>>>> change place management and make refresh folder and message list more gentle
-import org.apache.hupa.client.place.MessageSendPlace;
-import org.apache.hupa.client.rf.DeleteMessageAllRequest;
-import org.apache.hupa.client.rf.DeleteMessageByUidRequest;
-import org.apache.hupa.client.rf.MoveMessageRequest;
-import org.apache.hupa.client.rf.SetFlagRequest;
-import org.apache.hupa.client.ui.MessagesCellTable;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
-import org.apache.hupa.shared.domain.DeleteMessageAllAction;
-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.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MoveMessageAction;
-import org.apache.hupa.shared.domain.SetFlagAction;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.DecreaseUnseenEvent;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.IncreaseUnseenEvent;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LogoutEvent;
-import org.apache.hupa.shared.events.LogoutEventHandler;
-import org.apache.hupa.shared.events.MessagesReceivedEvent;
-import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
-import org.apache.hupa.shared.events.MoveMessageEvent;
-import org.apache.hupa.shared.events.MoveMessageEventHandler;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-import org.apache.hupa.shared.rpc.DeleteAllMessages;
-import org.apache.hupa.shared.rpc.DeleteMessageByUid;
-import org.apache.hupa.shared.rpc.DeleteMessageResult;
-import org.apache.hupa.shared.rpc.GenericResult;
-import org.apache.hupa.shared.rpc.MoveMessage;
-import org.apache.hupa.shared.rpc.MoveMessageResult;
-import org.apache.hupa.shared.rpc.SetFlag;
-import org.apache.hupa.widgets.ui.HasEnable;
-
-import com.google.gwt.activity.shared.AbstractActivity;
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-=======
-=======
-import org.apache.hupa.client.HandlerRegistrationAdapter;
-<<<<<<< HEAD
-import org.apache.hupa.client.HupaEvoCallback;
-<<<<<<< HEAD
->>>>>>> 
-=======
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
->>>>>>> 1. improve the inbox folder place.
-import org.apache.hupa.client.mvp.WidgetDisplayable;
-import org.apache.hupa.client.place.IMAPMessagePlace;
-=======
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-import org.apache.hupa.client.evo.HupaEvoCallback;
-import org.apache.hupa.client.place.MailFolderPlace;
->>>>>>> Make the evo more clear.
-import org.apache.hupa.client.place.MessageSendPlace;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.shared.data.Message;
-import org.apache.hupa.shared.data.Message.IMAPFlag;
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.events.DecreaseUnseenEvent;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.IncreaseUnseenEvent;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LogoutEvent;
-import org.apache.hupa.shared.events.LogoutEventHandler;
-import org.apache.hupa.shared.events.MessagesReceivedEvent;
-import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
-import org.apache.hupa.shared.events.MoveMessageEvent;
-import org.apache.hupa.shared.events.MoveMessageEventHandler;
-import org.apache.hupa.shared.proxy.ImapFolder;
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.DeleteAllMessages;
-import org.apache.hupa.shared.rpc.DeleteMessageByUid;
-import org.apache.hupa.shared.rpc.DeleteMessageResult;
-import org.apache.hupa.shared.rpc.GenericResult;
-import org.apache.hupa.shared.rpc.MoveMessage;
-import org.apache.hupa.shared.rpc.MoveMessageResult;
-import org.apache.hupa.shared.rpc.SetFlag;
-=======
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.widgets.ui.HasEnable;
-
-<<<<<<< HEAD
-import com.google.gwt.activity.shared.AbstractActivity;
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
-=======
->>>>>>> fix issue 10
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
->>>>>>> 
-import com.google.gwt.event.dom.client.HasChangeHandlers;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.EventBus;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.gen2.table.event.client.HasPageChangeHandlers;
-import com.google.gwt.gen2.table.event.client.HasPageLoadHandlers;
-import com.google.gwt.gen2.table.event.client.HasRowSelectionHandlers;
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> 
-import com.google.gwt.gen2.table.event.client.PageChangeEvent;
-import com.google.gwt.gen2.table.event.client.PageChangeHandler;
-import com.google.gwt.gen2.table.event.client.RowSelectionEvent;
-import com.google.gwt.gen2.table.event.client.RowSelectionHandler;
-<<<<<<< HEAD
-=======
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> 
-=======
->>>>>>> remove gwt-incubator dependency in Messages List Model; 
-import com.google.gwt.place.shared.PlaceController;
-=======
->>>>>>> scrub code
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.HasValue;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-
-public class IMAPMessageListActivity extends AppBaseActivity {
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private String searchValue;
-    private User user;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-=======
-    private IMAPFolder folder;
->>>>>>> Change to new mvp framework - first step
-=======
-    private IMAPFolderProxy folder;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private ShowMessageTableListener tableListener = new ShowMessageTableListener();
-=======
-	private String searchValue;
-	private User user;
-	private ImapFolder folder;
-<<<<<<< HEAD
-	private ShowMessageTableListener tableListener = new ShowMessageTableListener();
->>>>>>> delete messages, make WestActivity Singleton
-=======
->>>>>>> clean some code. Pager issue remain
-
-	@Inject private Displayable display;
-	@Inject private EventBus eventBus;
-	@Inject private PlaceController placeController;
-	@Inject private Provider<MessageSendPlace> messageSendPlaceProvider;
-	@Inject private HupaRequestFactory requestFactory;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private final Displayable display;
-	private final EventBus eventBus;
-	private final PlaceController placeController;
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private DispatchAsync dispatcher;
-	private final Provider<MessageSendPlace> messageSendPlaceProvider;
-=======
-    @Inject private Displayable display;
-    @Inject private EventBus eventBus;
-    @Inject private PlaceController placeController;
-    @Inject private Provider<MessageSendPlace> messageSendPlaceProvider;
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-    
-=======
->>>>>>> delete messages, make WestActivity Singleton
-=======
->>>>>>> scrub code
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		bind();
-		revealDisplay(user, folder, searchValue);
-		container.setWidget(display.asWidget());
-	}
-<<<<<<< HEAD
-<<<<<<< HEAD
-	
-	private void bind(){
-=======
-	private final Provider<MailInboxPlace> mailInboxPlaceProvider;
-=======
->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-	private DispatchAsync dispatcher;
-	private final Provider<MessageSendPlace> messageSendPlaceProvider;
-    
-	@Inject
-    public IMAPMessageListActivity(Displayable display, EventBus eventBus, PlaceController placeController,
-			 DispatchAsync dispatcher,Provider<MessageSendPlace> messageSendPlaceProvider){
-		this.display = display;
-		this.eventBus = eventBus;
-		this.placeController = placeController;
-		this.dispatcher = dispatcher;
-		this.messageSendPlaceProvider = messageSendPlaceProvider;
-		
-
-        // add this event on constructor because we don't want to remove it on unbind
->>>>>>> Change to new mvp framework - first step
-        eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-
-            public void onLogout(LogoutEvent logoutEvent) {
-            	IMAPMessageListActivity.this.display.reset();
-            	IMAPMessageListActivity.this.display.getSearchValue().setValue("");
-            }
-            
-        });
-<<<<<<< HEAD
-=======
-
-=======
->>>>>>> fix issue 10
-	private void bind() {
-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-			public void onLogout(LogoutEvent logoutEvent) {
-				IMAPMessageListActivity.this.display.reset();
-				IMAPMessageListActivity.this.display.getSearchValue().setValue("");
-			}
-		});
->>>>>>> delete messages, make WestActivity Singleton
-		eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {
-			public void onMessagesReceived(MessagesReceivedEvent event) {
-				// fill the oracle
-				display.fillSearchOracle(event.getMessages());
-			}
-		});
-		registrations.add(display.getSearchClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				String searchValue = null;
-				if (display.getSearchValue().getValue().trim().length() > 0) {
-					searchValue = display.getSearchValue().getValue().trim();
-				}
-				eventBus.fireEvent(new LoadMessagesEvent(user, folder, searchValue));
-			}
-		}));
-		eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
-			public void onMoveMessageHandler(MoveMessageEvent event) {
-				final Message message = event.getMessage();
-				MoveMessageRequest req = requestFactory.moveMessageRequest();
-=======
->>>>>>> change message list view to make it not refresh the whole list when click one of the messages
-				MoveMessageAction action = req.create(MoveMessageAction.class);
-				ImapFolder newOne = req.create(ImapFolder.class);
-				ImapFolder oldOne = req.create(ImapFolder.class);
-				event.getNewFolder().setFolderTo(newOne);
-				event.getOldFolder().setFolderTo(oldOne);
-				action.setMessageUid(message.getUid());
-				action.setNewFolder(newOne);
-				action.setOldFolder(oldOne);
-				req.move(action).fire(new Receiver<GenericResult>() {
-					@Override
-					public void onSuccess(GenericResult response) {
-						List<Message> messageArray = new ArrayList<Message>();
-						messageArray.add(message);
-						display.removeMessages(messageArray);
-					}
-				});
-			}
-		});
-		registrations.add(display.getSelectAllClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.deselectAllMessages();
-				display.selectAllMessages();
-			}
-		}));
-		registrations.add(display.getSelectNoneClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.deselectAllMessages();
-			}
-		}));
-		registrations.add(display.getDeleteClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-			public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
-				if (folder.getFullName().equals(user.getSettings().getTrashFolderName())) {
-					display.getConfirmDeleteDialog().show();
-				} else {
-					deleteMessages();
-				}
-			}
-		}));
-		registrations.add(display.getConfirmDeleteDialogClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				deleteMessages();
-			}
-		}));
-		registrations.add(display.getNewClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-			public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
-				// eventBus.fireEvent(new NewMessageEvent());
-				pc.goTo(messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
-			}
-		}));
-		registrations.add(display.getDeleteAllClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.getConfirmDeleteAllDialog().center();
-			}
-		}));
-		registrations.add(display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				DeleteMessageAllRequest req = rf.deleteMessageAllRequest();
-				DeleteMessageAllAction action = req.create(DeleteMessageAllAction.class);
-				ImapFolder f = req.create(ImapFolder.class);
-				folder.setFolderTo(f);
-				action.setFolder(f);
-				req.delete(action).fire(new Receiver<DeleteMessageResult>() {
-					@Override
-					public void onSuccess(DeleteMessageResult response) {
-						redrawTable();
-						eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, response.getCount()));
-					}
-				});
-			}
-		}));
-		registrations.add(display.getMarkSeenClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
-				ArrayList<Long> uids = new ArrayList<Long>();
-				for (Message m : selectedMessages) {
-					if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
-						uids.add(m.getUid());
-					} else {
-						selectedMessages.remove(m);
-					}
-				}
-				SetFlagRequest req = rf.setFlagRequest();
-				SetFlagAction action = req.create(SetFlagAction.class);
-				ImapFolder f = req.create(ImapFolder.class);
-				folder.setFolderTo(f);
-				action.setFlag(IMAPFlag.SEEN);
-				action.setFolder(f);
-				action.setUids(uids);
-				action.setValue(true);
-				req.set(action).fire(new Receiver<GenericResult>() {
-					@Override
-					public void onSuccess(GenericResult response) {
-						for (Message m : selectedMessages) {
-							if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
-								m.getFlags().add(IMAPFlag.SEEN);
-							}
-						}
-						display.redraw();
-						eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, selectedMessages.size()));
-					}
-				});
-			}
-		}));
-		registrations.add(display.getMarkUnseenClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
-				ArrayList<Long> uids = new ArrayList<Long>();
-				for (Message m : selectedMessages) {
-					if (m.getFlags().contains(IMAPFlag.SEEN)) {
-						uids.add(m.getUid());
-					} else {
-						selectedMessages.remove(m);
-					}
-				}
-				SetFlagRequest req = rf.setFlagRequest();
-				SetFlagAction action = req.create(SetFlagAction.class);
-				ImapFolder f = req.create(ImapFolder.class);
-				folder.setFolderTo(f);
-				action.setFlag(IMAPFlag.SEEN);
-				action.setFolder(f);
-				action.setUids(uids);
-				action.setValue(false);
-				req.set(action).fire(new Receiver<GenericResult>() {
-					@Override
-					public void onSuccess(GenericResult response) {
-						for (Message m : selectedMessages) {
-							if (m.getFlags().contains(IMAPFlag.SEEN)) {
-								m.getFlags().remove(IMAPFlag.SEEN);
-							}
-						}
-						display.redraw();
-						eventBus.fireEvent(new IncreaseUnseenEvent(user, folder, selectedMessages.size()));
-					}
-				});
-			}
-
-		}));
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {// TODO
-			        public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				        folder = event.getFolder();
-				        user = event.getUser();
-			        }
-
-		        });
-		registrations.add(display.getRefreshClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.reset();
-				display.reloadData();
-			}
-
-		}));
-		registrations.add(display.getRowsPerPageChange().addChangeHandler(new ChangeHandler() {
-			public void onChange(ChangeEvent event) {
-				// firePresenterRevealedEvent(true);
-				// firePresenterChangedEvent();
-			}
-
-		}));
-		// display.addTableListener(tableListener);
-	}
-
-	private void deleteMessages() {
-		Set<Message> ml = display.getSelectedMessages();
-		final List<Message> selectedMessages = new ArrayList<Message>(ml);
-		List<Long> uids = new ArrayList<Long>();
-		for (Message m : selectedMessages) {
-			uids.add(m.getUid());
-			display.getTable().getSelectionModel().setSelected(m, false); // FIXME should be deSelected, or removed?
-		}
-		// maybe its better to just remove the messages from the table and
-		// expect the removal will work
-		display.removeMessages(selectedMessages);
-		DeleteMessageByUidRequest req = rf.deleteMessageByUidRequest();
-		DeleteMessageByUidAction action = req.create(DeleteMessageByUidAction.class);
-		ImapFolder f = req.create(ImapFolder.class);
-//		folder.setFolderTo(f); FIXME cannot use any more, for it's already a requestContext assigned.
-		clone(f, folder);
-		action.setMessageUids(uids);
-		action.setFolder(f);
-		req.delete(action).fire(new Receiver<DeleteMessageResult>() {
-			@Override
-			public void onSuccess(DeleteMessageResult response) {
-				redrawTable();//TODO presenter
-				eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, response.getCount()));
-			}
-		});
-	}
-	private void clone(ImapFolder f, ImapFolder folder) {
-	    f.setChildren(folder.getChildren());
-		f.setDelimiter(folder.getDelimiter());
-		f.setFullName(folder.getFullName());
-		f.setMessageCount(folder.getMessageCount());
-		f.setName(folder.getName());
-		f.setSubscribed(folder.getSubscribed());
-		f.setUnseenMessageCount(folder.getUnseenMessageCount());
-    }
-
-	private void redrawTable() {
-        display.getTable().setVisibleRangeAndClearData(display.getTable().getVisibleRange(), true);
-    }
-	public IMAPMessageListActivity with(FolderPlace place) {
-//		this.user = place.getUser();
-//		this.folder = place.getFolder();
-<<<<<<< HEAD
-		this.searchValue = place.getSearchValue();
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-	}
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		bind();
-		revealDisplay(user, folder, searchValue);
-		container.setWidget(display.asWidget());
-	}
-	
-	private void bind(){
-		eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {
-
-            public void onMessagesReceived(MessagesReceivedEvent event) {
-
-                // fill the oracle
-                display.fillSearchOracle(event.getMessages());
-            }
-
-        });
-		display.getSearchClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                String searchValue = null;
-                if (display.getSearchValue().getValue().trim().length() > 0) {
-                    searchValue = display.getSearchValue().getValue().trim();
-                }
-                eventBus.fireEvent(new LoadMessagesEvent(user, folder, searchValue));
-            }
-
-        });
-		eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
-
-            public void onMoveMessageHandler(MoveMessageEvent event) {
-                final Message message = event.getMessage();
-                dispatcher.execute(new MoveMessage(event.getOldFolder(), event.getNewFolder(), message.getUid()), new HupaEvoCallback<MoveMessageResult>(dispatcher, eventBus) {
-                    public void callback(MoveMessageResult result) {
-                        ArrayList<Message> messageArray = new ArrayList<Message>();
-                        messageArray.add(message);
-                        display.removeMessages(messageArray);
-                    }
-                }); 
-            }
-            
-        });
-		display.getSelectAllClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                display.deselectAllMessages();
-                display.selectAllMessages();
-            }
-            
-        });
-		display.getSelectNoneClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                display.deselectAllMessages();
-            }
-            
-        });
-		display.getDeleteClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-
-            public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
-                if (folder.getFullName().equals(user.getSettings().getTrashFolderName())) {
-                    display.getConfirmDeleteDialog().show();
-                } else {
-                    deleteMessages();
-                }
-                
-            }
-            
-        });
-		display.getConfirmDeleteDialogClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                deleteMessages();
-            }
-            
-        });
-		display.getNewClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-
-            public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
-//                eventBus.fireEvent(new NewMessageEvent());
-            	placeController.goTo(messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
-            }
-            
-        });
-		display.getDeleteAllClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                display.getConfirmDeleteAllDialog().center();
-            }
-            
-        });
-		display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                dispatcher.execute(new DeleteAllMessages(folder), new HupaEvoCallback<DeleteMessageResult>(dispatcher, eventBus) {
-                    public void callback(DeleteMessageResult result) {
-                        display.reset();
-                        display.reloadData();
-//                        eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
-                    }
-                });
-            }
-            
-        });
-		display.getMarkSeenClick().addClickHandler( new ClickHandler() {
-            public void onClick(ClickEvent event) {
-                final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
-                ArrayList<Long> uids = new ArrayList<Long>();
-                for (Message m : selectedMessages) {
-                    if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
-                        uids.add(m.getUid());
-                    } else {
-                        selectedMessages.remove(m);
-                    }
-                }
-                dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, true, uids), new HupaEvoCallback<GenericResult>(dispatcher, eventBus) {
-                    public void callback(GenericResult result) {
-                        for (Message m : selectedMessages) {
-                            if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
-                                m.getFlags().add(IMAPFlag.SEEN);
-                            }
-                        }
-                        display.redraw();
-                        eventBus.fireEvent(new DecreaseUnseenEvent(user, folder,selectedMessages.size()));
-                    }
-                });
-            }
-
-        });
-		display.getMarkUnseenClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
-                ArrayList<Long> uids = new ArrayList<Long>();
-                for (Message m : selectedMessages) {
-                    if (m.getFlags().contains(IMAPFlag.SEEN)) {
-                        uids.add(m.getUid());
-                    } else {
-                        selectedMessages.remove(m);
-                    }
-                }
-                
-                dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, false, uids), new HupaEvoCallback<GenericResult>(dispatcher, eventBus) {
-                    public void callback(GenericResult result) {
-                        for (Message m : selectedMessages) {
-                            if (m.getFlags().contains(IMAPFlag.SEEN)) {
-                                m.getFlags().remove(IMAPFlag.SEEN);
-                            }
-                        }
-                        display.redraw();
-                        eventBus.fireEvent(new IncreaseUnseenEvent(user, folder,selectedMessages.size()));
-                    }
-                });
-            }
-            
-            
-        });
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {//TODO
-
-            public void onFolderSelectionEvent(FolderSelectionEvent event) {
-                folder = event.getFolder();
-                user = event.getUser();
-            }
-            
-        });
-		new HandlerRegistrationAdapter(display.getDataTableSelection().addRowSelectionHandler(new RowSelectionHandler() {
-            public void onRowSelection(RowSelectionEvent event) {
-                if (event.getSelectedRows().size() == 0) {
-                    display.getDeleteEnable().setEnabled(false);
-                    display.getMarkSeenEnable().setEnabled(false);
-                    display.getMarkUnseenEnable().setEnabled(false);
-                } else {
-                    display.getDeleteEnable().setEnabled(true);
-                    display.getMarkSeenEnable().setEnabled(true);
-                    display.getMarkUnseenEnable().setEnabled(true);
-                }
-            }
-            
-        
-        
-		}));
-		display.getRefreshClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                display.reset();
-                display.reloadData();
-            }
-            
-        });
-		new HandlerRegistrationAdapter(display.getDataTablePageChange().addPageChangeHandler(new PageChangeHandler() {//TODO
-
-            public void onPageChange(PageChangeEvent event) {
-                //firePresenterRevealedEvent(true);
-//                firePresenterChangedEvent();
-            }
-            
-        }));
-		display.getRowsPerPageChange().addChangeHandler(new ChangeHandler() {
-
-            public void onChange(ChangeEvent event) {
-                //firePresenterRevealedEvent(true);
-//                firePresenterChangedEvent();
-            }
-            
-        });
-		display.addTableListener(tableListener);
-	}
-
-    private void deleteMessages() {
-        final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
-        ArrayList<Long> uids = new ArrayList<Long>();
-        for (Message m : selectedMessages) {
-            uids.add(m.getUid());
-        }
-        // maybe its better to just remove the messages from the table and expect the removal will work
-        display.removeMessages(selectedMessages);
-
-        dispatcher.execute(new DeleteMessageByUid(folder,uids), new HupaEvoCallback<DeleteMessageResult>(dispatcher, eventBus) {
-            public void callback(DeleteMessageResult result) {
-                eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
-            }
-        }); 
-    }
-<<<<<<< HEAD
-	public IMAPMessageListActivity with(User user, IMAPFolder imapFolder, String string){
-		this.user = user;
-<<<<<<< HEAD
-		this.folder = new IMAPFolder(user.getSettings().getInboxFolderName());
->>>>>>> Change to new mvp framework - first step
-=======
-		this.folder = imapFolder;
-		this.searchValue = string;
->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-=======
-	public IMAPMessageListActivity with(MailFolderPlace place){
-		this.user = place.getUser();
-		this.folder = place.getFolder();
-		this.searchValue = place.getSearchValue();
->>>>>>> Make the evo more clear.
-=======
-		display.setImapFolder(folder);
->>>>>>> use CellTable to deal with MessageTableModel, even a few issues
-=======
->>>>>>> fix the CellTable display
-=======
-//		this.searchValue = place.getSearchValue();
->>>>>>> scrub code
-		return this;
-	}
-
-<<<<<<< HEAD
-    protected void onRevealDisplay() {
-        if (user != null && folder != null) {
-            display.reloadData();  
-        }
-    }
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void revealDisplay(User user, IMAPFolderProxy folder, String searchValue) {
-=======
-    public void revealDisplay(User user, IMAPFolder folder, String searchValue) {
->>>>>>> Change to new mvp framework - first step
-=======
-    public void revealDisplay(User user, IMAPFolderProxy folder, String searchValue) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void revealDisplay(User user, ImapFolder folder, String searchValue) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.user = user;
-       
-        if (this.user == null 
-            || !this.user.getName().equals(user.getName()) 
-            || this.folder == null 
-            || !this.folder.getFullName().equals(folder.getFullName()) 
-            || (searchValue == null && this.searchValue != null) 
-            || (searchValue != null && searchValue.equals(this.searchValue) == false)) {
-            display.reset();
-            display.deselectAllMessages();
-        }
-        display.setExpandLoading(false);
-        this.searchValue = searchValue;
-        this.folder = folder;
-        
-        onRevealDisplay();
-    }
-	public interface Displayable extends WidgetDisplayable{
-        public HasRowSelectionHandlers getDataTableSelection();
-        public HasPageLoadHandlers getDataTableLoad();
-        public void addTableListener(TableListener listener) ;
-        public void removeTableListener(TableListener listener) ;
-        public void setPostFetchMessageCount(int count);
-        public HasClickHandlers getNewClick();
-        public Message getData(int rowIndex);
-        public HasClickHandlers getDeleteClick();
-        public HasClickHandlers getDeleteAllClick();
-        public HasEnable getDeleteEnable();
-        public void reloadData();
-        public void removeMessages(ArrayList<Message> messages);
-        public List<Message> getSelectedMessages();
-        public void reset();
-        public HasDialog getConfirmDeleteDialog();
-        public HasDialog getConfirmDeleteAllDialog();
-        public HasClickHandlers getConfirmDeleteDialogClick();
-        public HasClickHandlers getConfirmDeleteAllDialogClick();
-        public void selectAllMessages();
-        public void deselectAllMessages();
-        public HasClickHandlers getSelectAllClick();
-        public HasClickHandlers getSelectNoneClick();
-        public HasClickHandlers getMarkSeenClick();
-        public HasClickHandlers getMarkUnseenClick();
-        public HasEnable getMarkSeenEnable();
-        public HasEnable getMarkUnseenEnable();
-        public HasClickHandlers getRefreshClick();
-        public void redraw();
-        public HasPageChangeHandlers getDataTablePageChange();
-        public void goToPage(int page);
-        public int getCurrentPage();
-        public int getRowsPerPageIndex();
-        public HasChangeHandlers getRowsPerPageChange();     
-        public HasClickHandlers getSearchClick();
-        public HasValue<String> getSearchValue();
-        public void fillSearchOracle(List<Message> messages);
-        public void setExpandLoading(boolean expanding);
-
-    }
-
-    
-    private final class ShowMessageTableListener implements TableListener {
-
-        public void onCellClicked(SourcesTableEvents sender, int row,
-                int cell) {
-            
-            display.setExpandLoading(true);
-            Message message = display.getData(row);
-            
-            // mark the message as seen and redraw the table to reflect this
-            if (message.getFlags().contains(MessageImpl.IMAPFlag.SEEN) == false) {
-                // add flag, fire event and redraw
-                message.getFlags().add(MessageImpl.IMAPFlag.SEEN);
-                eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,1));
-                
-                display.redraw();
-
-            }
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-            
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> 1. improve the inbox folder place.
-            eventBus.fireEvent(new ExpandMessageEvent(user,folder,message));
-        }
-
-    }
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-	protected void onRevealDisplay() {
-		if (user != null && folder != null) {
-			display.reloadData();
-		}
-	}
-	public void revealDisplay(User user, ImapFolder folder, String searchValue) {
-		this.user = user;
-		if (this.user == null || !this.user.getName().equals(user.getName()) || this.folder == null
-		        || !this.folder.getFullName().equals(folder.getFullName())
-		        || (searchValue == null && this.searchValue != null)
-		        || (searchValue != null && searchValue.equals(this.searchValue) == false)) {
-			display.reset();
-			display.deselectAllMessages();
-		}
-		display.setExpandLoading(false);
-		this.searchValue = searchValue;
-		this.folder = folder;
-		onRevealDisplay();
-	}
-
-	private String searchValue;
-	private User user;
-	private ImapFolder folder;
-
-	@Inject private Displayable display;
-	@Inject private Provider<MessageSendPlace> messageSendPlaceProvider;
-	
-	public interface Displayable extends WidgetDisplayable {
-		public void setPostFetchMessageCount(int count);
-		public void fillSearchOracle(List<Message> messages);
-		public void setExpandLoading(boolean expanding);
-		public void redraw();
-		public void goToPage(int page);
-		public void reloadData();
-		public void removeMessages(List<Message> messages);
-		public void selectAllMessages();
-		public void deselectAllMessages();
-		public void reset();
-		public int getCurrentPage();
-		public int getRowsPerPageIndex();
-		public HasClickHandlers getNewClick();
-		public Message getData(int rowIndex);
-		public HasClickHandlers getDeleteClick();
-		public HasClickHandlers getDeleteAllClick();
-		public HasEnable getDeleteEnable();
-		public Set<Message> getSelectedMessages();
-		public HasDialog getConfirmDeleteDialog();
-		public HasDialog getConfirmDeleteAllDialog();
-		public HasClickHandlers getConfirmDeleteDialogClick();
-		public HasClickHandlers getConfirmDeleteAllDialogClick();
-		public HasClickHandlers getSelectAllClick();
-		public HasClickHandlers getSelectNoneClick();
-		public HasClickHandlers getMarkSeenClick();
-		public HasClickHandlers getMarkUnseenClick();
-		public HasEnable getMarkSeenEnable();
-		public HasEnable getMarkUnseenEnable();
-		public HasClickHandlers getRefreshClick();
-		public HasChangeHandlers getRowsPerPageChange();
-		public HasClickHandlers getSearchClick();
-		public HasValue<String> getSearchValue();
-		public MessagesCellTable getTable();
-	}
-<<<<<<< HEAD
-
-	private final class ShowMessageTableListener implements TableListener {
-
-		public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
-
-			display.setExpandLoading(true);
-			Message message = display.getData(row);
-
-			// mark the message as seen and redraw the table to reflect this
-			if (message.getFlags().contains(MessageImpl.IMAPFlag.SEEN) == false) {
-				// add flag, fire event and redraw
-				message.getFlags().add(MessageImpl.IMAPFlag.SEEN);
-				eventBus.fireEvent(new DecreaseUnseenEvent(user, folder, 1));
-
-				display.redraw();
-
-			}
-			eventBus.fireEvent(new ExpandMessageEvent(user, folder, message));
-		}
-
-	}
->>>>>>> delete messages, make WestActivity Singleton
-=======
->>>>>>> clean some code. Pager issue remain
-}
diff --git a/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java b/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java
deleted file mode 100644
index 18acd06..0000000
--- a/client/src/main/java/org/apache/hupa/client/activity/MessageSendActivity.java
+++ /dev/null
@@ -1,1187 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-<<<<<<< HEAD
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-package org.apache.hupa.client.activity;
-
-import gwtupload.client.IUploadStatus.Status;
-import gwtupload.client.IUploader;
-import gwtupload.client.IUploader.OnCancelUploaderHandler;
-import gwtupload.client.IUploader.OnFinishUploaderHandler;
-import gwtupload.client.IUploader.OnStatusChangedHandler;
-
-import java.util.ArrayList;
-import java.util.List;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.place.MessageSendPlace;
-<<<<<<< HEAD
-import org.apache.hupa.client.rf.SendForwardMessageRequest;
-import org.apache.hupa.client.rf.SendMessageRequest;
-import org.apache.hupa.client.rf.SendReplyMessageRequest;
-import org.apache.hupa.client.validation.EmailListValidator;
-import org.apache.hupa.shared.Util;
-import org.apache.hupa.shared.data.MessageAttachmentImpl;
-import org.apache.hupa.shared.domain.GenericResult;
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageAttachment;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.SendForwardMessageAction;
-import org.apache.hupa.shared.domain.SendMessageAction;
-import org.apache.hupa.shared.domain.SendReplyMessageAction;
-import org.apache.hupa.shared.domain.SmtpMessage;
-import org.apache.hupa.shared.domain.User;
-=======
-import net.customware.gwt.dispatch.client.DispatchAsync;
-import net.customware.gwt.dispatch.shared.Action;
-
-import org.apache.hupa.client.evo.HupaEvoCallback;
-import org.apache.hupa.client.place.MessageSendPlace;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-=======
-import net.customware.gwt.dispatch.client.DispatchAsync;
-import net.customware.gwt.dispatch.shared.Action;
-=======
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-
-import org.apache.hupa.client.evo.HupaEvoCallback;
-=======
->>>>>>> try to get message details, problem is:
-import org.apache.hupa.client.place.MessageSendPlace;
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
-=======
-import org.apache.hupa.client.rf.HupaRequestFactory;
-=======
->>>>>>> scrub code
-import org.apache.hupa.client.rf.SendForwardMessageRequest;
-import org.apache.hupa.client.rf.SendMessageRequest;
-import org.apache.hupa.client.rf.SendReplyMessageRequest;
->>>>>>> forward and reply message to use RF
-import org.apache.hupa.client.ui.WidgetDisplayable;
->>>>>>> Make the evo more clear.
-import org.apache.hupa.client.validation.EmailListValidator;
-import org.apache.hupa.shared.Util;
-import org.apache.hupa.shared.data.MessageAttachmentImpl;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.SMTPMessage;
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-=======
-import org.apache.hupa.shared.data.SmtpMessageImpl;
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-import org.apache.hupa.shared.domain.GenericResult;
->>>>>>> forward and reply message to use RF
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageAttachment;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.SendForwardMessageAction;
-import org.apache.hupa.shared.domain.SendMessageAction;
-import org.apache.hupa.shared.domain.SendReplyMessageAction;
-import org.apache.hupa.shared.domain.SmtpMessage;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.ContactsUpdatedEvent;
-import org.apache.hupa.shared.events.ContactsUpdatedEventHandler;
-import org.apache.hupa.shared.events.FlashEvent;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.events.SentMessageEvent;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
-<<<<<<< HEAD
-import org.apache.hupa.widgets.ui.HasEnable;
-
-=======
-=======
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-=======
->>>>>>> try to get message details, problem is:
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
->>>>>>> 1. improve the inbox folder place.
-import org.apache.hupa.shared.rpc.ForwardMessage;
-import org.apache.hupa.shared.rpc.ReplyMessage;
-import org.apache.hupa.shared.rpc.SendMessage;
-=======
-import org.apache.hupa.shared.events.SentMessageEvent;
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
->>>>>>> forward and reply message to use RF
-import org.apache.hupa.widgets.ui.HasEnable;
-
-<<<<<<< HEAD
-import com.google.gwt.activity.shared.AbstractActivity;
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> fix issue 10
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.EventBus;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import com.google.gwt.place.shared.PlaceController;
->>>>>>> 1. improve the inbox folder place.
-=======
-import com.google.gwt.place.shared.PlaceController;
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> forward and reply message to use RF
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Inject;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.web.bindery.requestfactory.shared.Receiver;
-
-public class MessageSendActivity extends AppBaseActivity {
-=======
-=======
->>>>>>> 1. improve the inbox folder place.
-
-public class MessageSendActivity extends AbstractActivity {
-
-    private ArrayList<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
-    private Type type = Type.NEW;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-=======
-    private IMAPFolder folder;
->>>>>>> 1. improve the inbox folder place.
-=======
-    private IMAPFolderProxy folder;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private Message oldmessage;
-    
-    protected SMTPMessage message = null;
-    @SuppressWarnings("unused")
-    private MessageDetails oldDetails;
-    
-//	@Inject private DispatchAsync dispatcher;
-    @Inject private Displayable display;
-    @Inject private EventBus eventBus;
-    @Inject private PlaceController placeController;
-	
-=======
-import com.google.web.bindery.requestfactory.shared.Receiver;
-
-public class MessageSendActivity extends AppBaseActivity {
-
-<<<<<<< HEAD
-	private List<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
-	private Type type = Type.NEW;
-	private ImapFolder folder;
-	private Message oldmessage;
-
-	protected SmtpMessage message;
-	private MessageDetails oldDetails;
-
-	@Inject private Displayable display;
-	@Inject private EventBus eventBus;
-	@Inject private HupaRequestFactory requestFactory;
-
->>>>>>> forward and reply message to use RF
-	private MessageSendPlace place;
-
-	private User user;
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-
-=======
->>>>>>> scrub code
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		bind();
-		revealDisplay(user, folder, oldmessage, oldDetails, type);
-		container.setWidget(display.asWidget());
-	}
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-
-	public MessageSendActivity with(MessageSendPlace place) {
-<<<<<<< HEAD
-=======
-=======
->>>>>>> 1. improve the inbox folder place.
-	@Inject
-	public MessageSendActivity(Displayable display, EventBus eventBus, PlaceController placeController,
-			 DispatchAsync dispatcher){
-		this.dispatcher = dispatcher;
-		this.display = display;
-		this.eventBus = eventBus;
-		this.placeController = placeController;
-		
-	}
-=======
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-	
-	public MessageSendActivity with(MessageSendPlace place){
-=======
-
-	public MessageSendActivity with(MessageSendPlace place) {
->>>>>>> forward and reply message to use RF
-		this.place = place;
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> scrub code
-		this.user = place.getUser();
-		this.folder = place.getFolder();
-		this.oldmessage = place.getMessage();
-		this.oldDetails = place.getMessageDetails();
-		this.type = place.getForward();
-		return this;
-	}
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private void bind() {
-		eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-			public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-				reset();
-			}
-		});
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-			public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				reset();
-			}
-		});
-		eventBus.addHandler(ContactsUpdatedEvent.TYPE, new ContactsUpdatedEventHandler() {
-			public void onContactsUpdated(ContactsUpdatedEvent event) {
-				display.fillContactList(event.getContacts());
-			}
-		});
-		registrations.add(display.getSendClick().addClickHandler(sendClickHandler));
-		registrations.add(display.getBackButtonClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new BackEvent());
-			}
-		}));
-		registrations.add(display.getUploader().addOnStatusChangedHandler(onStatusChangedHandler));
-		registrations.add(display.getUploader().addOnFinishUploadHandler(onFinishUploadHandler));
-		registrations.add(display.getUploader().addOnCancelUploadHandler(onCancelUploadHandler));
-		reset();
-	}
-
-	protected ClickHandler sendClickHandler = new ClickHandler() {
-		public void onClick(ClickEvent event) {
-			if (validate()) {
-				sendReq = rf.sendMessageRequest();
-				message = sendReq.create(SmtpMessage.class);
-				List<MessageAttachment> attaches = new ArrayList<MessageAttachment>();
-				for(MessageAttachment attach : attachments){// we must use this, else console will complain a NullPointerException
-					MessageAttachment attachMent = sendReq.create(MessageAttachment.class);
-					attachMent.setName(attach.getName());
-					attachMent.setSize(attach.getSize());
-					attachMent.setContentType(attach.getContentType());
-					attaches.add(attachMent);
-				}
-				
-				message.setFrom(display.getFromText().getText());
-				message.setSubject(display.getSubjectText().getText());
-				message.setText(display.getMessageHTML().getHTML());
-				message.setMessageAttachments(attaches);
-				message.setTo(emailTextToArray(display.getToText().getText()));
-				message.setCc(emailTextToArray(display.getCcText().getText()));
-				message.setBcc(emailTextToArray(display.getBccText().getText()));
-
-				if (type == Type.NEW) {
-					SendMessageAction sendAction = sendReq.create(SendMessageAction.class);
-//					SmtpMessage sm = sendReq.edit(message);
-					sendAction.setMessage(message);
-					sendReq.send(sendAction).fire(new Receiver<GenericResult>() {
-						@Override
-						public void onSuccess(GenericResult response) {
-							afterSend(response);
-						}
-					});
-				} else if (type == Type.FORWARD) {
-					SendForwardMessageRequest forwardReq = rf.sendForwardMessageRequest();
-					SendForwardMessageAction forwardAction = forwardReq.create(SendForwardMessageAction.class);
-					forwardAction.setMessage(message);
-					forwardAction.setFolder(folder);
-					forwardAction.setUid(oldmessage.getUid());
-					forwardReq.send(forwardAction).fire(new Receiver<GenericResult>() {
-						@Override
-						public void onSuccess(GenericResult response) {
-							afterSend(response);
-						}
-					});
-				} else {
-					SendReplyMessageRequest replyReq = rf.sendReplyMessageRequest();
-					SendReplyMessageAction replyAction = replyReq.create(SendReplyMessageAction.class);
-					replyAction.setMessage(message);
-					replyAction.setFolder(folder);
-					replyAction.setUid(oldmessage.getUid());
-					replyReq.send(replyAction).fire(new Receiver<GenericResult>() {
-						@Override
-						public void onSuccess(GenericResult response) {
-							afterSend(response);
-						}
-					});
-				}
-			}
-		}
-	};
-
-	private void afterSend(GenericResult response) {
-		if (response.isSuccess()) {
-			eventBus.fireEvent(new SentMessageEvent());
-			reset();
-		} else {
-			eventBus.fireEvent(new FlashEvent(response.getMessage(), 6000));
-		}
-		display.setLoading(false);
-	}
-	protected boolean validate() {
-		// Don't trust only in view validation
-		return display.validate() && display.getToText().getText().trim().length() > 0
-		        && EmailListValidator.isValidAddressList(display.getToText().getText())
-		        && EmailListValidator.isValidAddressList(display.getCcText().getText())
-		        && EmailListValidator.isValidAddressList(display.getBccText().getText());
-	}
-
-	protected ArrayList<String> emailTextToArray(String emails) {
-		ArrayList<String> cc = new ArrayList<String>();
-		for (String ccRaw : emails.split("[,;]+")) {
-			String ccRecip = ccRaw.trim();
-			if (ccRecip.length() > 0) {
-				cc.add(ccRaw.trim());
-			}
-		}
-		return cc;
-	}
-
-	public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails,
-	        String mailto, Type type) {
-		this.reset();
-		this.oldmessage = oldmessage;
-		this.oldDetails = oldDetails;
-		this.folder = folder;
-		this.type = type;
-
-		// Depending on the type, we have to automatically fill the view inputs
-		display.getFromText().setText(user.getName());
-		display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails, type));
-		if (type.equals(Type.NEW) && mailto != null) {
-			display.getToText().setText(mailto);
-		} else if (type.equals(Type.FORWARD)) {
-			String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-			if (!subject.toLowerCase().startsWith("fwd:")) {
-				subject = "Fwd: " + subject;
-			}
-			display.getSubjectText().setText(subject);
-		} else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-			String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-			if (!subject.toLowerCase().startsWith("re:")) {
-				subject = "Re: " + subject;
-			}
-			display.getSubjectText().setText(subject);
-			if (type.equals(Type.REPLY)) {
-				if (oldmessage.getReplyto() != null && !oldmessage.getFrom().contains(oldmessage.getReplyto())) {
-					display.getToText().setText(oldmessage.getReplyto());
-				} else {
-					display.getToText().setText(oldmessage.getFrom());
-				}
-			} else {
-				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.getCcText().setText(Util.listToString(list));
-				if (oldmessage.getTo() != null) {
-					oldmessage.getTo().remove(user.getName());
-				}
-				display.getToText().setText(oldmessage.getFrom());
-			}
-		}
-		display.refresh();
-		display.getEditorFocus().setFocus(true);
-	}
-
-	public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails, Type type) {
-		this.revealDisplay(user, folder, oldmessage, oldDetails, null, type);
-	}
-
-	public void revealDisplay(User user, String mailto) {
-		revealDisplay(user, null, null, null, mailto, Type.NEW);
-	}
-
-	/**
-	 * Bind the given user to the presenter
-	 * 
-	 * @param user
-	 */
-	public void revealDisplay(User user) {
-		revealDisplay(user, null, null, null, null, Type.NEW);
-	}
-
-	private static String generateHeader(Message message, Type type) {
-		String ret = "<br>";
-		if (message != null) {
-			if (type.equals(Type.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(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-				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, Type 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 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;
-	}
-	/**
-	 * Reset everything
-	 */
-	private void reset() {
-		display.getUploader().reset();
-		display.getBccText().setText("");
-		display.getCcText().setText("");
-		display.getToText().setText("");
-		display.getSubjectText().setText("");
-		attachments.clear();
-		folder = null;
-		oldmessage = null;
-		type = Type.NEW;
-	}
-
-	/**
-	 * The Type for which the SendPresenter will get used
-	 */
-	public enum Type {
-		NEW, REPLY, REPLY_ALL, FORWARD
-	}
-
-	private OnFinishUploaderHandler onFinishUploadHandler = new OnFinishUploaderHandler() {
-		public void onFinish(IUploader uploader) {
-			if (uploader.getStatus() == Status.SUCCESS) {
-				String name = uploader.getInputName();
-				MessageAttachment attachment = new MessageAttachmentImpl();
-				attachment.setName(name);
-				attachments.add(attachment);
-				display.getSendEnable().setEnabled(true);
-			}
-		}
-	};
-
-	private OnStatusChangedHandler onStatusChangedHandler = new OnStatusChangedHandler() {
-		public void onStatusChanged(IUploader uploader) {
-			Status stat = display.getUploader().getStatus();
-			if (stat == Status.INPROGRESS)
-				display.getSendEnable().setEnabled(false);
-			else
-				display.getSendEnable().setEnabled(true);
-		}
-	};
-
-	private OnCancelUploaderHandler onCancelUploadHandler = new OnCancelUploaderHandler() {
-		public void onCancel(IUploader uploader) {
-			for (MessageAttachment attachment : attachments) {
-				if (attachment.getName().equals(uploader.getInputName()))
-					attachments.remove(attachment);
-			}
-		}
-	};
-
-	@Inject private Displayable display;
-	private List<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
-	private Type type = Type.NEW;
-	private ImapFolder folder;
-	private Message oldmessage;
-	protected SmtpMessage message;
-	private MessageDetails oldDetails;
-	private User user;
-	private SendMessageRequest sendReq;
-	
-<<<<<<< HEAD
-=======
-=======
->>>>>>> 1. improve the inbox folder place.
-	private void bind(){
-=======
-	private void bind() {
->>>>>>> forward and reply message to use RF
-		eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-			public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-				reset();
-			}
-		});
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-			public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				reset();
-			}
-		});
-		eventBus.addHandler(ContactsUpdatedEvent.TYPE, new ContactsUpdatedEventHandler() {
-			public void onContactsUpdated(ContactsUpdatedEvent event) {
-				display.fillContactList(event.getContacts());
-			}
-		});
-		registrations.add(display.getSendClick().addClickHandler(sendClickHandler));
-		registrations.add(display.getBackButtonClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new BackEvent());
-			}
-		}));
-		registrations.add(display.getUploader().addOnStatusChangedHandler(onStatusChangedHandler));
-		registrations.add(display.getUploader().addOnFinishUploadHandler(onFinishUploadHandler));
-		registrations.add(display.getUploader().addOnCancelUploadHandler(onCancelUploadHandler));
-		reset();
-	}
-
-	protected ClickHandler sendClickHandler = new ClickHandler() {
-		public void onClick(ClickEvent event) {
-			if (validate()) {
-				sendReq = rf.sendMessageRequest();
-				message = sendReq.create(SmtpMessage.class);
-				List<MessageAttachment> attaches = new ArrayList<MessageAttachment>();
-				for(MessageAttachment attach : attachments){// we must use this, else console will complain a NullPointerException
-					MessageAttachment attachMent = sendReq.create(MessageAttachment.class);
-					attachMent.setName(attach.getName());
-					attachMent.setSize(attach.getSize());
-					attachMent.setContentType(attach.getContentType());
-					attaches.add(attachMent);
-				}
-				
-				message.setFrom(display.getFromText().getText());
-				message.setSubject(display.getSubjectText().getText());
-				message.setText(display.getMessageHTML().getHTML());
-				message.setMessageAttachments(attaches);
-				message.setTo(emailTextToArray(display.getToText().getText()));
-				message.setCc(emailTextToArray(display.getCcText().getText()));
-				message.setBcc(emailTextToArray(display.getBccText().getText()));
-
-				if (type == Type.NEW) {
-					SendMessageAction sendAction = sendReq.create(SendMessageAction.class);
-//					SmtpMessage sm = sendReq.edit(message);
-					sendAction.setMessage(message);
-					sendReq.send(sendAction).fire(new Receiver<GenericResult>() {
-						@Override
-						public void onSuccess(GenericResult response) {
-							afterSend(response);
-						}
-					});
-				} else if (type == Type.FORWARD) {
-					SendForwardMessageRequest forwardReq = rf.sendForwardMessageRequest();
-					SendForwardMessageAction forwardAction = forwardReq.create(SendForwardMessageAction.class);
-					forwardAction.setMessage(message);
-					forwardAction.setFolder(folder);
-					forwardAction.setUid(oldmessage.getUid());
-					forwardReq.send(forwardAction).fire(new Receiver<GenericResult>() {
-						@Override
-						public void onSuccess(GenericResult response) {
-							afterSend(response);
-						}
-					});
-				} else {
-					SendReplyMessageRequest replyReq = rf.sendReplyMessageRequest();
-					SendReplyMessageAction replyAction = replyReq.create(SendReplyMessageAction.class);
-					replyAction.setMessage(message);
-					replyAction.setFolder(folder);
-					replyAction.setUid(oldmessage.getUid());
-					replyReq.send(replyAction).fire(new Receiver<GenericResult>() {
-						@Override
-						public void onSuccess(GenericResult response) {
-							afterSend(response);
-						}
-					});
-				}
-			}
-		}
-	};
-
-	private void afterSend(GenericResult response) {
-		if (response.isSuccess()) {
-			eventBus.fireEvent(new SentMessageEvent());
-			reset();
-		} else {
-			eventBus.fireEvent(new FlashEvent(response.getMessage(), 6000));
-		}
-		display.setLoading(false);
-	}
-	protected boolean validate() {
-		// Don't trust only in view validation
-		return display.validate() && display.getToText().getText().trim().length() > 0
-		        && EmailListValidator.isValidAddressList(display.getToText().getText())
-		        && EmailListValidator.isValidAddressList(display.getCcText().getText())
-		        && EmailListValidator.isValidAddressList(display.getBccText().getText());
-	}
-
-	protected ArrayList<String> emailTextToArray(String emails) {
-		ArrayList<String> cc = new ArrayList<String>();
-		for (String ccRaw : emails.split("[,;]+")) {
-			String ccRecip = ccRaw.trim();
-			if (ccRecip.length() > 0) {
-				cc.add(ccRaw.trim());
-			}
-		}
-		return cc;
-	}
-
-	public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails,
-	        String mailto, Type type) {
-		this.reset();
-		this.oldmessage = oldmessage;
-		this.oldDetails = oldDetails;
-		this.folder = folder;
-		this.type = type;
-
-		// Depending on the type, we have to automatically fill the view inputs
-		display.getFromText().setText(user.getName());
-		display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails, type));
-		if (type.equals(Type.NEW) && mailto != null) {
-			display.getToText().setText(mailto);
-		} else if (type.equals(Type.FORWARD)) {
-			String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-			if (!subject.toLowerCase().startsWith("fwd:")) {
-				subject = "Fwd: " + subject;
-			}
-			display.getSubjectText().setText(subject);
-		} else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-			String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-			if (!subject.toLowerCase().startsWith("re:")) {
-				subject = "Re: " + subject;
-			}
-			display.getSubjectText().setText(subject);
-			if (type.equals(Type.REPLY)) {
-				if (oldmessage.getReplyto() != null && !oldmessage.getFrom().contains(oldmessage.getReplyto())) {
-					display.getToText().setText(oldmessage.getReplyto());
-				} else {
-					display.getToText().setText(oldmessage.getFrom());
-				}
-			} else {
-				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.getCcText().setText(Util.listToString(list));
-				if (oldmessage.getTo() != null) {
-					oldmessage.getTo().remove(user.getName());
-				}
-				display.getToText().setText(oldmessage.getFrom());
-			}
-		}
-		display.refresh();
-		display.getEditorFocus().setFocus(true);
-	}
-
-	public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails, Type type) {
-		this.revealDisplay(user, folder, oldmessage, oldDetails, null, type);
-	}
-
-<<<<<<< HEAD
-    protected ClickHandler sendClickHandler = new ClickHandler() {
-        public void onClick(ClickEvent event) {
-            if (validate()) {
-                message = new SMTPMessage();
-                message.setFrom(display.getFromText().getText());
-                message.setSubject(display.getSubjectText().getText());
-                message.setText(display.getMessageHTML().getHTML());
-                message.setMessageAttachments(attachments);
-                message.setTo(emailTextToArray(display.getToText().getText()));
-                message.setCc(emailTextToArray(display.getCcText().getText()));
-                message.setBcc(emailTextToArray(display.getBccText().getText()));
-
-                SendMessage command;
-                if (type == Type.NEW) {
-                    command = new SendMessage(message);
-                } else if (type == Type.FORWARD) {
-                    command = new ForwardMessage(message, folder, oldmessage.getUid());
-                } else {
-                    command = new ReplyMessage(message, folder, oldmessage.getUid());
-                }
-//                dispatchMessage(dispatcher, eventBus, command);
-            }
-        }
-    };
-
-    protected boolean validate() {
-        // Don't trust only in view validation
-        return  display.validate() 
-                && display.getToText().getText().trim().length() > 0  
-                && EmailListValidator.isValidAddressList(display.getToText().getText()) 
-                && EmailListValidator.isValidAddressList(display.getCcText().getText()) 
-                && EmailListValidator.isValidAddressList(display.getBccText().getText());
-    }
-
-    protected ArrayList<String> emailTextToArray(String emails) {
-        ArrayList<String> cc = new ArrayList<String>();
-        for (String ccRaw : emails.split("[,;]+")) {
-            String ccRecip = ccRaw.trim();
-            if (ccRecip.length() > 0) {
-                cc.add(ccRaw.trim());
-            }
-        }
-        return cc;
-    }
-
-    // Although dispatcher and eventBus parameters are not necessary, they are needed for testability
-//    protected void dispatchMessage(DispatchAsync dispatcher, final EventBus eventBus, Action<GenericResult> command) {
-//        display.setLoading(true);
-//        dispatcher.execute(command, new HupaEvoCallback<GenericResult>(dispatcher, eventBus) {
-//            public void callback(GenericResult result) {
-//                if (result.isSuccess()) {
-//                    eventBus.fireEvent(new SentMessageEvent());
-//                    reset();
-//                } else {
-//                    eventBus.fireEvent(new FlashEvent(result.getMessage(), 6000));
-//                }
-//                display.setLoading(false);
-//            }
-//        });
-//    }
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
-=======
-    public void revealDisplay(User user, IMAPFolder folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
->>>>>>> 1. improve the inbox folder place.
-=======
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.reset();
-        this.oldmessage = oldmessage;
-        this.oldDetails = oldDetails;
-        this.folder = folder;
-        this.type = type;
-
-        // Depending on the type, we have to automatically fill the view inputs
-        display.getFromText().setText(user.getName());
-        display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails, type));
-        if (type.equals(Type.NEW) && mailto != null) {
-                display.getToText().setText(mailto);
-        } else if (type.equals(Type.FORWARD)) {
-        	String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-        	if (!subject.toLowerCase().startsWith("fwd:")){
-        		subject = "Fwd: " + subject;
-        	}
-        	display.getSubjectText().setText(subject);
-        } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-        	String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-        	if (!subject.toLowerCase().startsWith("re:")){
-        		subject = "Re: " + subject;
-        	}
-        	display.getSubjectText().setText(subject);
-            if (type.equals(Type.REPLY)) { 
-                if (oldmessage.getReplyto() != null && !oldmessage.getFrom().contains(oldmessage.getReplyto())) {
-                    display.getToText().setText(oldmessage.getReplyto());
-                } else {
-                    display.getToText().setText(oldmessage.getFrom());
-                }
-            } else {
-                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.getCcText().setText(Util.listToString(list));
-                if (oldmessage.getTo() != null) {
-                    oldmessage.getTo().remove(user.getName());
-                }
-                display.getToText().setText(oldmessage.getFrom());
-            }
-        } 
-        display.refresh();
-        display.getEditorFocus().setFocus(true);
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, Type type) {
-=======
-    public void revealDisplay(User user, IMAPFolder folder, Message oldmessage, MessageDetails oldDetails, Type type) {
->>>>>>> 1. improve the inbox folder place.
-=======
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, Type type) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails, Type type) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.revealDisplay(user, folder, oldmessage, oldDetails, null, type);
-    }
-
-    public void revealDisplay(User user, String mailto) {
-        revealDisplay(user, null, null, null, mailto, Type.NEW);
-    }
-
-    /**
-     * Bind the given user to the presenter
-     * 
-     * @param user
-     */
-    public void revealDisplay(User user) {
-        revealDisplay(user, null, null, null, null, Type.NEW);
-    }
-    
-    private static String generateHeader(Message message, Type type) {
-        String ret = "<br>";
-        if (message != null) {
-            if (type.equals(Type.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(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-                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, Type 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 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;
-    }
-    /**
-     * Reset everything
-     */
-    private void reset() {
-        display.getUploader().reset();
-        display.getBccText().setText("");
-        display.getCcText().setText("");
-        display.getToText().setText("");
-        display.getSubjectText().setText("");
-        attachments.clear();
-        folder = null;
-        oldmessage = null;
-        type = Type.NEW;
-    }
-    /**
-     * The Type for which the SendPresenter will get used
-     */
-    public enum Type {
-        NEW, REPLY, REPLY_ALL, FORWARD
-    }
-    private OnFinishUploaderHandler onFinishUploadHandler = new OnFinishUploaderHandler() {
-        public void onFinish(IUploader uploader) {
-            if (uploader.getStatus() == Status.SUCCESS) {
-                String name = uploader.getInputName();
-                MessageAttachment attachment = new MessageAttachmentImpl();
-                attachment.setName(name);
-                attachments.add(attachment);
-                display.getSendEnable().setEnabled(true);
-            }
-        }
-    };
-
-    private OnStatusChangedHandler onStatusChangedHandler = new OnStatusChangedHandler() {
-        public void onStatusChanged(IUploader uploader) {
-            Status stat = display.getUploader().getStatus();
-            if (stat == Status.INPROGRESS)
-                display.getSendEnable().setEnabled(false);
-            else
-                display.getSendEnable().setEnabled(true);
-        }
-    };
-
-    private OnCancelUploaderHandler onCancelUploadHandler = new OnCancelUploaderHandler() {
-        public void onCancel(IUploader uploader) {
-            for (MessageAttachment attachment : attachments) {
-                if (attachment.getName().equals(uploader.getInputName()))
-                    attachments.remove(attachment);
-            }
-        }
-    };
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
-	public void revealDisplay(User user, String mailto) {
-		revealDisplay(user, null, null, null, mailto, Type.NEW);
-	}
-
-	/**
-	 * Bind the given user to the presenter
-	 * 
-	 * @param user
-	 */
-	public void revealDisplay(User user) {
-		revealDisplay(user, null, null, null, null, Type.NEW);
-	}
-
-	private static String generateHeader(Message message, Type type) {
-		String ret = "<br>";
-		if (message != null) {
-			if (type.equals(Type.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(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-				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, Type 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 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;
-	}
-	/**
-	 * Reset everything
-	 */
-	private void reset() {
-		display.getUploader().reset();
-		display.getBccText().setText("");
-		display.getCcText().setText("");
-		display.getToText().setText("");
-		display.getSubjectText().setText("");
-		attachments.clear();
-		folder = null;
-		oldmessage = null;
-		type = Type.NEW;
-	}
-
-	/**
-	 * The Type for which the SendPresenter will get used
-	 */
-	public enum Type {
-		NEW, REPLY, REPLY_ALL, FORWARD
-	}
-
-	private OnFinishUploaderHandler onFinishUploadHandler = new OnFinishUploaderHandler() {
-		public void onFinish(IUploader uploader) {
-			if (uploader.getStatus() == Status.SUCCESS) {
-				String name = uploader.getInputName();
-				MessageAttachment attachment = new MessageAttachmentImpl();
-				attachment.setName(name);
-				attachments.add(attachment);
-				display.getSendEnable().setEnabled(true);
-			}
-		}
-	};
-
-	private OnStatusChangedHandler onStatusChangedHandler = new OnStatusChangedHandler() {
-		public void onStatusChanged(IUploader uploader) {
-			Status stat = display.getUploader().getStatus();
-			if (stat == Status.INPROGRESS)
-				display.getSendEnable().setEnabled(false);
-			else
-				display.getSendEnable().setEnabled(true);
-		}
-	};
-
-	private OnCancelUploaderHandler onCancelUploadHandler = new OnCancelUploaderHandler() {
-		public void onCancel(IUploader uploader) {
-			for (MessageAttachment attachment : attachments) {
-				if (attachment.getName().equals(uploader.getInputName()))
-					attachments.remove(attachment);
-			}
-		}
-	};
-
-<<<<<<< HEAD
->>>>>>> forward and reply message to use RF
-=======
-	@Inject private Displayable display;
-	private List<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
-	private Type type = Type.NEW;
-	private ImapFolder folder;
-	private Message oldmessage;
-	protected SmtpMessage message;
-	private MessageDetails oldDetails;
-	private User user;
-	private SendMessageRequest sendReq;
-	
->>>>>>> scrub code
-	public interface Displayable extends WidgetDisplayable {
-=======
-	public interface Displayable extends IsWidget {
->>>>>>> replace with IsWidget
-		public HasText getFromText();
-		public HasText getToText();
-		public HasText getCcText();
-		public HasText getBccText();
-		public HasText getSubjectText();
-		public HasHTML getMessageHTML();
-		public Focusable getEditorFocus();
-		public HasClickHandlers getSendClick();
-		public HasEnable getSendEnable();
-		public IUploader getUploader();
-		public HasClickHandlers getBackButtonClick();
-		public void refresh();
-		public void setLoading(boolean loading);
-		public void fillContactList(Contact[] contacts);
-		public boolean validate();
-	}
-}
diff --git a/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java b/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java
deleted file mode 100644
index bbdfac0..0000000
--- a/client/src/main/java/org/apache/hupa/client/activity/TopActivity.java
+++ /dev/null
@@ -1,604 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-<<<<<<< HEAD
-package org.apache.hupa.client.activity;
-
-import org.apache.hupa.client.HupaConstants;
-<<<<<<< HEAD
-import org.apache.hupa.client.rf.IdleRequest;
-import org.apache.hupa.client.rf.LogoutUserRequest;
-import org.apache.hupa.shared.domain.IdleAction;
-import org.apache.hupa.shared.domain.IdleResult;
-import org.apache.hupa.shared.domain.LogoutUserResult;
-import org.apache.hupa.shared.domain.User;
-=======
-=======
->>>>>>> introduce the top activity
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-package org.apache.hupa.client.activity;
-
-import org.apache.hupa.client.HupaConstants;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.evo.HupaEvoCallback;
-import org.apache.hupa.client.place.DefaultPlace;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.shared.data.User;
->>>>>>> introduce the top activity
-=======
-import org.apache.hupa.client.HupaEvoCallback;
-import org.apache.hupa.client.mvp.WidgetDisplayable;
-=======
-import org.apache.hupa.client.evo.HupaEvoCallback;
->>>>>>> Make the evo more clear.
-import org.apache.hupa.client.place.DefaultPlace;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.shared.data.User;
->>>>>>> introduce the top activity
-=======
-import org.apache.hupa.client.place.DefaultPlace;
-=======
->>>>>>> scrub code
-import org.apache.hupa.client.rf.IdleRequest;
-import org.apache.hupa.client.rf.LogoutUserRequest;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.shared.domain.IdleAction;
-import org.apache.hupa.shared.domain.IdleResult;
-import org.apache.hupa.shared.domain.LogoutUserResult;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.events.FlashEvent;
-import org.apache.hupa.shared.events.FlashEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
-import org.apache.hupa.shared.events.LogoutEvent;
-import org.apache.hupa.shared.events.LogoutEventHandler;
-import org.apache.hupa.shared.events.ServerStatusEvent;
-import org.apache.hupa.shared.events.ServerStatusEvent.ServerStatus;
-import org.apache.hupa.shared.events.ServerStatusEventHandler;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-
-=======
-=======
->>>>>>> introduce the top activity
-import org.apache.hupa.shared.rpc.CheckSession;
-import org.apache.hupa.shared.rpc.CheckSessionResult;
-import org.apache.hupa.shared.rpc.Idle;
-import org.apache.hupa.shared.rpc.IdleResult;
-import org.apache.hupa.shared.rpc.LogoutUser;
-import org.apache.hupa.shared.rpc.LogoutUserResult;
-=======
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-
-<<<<<<< HEAD
-import com.google.gwt.activity.shared.AbstractActivity;
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-=======
->>>>>>> scrub code
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.EventBus;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Inject;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-
-public class TopActivity extends AppBaseActivity {
-
-	private static final int IDLE_INTERVAL = 150000;
-
-=======
-=======
->>>>>>> introduce the top activity
-import com.google.gwt.place.shared.PlaceController;
-=======
->>>>>>> scrub code
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.inject.Inject;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.inject.Provider;
-=======
->>>>>>> introduce the top activity
-=======
-import com.google.inject.Provider;
->>>>>>> 
-=======
-import com.google.web.bindery.requestfactory.shared.Receiver;
->>>>>>> other RFs
-
-public class TopActivity extends AppBaseActivity {
-
-	private static final int IDLE_INTERVAL = 150000;
-<<<<<<< HEAD
-<<<<<<< HEAD
-	HupaConstants constants;
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-=======
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-=======
-
->>>>>>> other RFs
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		container.setWidget(display.asWidget());
-		bind();
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-		checkSession();
->>>>>>> introduce the top activity
-=======
-		checkSession();
->>>>>>> introduce the top activity
-=======
-//		checkSession();
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-=======
-		// checkSession();
->>>>>>> other RFs
-=======
->>>>>>> scrub code
-	}
-
-	private void bind() {
-		eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-			public void onLogin(LoginEvent event) {
-				user = event.getUser();
-				display.getUserText().setText(event.getUser().getName());
-				noopTimer.scheduleRepeating(IDLE_INTERVAL);
-				showMain(user);
-				display.showMessage(constants.welcome(), 3000);
-			}
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-		});
-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-=======
-=======
->>>>>>> introduce the top activity
-
-		});
-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-=======
-		});
-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
->>>>>>> scrub code
-			public void onLogout(LogoutEvent event) {
-				User u = event.getUser();
-				String username = null;
-				if (u != null) {
-					username = u.getName();
-				}
-				showLogin(username);
-				noopTimer.cancel();
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-				TopActivity.this.placeController.goTo(defaultPlaceProvider.get());
-			}
-<<<<<<< HEAD
-		});
-		registerHandler(display.getLogoutClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				doLogout();
-			}
-		}));
-		registerHandler(display.getContactsClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				showContacts();
-			}
-		}));
-		registerHandler(display.getMainClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				showMain(user);
-			}
-<<<<<<< HEAD
-		}));
-		eventBus.addHandler(ServerStatusEvent.TYPE, new ServerStatusEventHandler() {
-=======
-=======
-=======
-				TopActivity.this.placeController.goTo(defaultPlaceProvider.get());
->>>>>>> 
-=======
-//				TopActivity.this.placeController.goTo(defaultPlaceProvider.get());
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-=======
->>>>>>> other RFs
-			}
->>>>>>> introduce the top activity
-
-=======
->>>>>>> scrub code
-		});
-		registerHandler(display.getLogoutClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				doLogout();
-			}
-		}));
-		registerHandler(display.getContactsClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				showContacts();
-			}
-		}));
-		registerHandler(display.getMainClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				showMain(user);
-			}
-		}));
-		eventBus.addHandler(ServerStatusEvent.TYPE, new ServerStatusEventHandler() {
-<<<<<<< HEAD
-
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-=======
->>>>>>> scrub code
-			public void onServerStatusChange(ServerStatusEvent event) {
-				if (event.getStatus() != serverStatus) {
-					GWT.log("Server status has hanged from " + serverStatus + " to" + event.getStatus(), null);
-					serverStatus = event.getStatus();
-					display.setServerStatus(serverStatus);
-				}
-			}
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-		});
-		eventBus.addHandler(FlashEvent.TYPE, new FlashEventHandler() {
-			public void onFlash(FlashEvent event) {
-				display.showMessage(event.getMessage(), event.getMillisec());
-			}
-		});
-	}
-
-	private void doLogout() {
-		if (user != null) {
-			LogoutUserRequest req = rf.logoutRequest();
-<<<<<<< HEAD
-			req.logout().fire(new Receiver<LogoutUserResult>() {
-				@Override
-				public void onSuccess(LogoutUserResult response) {
-					eventBus.fireEvent(new LogoutEvent(response.getUser()));
-=======
-=======
->>>>>>> introduce the top activity
-
-=======
->>>>>>> scrub code
-		});
-		eventBus.addHandler(FlashEvent.TYPE, new FlashEventHandler() {
-			public void onFlash(FlashEvent event) {
-				display.showMessage(event.getMessage(), event.getMillisec());
-			}
-		});
-	}
-
-	private void doLogout() {
-<<<<<<< HEAD
-<<<<<<< HEAD
-		if (user != null) {
-			dispatcher.execute(new LogoutUser(), new HupaEvoCallback<LogoutUserResult>(dispatcher, eventBus) {
-				public void callback(LogoutUserResult result) {
-					eventBus.fireEvent(new LogoutEvent(result.getUser()));
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-				}
-			});
-		}
-=======
-//		if (user != null) {
-//			dispatcher.execute(new LogoutUser(), new HupaEvoCallback<LogoutUserResult>(dispatcher, eventBus) {
-//				public void callback(LogoutUserResult result) {
-//					eventBus.fireEvent(new LogoutEvent(result.getUser()));
-//				}
-//			});
-//		}
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-=======
-		if (user != null) {
-			LogoutUserRequest req = requestFactory.logoutRequest();
-=======
->>>>>>> change message list view to make it not refresh the whole list when click one of the messages
-			req.logout().fire(new Receiver<LogoutUserResult>() {
-				@Override
-				public void onSuccess(LogoutUserResult response) {
-					eventBus.fireEvent(new LogoutEvent(response.getUser()));
-				}
-			});
-		}
->>>>>>> other RFs
-	}
-
-	private void showMain(User user) {
-		display.showTopNavigation(true);
-		display.showContactsButton();
-	}
-
-	private void showLogin(String username) {
-		display.showTopNavigation(false);
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-//		placeController.goTo(new DefaultPlace());
-=======
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-=======
-		placeController.goTo(new DefaultPlace());
->>>>>>> other RFs
-=======
-//		placeController.goTo(new DefaultPlace());
->>>>>>> cope with issue #36, the default place and and the mail folder place, we would always come up with the default place whenever giving a empty string token
-	}
-
-	private void showContacts() {
-		display.showTopNavigation(true);
-		display.showMainButton();
-	}
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> other RFs
-
-	private Timer noopTimer = new IdleTimer();
-
-
-	@Inject private Displayable display;
-	@Inject private HupaConstants constants;
-	private User user;
-	private ServerStatus serverStatus = ServerStatus.Available;
-	
-<<<<<<< HEAD
-=======
-	private Timer noopTimer = new IdleTimer();
-
-	@Inject
-	public TopActivity(Displayable display, EventBus eventBus, PlaceController placeController, Provider<DefaultPlace> defaultPlaceProvider,
-=======
-	private Timer noopTimer = new IdleTimer();
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-	@Inject
-<<<<<<< HEAD
-	public TopActivity(Displayable display, EventBus eventBus, PlaceController placeController,
->>>>>>> introduce the top activity
-=======
-	public TopActivity(Displayable display, EventBus eventBus, PlaceController placeController, Provider<DefaultPlace> defaultPlaceProvider,
->>>>>>> 
-			HupaConstants constants, DispatchAsync dispatcher) {
-		this.dispatcher = dispatcher;
-		this.display = display;
-		this.eventBus = eventBus;
-<<<<<<< HEAD
-<<<<<<< HEAD
-		this.defaultPlaceProvider = defaultPlaceProvider;
-=======
->>>>>>> introduce the top activity
-=======
-		this.defaultPlaceProvider = defaultPlaceProvider;
->>>>>>> 
-		this.constants = constants;
-		this.placeController = placeController;
-
-	}
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-=======
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-=======
-
-	@Inject private Displayable display;
-	@Inject private HupaConstants constants;
-	private User user;
-	private ServerStatus serverStatus = ServerStatus.Available;
-	
->>>>>>> scrub code
-	public interface Displayable extends WidgetDisplayable {
-=======
-	public interface Displayable extends IsWidget {
->>>>>>> replace with IsWidget
-		public HasClickHandlers getLogoutClick();
-		public HasClickHandlers getContactsClick();
-		public HasClickHandlers getMainClick();
-		public void showTopNavigation(boolean show);
-		public void showContactsButton();
-		public void showMainButton();
-		public HasText getUserText();
-		public void setServerStatus(ServerStatus status);
-		public void showMessage(String message, int millisecs);
-	}
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private class IdleTimer extends Timer {
-		boolean running = false;
-
-		public void run() {
-			if (!running) {
-				running = true;
-				IdleRequest req = rf.idleRequest();
-<<<<<<< HEAD
-				IdleAction action = req.create(IdleAction.class);
-				req.idle(action).fire(new Receiver<IdleResult>() {
-
-					@Override
-					public void onSuccess(IdleResult response) {
-=======
-=======
->>>>>>> introduce the top activity
-	private final Displayable display;
-	private final EventBus eventBus;
-	private final PlaceController placeController;
-	private final DispatchAsync dispatcher;
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private final Provider<DefaultPlace> defaultPlaceProvider;
-=======
->>>>>>> introduce the top activity
-=======
-	private final Provider<DefaultPlace> defaultPlaceProvider;
->>>>>>> 
-
-=======
-	@Inject private Displayable display;
-	@Inject private EventBus eventBus;
-	@Inject private PlaceController placeController;
-	@Inject private HupaConstants constants;
-<<<<<<< HEAD
-	
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-=======
-	@Inject private HupaRequestFactory requestFactory;
->>>>>>> other RFs
-	private User user;
-	private ServerStatus serverStatus = ServerStatus.Available;
-
-=======
->>>>>>> scrub code
-	private class IdleTimer extends Timer {
-		boolean running = false;
-
-		public void run() {
-			if (!running) {
-				running = true;
-<<<<<<< HEAD
-<<<<<<< HEAD
-				dispatcher.execute(new Idle(), new HupaEvoCallback<IdleResult>(dispatcher, eventBus) {
-					public void callback(IdleResult result) {
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-=======
-				IdleRequest req = requestFactory.idleRequest();
-=======
->>>>>>> change message list view to make it not refresh the whole list when click one of the messages
-				IdleAction action = req.create(IdleAction.class);
-				req.idle(action).fire(new Receiver<IdleResult>() {
-
-					@Override
-					public void onSuccess(IdleResult response) {
->>>>>>> other RFs
-						running = false;
-						// check if the server is not supporting the Idle
-						// command.
-						// if so cancel this Timer
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-						if (response.isSupported() == false) {
-=======
-						if (result.isSupported() == false) {
->>>>>>> introduce the top activity
-=======
-						if (result.isSupported() == false) {
->>>>>>> introduce the top activity
-=======
-						if (response.isSupported() == false) {
->>>>>>> other RFs
-							IdleTimer.this.cancel();
-						}
-						// Noop
-						// TODO: put code here to read new events from server
-						// (new messages ...)
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-
-=======
->>>>>>> introduce the top activity
-=======
->>>>>>> introduce the top activity
-					}
-				});
-=======
-//				dispatcher.execute(new Idle(), new HupaEvoCallback<IdleResult>(dispatcher, eventBus) {
-//					public void callback(IdleResult result) {
-//						running = false;
-//						// check if the server is not supporting the Idle
-//						// command.
-//						// if so cancel this Timer
-//						if (result.isSupported() == false) {
-//							IdleTimer.this.cancel();
-//						}
-//						// Noop
-//						// TODO: put code here to read new events from server
-//						// (new messages ...)
-//					}
-//				});
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-=======
-
-					}
-				});
->>>>>>> other RFs
-			}
-		}
-	}
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java b/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
deleted file mode 100644
index 31073a2..0000000
--- a/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
+++ /dev/null
@@ -1,1559 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-<<<<<<< HEAD
-package org.apache.hupa.client.activity;
-
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.place.FolderPlace;
-import org.apache.hupa.client.place.MessageSendPlace;
-import org.apache.hupa.client.rf.GetMessageDetailsRequest;
-import org.apache.hupa.client.widgets.IMAPTreeItem;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
-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.User;
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.BackEventHandler;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.ExpandMessageEventHandler;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.ForwardMessageEvent;
-import org.apache.hupa.shared.events.ForwardMessageEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
-import org.apache.hupa.shared.events.NewMessageEvent;
-import org.apache.hupa.shared.events.NewMessageEventHandler;
-import org.apache.hupa.shared.events.ReplyMessageEvent;
-import org.apache.hupa.shared.events.ReplyMessageEventHandler;
-import org.apache.hupa.shared.events.SentMessageEvent;
-import org.apache.hupa.shared.events.SentMessageEventHandler;
-import org.apache.hupa.widgets.ui.HasEditable;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.place.shared.Place;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-
-public class WestActivity extends AppBaseActivity {
-
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		bind();
-		container.setWidget(display.asWidget());
-	}
-
-	public void setCurrentPlace(Place place) {
-		this.currentPlace = place;
-	}
-
-	public WestActivity with(FolderPlace place) {
-		this.currentPlace = place;
-//		this.user = place.getUser();
-		this.folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
-		return this;
-	}
-
-	private void cloneFolder(ImapFolder desc, ImapFolder src) {
-	    desc.setChildren(src.getChildren());
-		desc.setDelimiter(src.getDelimiter());
-		desc.setFullName(src.getFullName());
-		desc.setMessageCount(src.getMessageCount());
-		desc.setName(src.getName());
-		desc.setSubscribed(src.getSubscribed());
-		desc.setUnseenMessageCount(src.getUnseenMessageCount());
-    }
-
-	private void bind() {
-		eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-			public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-				showMessageTable(loadMessagesEvent.getUser(), loadMessagesEvent.getFolder(),
-				        loadMessagesEvent.getSearchValue());
-			}
-		});
-		eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
-			public void onExpandMessage(ExpandMessageEvent event) {
-//				final boolean decreaseUnseen;
-				final Message message = event.getMessage();
-				// check if the message was already seen in the past
-				if (event.getMessage().getFlags().contains(IMAPFlag.SEEN) == false) {
-//					decreaseUnseen = true;//TODO 1209
-				} else {
-//					decreaseUnseen = false;
-				}
-
-				GetMessageDetailsRequest req = rf.messageDetailsRequest();
-<<<<<<< HEAD
-				GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
-				final ImapFolder f = req.create(ImapFolder.class);
-//				event.getFolder().setFolderTo(f);
-				cloneFolder(f, event.getFolder());
-				action.setFolder(f);
-				action.setUid(message.getUid());
-				req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
-					@Override
-					public void onSuccess(GetMessageDetailsResult response) {
-						/*
-						 * TODO if (decreaseUnseen) { eventBus.fireEvent(new
-						 * DecreaseUnseenEvent(user, folder)); }
-						 */
-//						placeController.goTo(messagePlaceProvider.get().with(user, f, message,
-//						        response.getMessageDetails()));
-					}
-				});
-			}
-		});
-		eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
-			public void onNewMessageEvent(NewMessageEvent event) {
-				showNewMessage();
-			}
-		});
-		eventBus.addHandler(SentMessageEvent.TYPE, new SentMessageEventHandler() {
-			public void onSentMessageEvent(SentMessageEvent ev) {
-				showMessageTable(user, folder, searchValue);
-			}
-		});
-		eventBus.addHandler(ForwardMessageEvent.TYPE, new ForwardMessageEventHandler() {
-			public void onForwardMessageEvent(ForwardMessageEvent event) {
-				showForwardMessage(event);
-			}
-		});
-		eventBus.addHandler(ReplyMessageEvent.TYPE, new ReplyMessageEventHandler() {
-			public void onReplyMessageEvent(ReplyMessageEvent event) {
-				showReplyMessage(event);
-			}
-		});
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-			public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				user = event.getUser();
-				folder = event.getFolder();
-				showMessageTable(user, event.getFolder(), searchValue);
-			}
-		});
-		eventBus.addHandler(BackEvent.TYPE, new BackEventHandler() {
-			public void onBackEvent(BackEvent event) {
-				showMessageTable(user, folder, searchValue);
-			}
-		});
-		eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
-			public void onExpandMessage(ExpandMessageEvent event) {
-				if (editableTreeItem != null && editableTreeItem.isEdit()) {
-					editableTreeItem.cancelEdit();
-				}
-			}
-		});
-		eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
-			public void onNewMessageEvent(NewMessageEvent event) {
-				if (editableTreeItem != null && editableTreeItem.isEdit()) {
-					editableTreeItem.cancelEdit();
-				}
-			}
-		});
-		eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-			public void onLogin(LoginEvent event) {
-				user = event.getUser();
-				searchValue = null;
-			}
-		});
-		exportJSMethods(this);
-	}
-
-	public void openLink(String url) {
-		Window.open(url, "_blank", "");
-	}
-
-	public void mailTo(String mailto) {
-		// sendPresenter.revealDisplay(user, mailto);
-	}
-
-	private native void exportJSMethods(WestActivity westactivity) /*-{
-	                                                               $wnd.openLink = function(url) {
-	                                                               try {
-	                                                               westactivity.@org.apache.hupa.client.activity.WestActivity::openLink(Ljava/lang/String;) (url);
-	                                                               } catch(e) {}
-	                                                               return false;
-	                                                               };
-	                                                               $wnd.mailTo = function(mail) {
-	                                                               try {
-	                                                               westactivity.@org.apache.hupa.client.activity.WestActivity::mailTo(Ljava/lang/String;) (mail);
-	                                                               } catch(e) {}
-	                                                               return false;
-	                                                               };
-	                                                               }-*/;
-
-	private void showMessageTable(User user, ImapFolder folder, String searchValue) {
-		this.user = user;
-		this.folder = folder;
-		this.searchValue = searchValue;
-
-		// FIXME goto?
-//		placeController.goTo(new MailFolderPlace().with(user, folder, searchValue));
-	}
-
-	private void showNewMessage() {
-		pc.goTo(this.messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
-	}
-
-	private void showForwardMessage(ForwardMessageEvent event) {
-		pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
-		        event.getMessage(), event.getMessageDetails(), Type.FORWARD));
-	}
-
-	private void showReplyMessage(ReplyMessageEvent event) {
-		pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
-		        event.getMessage(), event.getMessageDetails(), event.getReplyAll() ? Type.REPLY_ALL : Type.REPLY));
-	}
-
-	@Inject private Displayable display;
-	@Inject private Provider<MessageSendPlace> messageSendPlaceProvider;
-//	@Inject private Provider<IMAPMessagePlace> messagePlaceProvider;
-	private User user;
-	private ImapFolder folder;
-	private IMAPTreeItem tItem;
-	private HasEditable editableTreeItem;
-	private String searchValue;
-	private Place currentPlace;
-
-	public interface Displayable extends IsWidget {
-	}
-=======
-=======
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-package org.apache.hupa.client.activity;
-
-<<<<<<< HEAD
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-<<<<<<< HEAD
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> try to change fetch messages to use RF
-=======
->>>>>>> refactoring.
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-import org.apache.hupa.client.place.IMAPMessagePlace;
-=======
->>>>>>> scrub code
-import org.apache.hupa.client.place.MailFolderPlace;
-=======
-import org.apache.hupa.client.place.FolderPlace;
->>>>>>> change place management and make refresh folder and message list more gentle
-import org.apache.hupa.client.place.MessageSendPlace;
-import org.apache.hupa.client.rf.GetMessageDetailsRequest;
-import org.apache.hupa.client.ui.WidgetDisplayable;
-import org.apache.hupa.client.widgets.IMAPTreeItem;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
-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.User;
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.BackEventHandler;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.ExpandMessageEventHandler;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.ForwardMessageEvent;
-import org.apache.hupa.shared.events.ForwardMessageEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
-import org.apache.hupa.shared.events.NewMessageEvent;
-import org.apache.hupa.shared.events.NewMessageEventHandler;
-import org.apache.hupa.shared.events.ReplyMessageEvent;
-import org.apache.hupa.shared.events.ReplyMessageEventHandler;
-import org.apache.hupa.shared.events.SentMessageEvent;
-import org.apache.hupa.shared.events.SentMessageEventHandler;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.rpc.CreateFolder;
-import org.apache.hupa.shared.rpc.DeleteFolder;
-import org.apache.hupa.shared.rpc.GenericResult;
-import org.apache.hupa.shared.rpc.GetMessageDetails;
-import org.apache.hupa.shared.rpc.GetMessageDetailsResult;
-=======
-import org.apache.hupa.client.HupaEvoCallback;
-=======
->>>>>>> Make the evo more clear.
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-import org.apache.hupa.client.evo.HupaEvoCallback;
-import org.apache.hupa.client.place.IMAPMessagePlace;
-import org.apache.hupa.client.place.MailFolderPlace;
-import org.apache.hupa.client.place.MessageSendPlace;
-import org.apache.hupa.client.rf.HupaRequestFactory;
-import org.apache.hupa.client.rf.IMAPFolderRequestContext;
-import org.apache.hupa.client.ui.WidgetContainerDisplayable;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.client.widgets.IMAPTreeItem;
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.Message;
-import org.apache.hupa.shared.data.Message.IMAPFlag;
-import org.apache.hupa.shared.data.MessageDetails;
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.BackEventHandler;
-import org.apache.hupa.shared.events.DecreaseUnseenEvent;
-import org.apache.hupa.shared.events.DecreaseUnseenEventHandler;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.ExpandMessageEventHandler;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.ForwardMessageEvent;
-import org.apache.hupa.shared.events.ForwardMessageEventHandler;
-import org.apache.hupa.shared.events.IncreaseUnseenEvent;
-import org.apache.hupa.shared.events.IncreaseUnseenEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
-import org.apache.hupa.shared.events.MessagesReceivedEvent;
-import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
-import org.apache.hupa.shared.events.NewMessageEvent;
-import org.apache.hupa.shared.events.NewMessageEventHandler;
-import org.apache.hupa.shared.events.ReplyMessageEvent;
-import org.apache.hupa.shared.events.ReplyMessageEventHandler;
-import org.apache.hupa.shared.events.SentMessageEvent;
-import org.apache.hupa.shared.events.SentMessageEventHandler;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-import org.apache.hupa.shared.rpc.CreateFolder;
-import org.apache.hupa.shared.rpc.DeleteFolder;
-import org.apache.hupa.shared.rpc.GenericResult;
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
-import org.apache.hupa.shared.rpc.GetMessageDetails;
-import org.apache.hupa.shared.rpc.GetMessageDetailsResult;
->>>>>>> 
-import org.apache.hupa.shared.rpc.RenameFolder;
-=======
->>>>>>> try to change fetch messages to use RF
-import org.apache.hupa.widgets.event.EditEvent;
-import org.apache.hupa.widgets.event.EditHandler;
-=======
->>>>>>> refactoring.
-import org.apache.hupa.widgets.ui.HasEditable;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.activity.shared.AbstractActivity;
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> 
-=======
->>>>>>> scrub code
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.logical.shared.HasSelectionHandlers;
-import com.google.gwt.event.logical.shared.SelectionEvent;
-import com.google.gwt.event.logical.shared.SelectionHandler;
-=======
->>>>>>> refactoring.
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.place.shared.Place;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.web.bindery.requestfactory.shared.Receiver;
-<<<<<<< HEAD
-=======
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.logical.shared.HasSelectionHandlers;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.place.shared.PlaceController;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.TreeItem;
-import com.google.inject.Inject;
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> 
-=======
-import com.google.web.bindery.requestfactory.shared.Receiver;
-<<<<<<< HEAD
->>>>>>> As the FetchFolders RequestFactory, but can not run correctly.
-=======
-import com.google.web.bindery.requestfactory.shared.ServerFailure;
->>>>>>> Succeed creating new folder
-=======
->>>>>>> refactoring.
-
-public class WestActivity extends AppBaseActivity {
-
-<<<<<<< HEAD
-	private final Displayable display;
-	private final EventBus eventBus;
-	private final PlaceController placeController;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private final Provider<IMAPMessagePlace> IMAPMessagePlaceProvider;
-	private final Provider<MessageSendPlace> messageSendPlaceProvider;
-	private final Provider<IMAPMessagePlace> messagePlaceProvider;
-<<<<<<< HEAD
-	
-    private DispatchAsync dispatcher;
-    private User user;
-    private IMAPFolderProxy folder;
-    private IMAPTreeItem tItem;
-    private HasEditable editableTreeItem;
-    private String searchValue;
-    
-    private Place currentPlace;
-    
-    public void setCurrentPlace(Place place){
-    	this.currentPlace = place;
-    }
-    
-    @Inject
-    public WestActivity(Displayable display, EventBus eventBus, PlaceController placeController,
-			DispatchAsync dispatcher,Provider<IMAPMessagePlace> IMAPMessagePlaceProvider,Provider<MessageSendPlace> messageSendPlaceProvider,Provider<IMAPMessagePlace> messagePlaceProvider){
-=======
-=======
-	private final Provider<MailInboxPlace> mailInboxPlaceProvider;
-=======
->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-	private final Provider<IMAPMessagePlace> IMAPMessagePlaceProvider;
-	private final Provider<MessageSendPlace> messageSendPlaceProvider;
->>>>>>> 
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		display.setUser(user);
-		loadTreeItems();
-		bind();
-		container.setWidget(display.asWidget());
-	}
-
-<<<<<<< HEAD
-	@Inject private Displayable display;
-	@Inject private EventBus eventBus;
-	@Inject private PlaceController placeController;
-	@Inject private Provider<IMAPMessagePlace> IMAPMessagePlaceProvider;
-	@Inject private Provider<MessageSendPlace> messageSendPlaceProvider;
-	@Inject private Provider<IMAPMessagePlace> messagePlaceProvider;
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-	
-    private User user;
-    private ImapFolder folder;
-    private IMAPTreeItem tItem;
-    private HasEditable editableTreeItem;
-    private String searchValue;
-    
-    private Place currentPlace;
-    
-    public void setCurrentPlace(Place place){
-    	this.currentPlace = place;
-    }
-<<<<<<< HEAD
-    
-    @Inject
-    public WestActivity(Displayable display, EventBus eventBus, PlaceController placeController,
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-			DispatchAsync dispatcher){
->>>>>>> Change to new mvp framework - first step
-=======
-			DispatchAsync dispatcher,Provider<MailInboxPlace> mailInboxPlaceProvider,Provider<IMAPMessagePlace> IMAPMessagePlaceProvider,Provider<MessageSendPlace> messageSendPlaceProvider){
->>>>>>> 
-=======
-			DispatchAsync dispatcher,Provider<IMAPMessagePlace> IMAPMessagePlaceProvider,Provider<MessageSendPlace> messageSendPlaceProvider){
->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-=======
-			DispatchAsync dispatcher,Provider<IMAPMessagePlace> IMAPMessagePlaceProvider,Provider<MessageSendPlace> messageSendPlaceProvider,Provider<IMAPMessagePlace> messagePlaceProvider){
->>>>>>> 1. improve the inbox folder place.
-    	this.dispatcher = dispatcher;
-    	this.display = display;
-    	this.eventBus = eventBus;
-    	this.placeController = placeController;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    	this.IMAPMessagePlaceProvider = IMAPMessagePlaceProvider;
-    	this.messageSendPlaceProvider = messageSendPlaceProvider;
-    	this.messagePlaceProvider = messagePlaceProvider;
-<<<<<<< HEAD
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-    	this.mailInboxPlaceProvider = mailInboxPlaceProvider;
-=======
->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-    	this.IMAPMessagePlaceProvider = IMAPMessagePlaceProvider;
-    	this.messageSendPlaceProvider = messageSendPlaceProvider;
->>>>>>> 
-=======
->>>>>>> 1. improve the inbox folder place.
-    	
-    }
-
-	@Override
-	public void start(AcceptsOneWidget container, EventBus eventBus) {
-		bind();
-		container.setWidget(display.asWidget());
-	}
-	
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public WestActivity with(MailFolderPlace place){
-    	this.currentPlace = place;
-    	this.user = place.getUser();
-=======
-    public WestActivity with(User user){
-    	this.user = user;
->>>>>>> Change to new mvp framework - first step
-=======
-=======
-    	
->>>>>>> fix issue 2&3. 	Handle exceptions thrown in async blocks & Simply injection code
-    public WestActivity with(MailFolderPlace place){
-    	this.currentPlace = place;
-    	this.user = place.getUser();
->>>>>>> 1. improve the inbox folder place.
-    	return this;
-    }
-
-    protected void loadTreeItems() {
-        display.setLoadingFolders(true);
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> As the FetchFolders RequestFactory, but can not run correctly.
-        
-        HupaRequestFactory rf = GWT.create(HupaRequestFactory.class);
-=======
-=======
-	@Inject private HupaRequestFactory requestFactory;
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> Succeed creating new folder
-=======
-	
-	private FetchMessagesRequest messageRequest;
->>>>>>> Solved the "java.lang.IllegalArgumentException: Attempting to edit an EntityProxy  previously edited by another RequestContext" and make GetMessageDetails work. Thanks to http://fascynacja.wordpress.com/tag/java-lang-illegalargumentexception-attempting-to-edit-an-entityproxy-previously-edited-by-another-requestcontext/
-=======
-
-<<<<<<< HEAD
-	private FetchMessagesRequest messagesRequest;
->>>>>>> forward and reply message to use RF
-
-=======
->>>>>>> fixed unread mail bug with just not dealing with it, for the west view should be replaced by Cell Tree in the future.
-	private User user;
-	private ImapFolder folder;
-	private IMAPTreeItem tItem;
-	private HasEditable editableTreeItem;
-	private String searchValue;
-
-	private Place currentPlace;
-
-=======
->>>>>>> scrub code
-	public void setCurrentPlace(Place place) {
-		this.currentPlace = place;
-	}
-
-	public WestActivity with(FolderPlace place) {
-		this.currentPlace = place;
-//		this.user = place.getUser();
-		this.folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
-		return this;
-	}
-
-<<<<<<< HEAD
-	protected void loadTreeItems() {
-		display.setLoadingFolders(true);
-		HupaRequestFactory rf = GWT.create(HupaRequestFactory.class);
->>>>>>> try to change fetch messages to use RF
-		rf.initialize(eventBus);
-		ImapFolderRequest folderRequest = rf.folderRequest();
-		folderRequest.requestFolders().fire(new Receiver<List<ImapFolder>>() {
-			@Override
-<<<<<<< HEAD
-			public void onSuccess(List<IMAPFolderProxy> response) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-			public void onSuccess(List<ImapFolder> response) {
-<<<<<<< HEAD
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-              display.bindTreeItems(createTreeNodes(response));
-<<<<<<< HEAD
-=======
-System.out.println("1111111"+response);
-              display.bindTreeItems(null);
->>>>>>> As the FetchFolders RequestFactory, but can not run correctly.
-=======
-              display.bindTreeItems(createTreeNodes(response));
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-//              // disable
-=======
->>>>>>> Allow client can use the domain entity interface.
-              display.getDeleteEnable().setEnabled(false);
-              display.getRenameEnable().setEnabled(false);
-              display.setLoadingFolders(false);
-				
-=======
-				display.bindTreeItems(createTreeNodes(response));
-				display.getDeleteEnable().setEnabled(false);
-				display.getRenameEnable().setEnabled(false);
-				display.setLoadingFolders(false);
->>>>>>> try to change fetch messages to use RF
-			}
-		});
-<<<<<<< HEAD
-        
-//        dispatcher.execute(new FetchFolders(), new HupaEvoCallback<FetchFoldersResult>(dispatcher, eventBus, display) {
-//            public void callback(FetchFoldersResult result) {
-//                display.bindTreeItems(createTreeNodes(result.getFolders()));
-//                // disable
-//                display.getDeleteEnable().setEnabled(false);
-//                display.getRenameEnable().setEnabled(false);
-//                display.setLoadingFolders(false);
-//
-//            }
-//        });
-        
-<<<<<<< HEAD
-=======
-        dispatcher.execute(new FetchFolders(), new HupaEvoCallback<FetchFoldersResult>(dispatcher, eventBus, display) {
-            public void callback(FetchFoldersResult result) {
-                display.bindTreeItems(createTreeNodes(result.getFolders()));
-                // disable
-                display.getDeleteEnable().setEnabled(false);
-                display.getRenameEnable().setEnabled(false);
-                display.setLoadingFolders(false);
-
-            }
-        });
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> As the FetchFolders RequestFactory, but can not run correctly.
-    }
-
-    /**
-     * Create recursive the TreeNodes with all childs
-     * 
-     * @param list
-     * @return
-     */
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private List<IMAPTreeItem> createTreeNodes(List<IMAPFolderProxy> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (IMAPFolderProxy iFolder : list) {
-=======
-    private List<IMAPTreeItem> createTreeNodes(List<IMAPFolder> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (IMAPFolder iFolder : list) {
->>>>>>> Change to new mvp framework - first step
-=======
-    private List<IMAPTreeItem> createTreeNodes(List<IMAPFolderProxy> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (IMAPFolderProxy iFolder : list) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private List<IMAPTreeItem> createTreeNodes(List<ImapFolder> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (ImapFolder iFolder : list) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-
-            final IMAPTreeItem record = new IMAPTreeItem(iFolder);
-//            record.addEditHandler(new EditHandler() {
-//
-//                public void onEditEvent(EditEvent event) {
-//                    if (event.getEventType().equals(EditEvent.EventType.Stop)) {
-//                        ImapFolderImpl iFolder = new ImapFolderImpl((String) event.getOldValue());
-//                        final String newName = (String) event.getNewValue();
-//                        if (iFolder.getFullName().equalsIgnoreCase(newName) == false) {
-//                            dispatcher.execute(new RenameFolder(iFolder, newName), new HupaEvoCallback<GenericResult>(dispatcher, eventBus) {
-//                                public void callback(GenericResult result) {
-//                                    folder.setFullName(newName);
-//                                }
-//                                public void callbackError(Throwable caught) {
-//                                    record.cancelEdit();
-//                                }
-//                            }); 
-//                        }
-//                    }
-//                }
-//
-//            });
-            record.setUserObject(iFolder);
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-            List<IMAPFolderProxy> childFolders = iFolder.getChildIMAPFolders();
-=======
-            List<IMAPFolder> childFolders = iFolder.getChildIMAPFolders();
->>>>>>> Change to new mvp framework - first step
-=======
-            List<IMAPFolderProxy> childFolders = iFolder.getChildIMAPFolders();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-            List<IMAPFolderProxy> childFolders = iFolder.getChildren();
->>>>>>> 
-=======
-            List<ImapFolder> childFolders = iFolder.getChildren();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            List<IMAPTreeItem> items = createTreeNodes(childFolders);
-            for (IMAPTreeItem item : items) {
-                record.addItem(item);
-            }
-
-            // Store the INBOX as starting point after first loading
-            if (iFolder.getFullName().equals(user.getSettings().getInboxFolderName())) {
-                folder = iFolder;
-                tItem = record;
-            }
-
-            tList.add(record);
-        }
-
-        // Sort tree
-        Collections.sort(tList, new Comparator<TreeItem>() {
-
-            public int compare(TreeItem o1, TreeItem o2) {
-                return o1.getText().compareTo(o2.getText());
-            }
-
-        });
-        return tList;
-    }
-	private void bind(){
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> 
-=======
-	}
-
-	/**
-	 * Create recursive the TreeNodes with all childs
-	 * 
-	 * @param list
-	 * @return
-	 */
-	private List<IMAPTreeItem> createTreeNodes(List<ImapFolder> list) {
-		List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-		for (ImapFolder iFolder : list) {
-
-			final IMAPTreeItem record = new IMAPTreeItem(iFolder);
-			record.addEditHandler(new EditHandler() {
-
-				public void onEditEvent(EditEvent event) {
-					if (event.getEventType().equals(EditEvent.EventType.Stop)) {
-						String oldFullName = (String) event.getOldValue();
-						final String newName = (String) event.getNewValue();
-						if (oldFullName.equalsIgnoreCase(newName) == false) {
-							RenameFolderRequest req = requestFactory.renameFolderRequest();
-							RenameFolderAction action = req.create(RenameFolderAction.class);
-							ImapFolder iFolder = req.create(ImapFolder.class);
-							iFolder.setFullName(oldFullName);
-							action.setNewName(newName);
-							action.setFolder(iFolder);
-							req.rename(action).fire(new Receiver<GenericResult>() {
-								@Override
-								public void onSuccess(GenericResult response) {
-									folder.setFullName(newName);
-								}
-								@Override
-								public void onFailure(ServerFailure error) {
-									GWT.log("Error while renaming" + error.getStackTraceString());
-									record.cancelEdit();
-								}
-							});
-						}
-					}
-				}
-
-			});
-			record.setUserObject(iFolder);
-
-			List<ImapFolder> childFolders = iFolder.getChildren();
-			List<IMAPTreeItem> items = createTreeNodes(childFolders);
-			for (IMAPTreeItem item : items) {
-				record.addItem(item);
-			}
-
-			// Store the INBOX as starting point after first loading
-			if (iFolder.getFullName().equals(user.getSettings().getInboxFolderName())) {
-				folder = iFolder;
-				tItem = record;
-			}
-
-			tList.add(record);
-		}
-
-		// Sort tree
-		Collections.sort(tList, new Comparator<TreeItem>() {
-
-			public int compare(TreeItem o1, TreeItem o2) {
-				return o1.getText().compareTo(o2.getText());
-			}
-
-		});
-		return tList;
-	}
-
-=======
->>>>>>> refactoring.
-	private void cloneFolder(ImapFolder desc, ImapFolder src) {
-	    desc.setChildren(src.getChildren());
-		desc.setDelimiter(src.getDelimiter());
-		desc.setFullName(src.getFullName());
-		desc.setMessageCount(src.getMessageCount());
-		desc.setName(src.getName());
-		desc.setSubscribed(src.getSubscribed());
-		desc.setUnseenMessageCount(src.getUnseenMessageCount());
-    }
-
-	private void bind() {
->>>>>>> try to change fetch messages to use RF
-		eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-			public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-				showMessageTable(loadMessagesEvent.getUser(), loadMessagesEvent.getFolder(),
-				        loadMessagesEvent.getSearchValue());
-			}
-		});
-		eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
-<<<<<<< HEAD
-
-<<<<<<< HEAD
-            public void onExpandMessage(ExpandMessageEvent event) {
-                final boolean decreaseUnseen;
-                final Message message = event.getMessage();
-                // check if the message was already seen in the past
-                if (event.getMessage().getFlags().contains(IMAPFlag.SEEN) == false) {
-                    decreaseUnseen = true;
-                } else {
-                    decreaseUnseen = false;
-                }
-
-                display.setLoadingMessage(true);
-<<<<<<< HEAD
-                dispatcher.execute(new GetMessageDetails(event.getFolder(), message.getUid()), new HupaEvoCallback<GetMessageDetailsResult>(dispatcher, eventBus, display) {
-                    public void callback(GetMessageDetailsResult result) {
-                        if (decreaseUnseen) {
-                            eventBus.fireEvent(new DecreaseUnseenEvent(user, folder));
-                        }
-                        display.setLoadingMessage(false);
-<<<<<<< HEAD
-<<<<<<< HEAD
-//                        showMessage(user, folder, message, result.getMessageDetails());
-
-                        placeController.goTo(messagePlaceProvider.get().with(user,folder, message,result.getMessageDetails()));
-=======
-                        showMessage(user, folder, message, result.getMessageDetails());
->>>>>>> 
-=======
-//                        showMessage(user, folder, message, result.getMessageDetails());
-
-                        placeController.goTo(messagePlaceProvider.get().with(user,folder, message,result.getMessageDetails()));
->>>>>>> 1. improve the inbox folder place.
-                    }
-                });
-=======
-//                dispatcher.execute(new GetMessageDetails(event.getFolder(), message.getUid()), new HupaEvoCallback<GetMessageDetailsResult>(dispatcher, eventBus, display) {
-//                    public void callback(GetMessageDetailsResult result) {
-//                        if (decreaseUnseen) {
-//                            eventBus.fireEvent(new DecreaseUnseenEvent(user, folder));
-//                        }
-//                        display.setLoadingMessage(false);
-////                        showMessage(user, folder, message, result.getMessageDetails());
-//
-//                        placeController.goTo(messagePlaceProvider.get().with(user,folder, message,result.getMessageDetails()));
-//                    }
-//                });
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-            }
-=======
-=======
->>>>>>> scrub code
-			public void onExpandMessage(ExpandMessageEvent event) {
-//				final boolean decreaseUnseen;
-				final Message message = event.getMessage();
-				// check if the message was already seen in the past
-				if (event.getMessage().getFlags().contains(IMAPFlag.SEEN) == false) {
-//					decreaseUnseen = true;//TODO 1209
-				} else {
-//					decreaseUnseen = false;
-				}
-
-				GetMessageDetailsRequest req = requestFactory.messageDetailsRequest();
-=======
->>>>>>> change message list view to make it not refresh the whole list when click one of the messages
-				GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
-				final ImapFolder f = req.create(ImapFolder.class);
-//				event.getFolder().setFolderTo(f);
-				cloneFolder(f, event.getFolder());
-				action.setFolder(f);
-				action.setUid(message.getUid());
-				req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
-					@Override
-					public void onSuccess(GetMessageDetailsResult response) {
-						/*
-						 * TODO if (decreaseUnseen) { eventBus.fireEvent(new
-						 * DecreaseUnseenEvent(user, folder)); }
-						 */
-//						placeController.goTo(messagePlaceProvider.get().with(user, f, message,
-//						        response.getMessageDetails()));
-					}
-				});
-			}
-<<<<<<< HEAD
->>>>>>> try to change fetch messages to use RF
-
-=======
->>>>>>> scrub code
-		});
-		eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
-			public void onNewMessageEvent(NewMessageEvent event) {
-				showNewMessage();
-			}
-		});
-		eventBus.addHandler(SentMessageEvent.TYPE, new SentMessageEventHandler() {
-			public void onSentMessageEvent(SentMessageEvent ev) {
-				showMessageTable(user, folder, searchValue);
-			}
-		});
-		eventBus.addHandler(ForwardMessageEvent.TYPE, new ForwardMessageEventHandler() {
-			public void onForwardMessageEvent(ForwardMessageEvent event) {
-				showForwardMessage(event);
-			}
-		});
-		eventBus.addHandler(ReplyMessageEvent.TYPE, new ReplyMessageEventHandler() {
-			public void onReplyMessageEvent(ReplyMessageEvent event) {
-				showReplyMessage(event);
-			}
-		});
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-			public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				user = event.getUser();
-				folder = event.getFolder();
-				showMessageTable(user, event.getFolder(), searchValue);
-			}
-		});
-		eventBus.addHandler(BackEvent.TYPE, new BackEventHandler() {
-			public void onBackEvent(BackEvent event) {
-				showMessageTable(user, folder, searchValue);
-			}
-		});
-		eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
-			public void onExpandMessage(ExpandMessageEvent event) {
-				if (editableTreeItem != null && editableTreeItem.isEdit()) {
-					editableTreeItem.cancelEdit();
-				}
-			}
-		});
-		eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
-			public void onNewMessageEvent(NewMessageEvent event) {
-				if (editableTreeItem != null && editableTreeItem.isEdit()) {
-					editableTreeItem.cancelEdit();
-				}
-			}
-		});
-<<<<<<< HEAD
-		eventBus.addHandler(DecreaseUnseenEvent.TYPE, new DecreaseUnseenEventHandler() {
-			public void onDecreaseUnseenEvent(DecreaseUnseenEvent event) {
-				display.decreaseUnseenMessageCount(event.getFolder(), event.getAmount());
-			}
-		});
-		eventBus.addHandler(IncreaseUnseenEvent.TYPE, new IncreaseUnseenEventHandler() {
-			public void onIncreaseUnseenEvent(IncreaseUnseenEvent event) {
-				display.increaseUnseenMessageCount(event.getFolder(), event.getAmount());
-			}
-		});
-<<<<<<< HEAD
-		display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
-
-<<<<<<< HEAD
-            public void onSelection(SelectionEvent<TreeItem> event) {
-                tItem = (IMAPTreeItem) event.getSelectedItem();
-                if (tItem.isEdit()) 
-                    return;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                folder = (IMAPFolderProxy) tItem.getUserObject();
-=======
-                folder = (IMAPFolder) tItem.getUserObject();
->>>>>>> 
-=======
-                folder = (IMAPFolderProxy) tItem.getUserObject();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-                folder = (ImapFolder) tItem.getUserObject();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                eventBus.fireEvent(new LoadMessagesEvent(user, folder));
-            }
-=======
-=======
-		registerHandler(display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
->>>>>>> scrub code
-			public void onSelection(SelectionEvent<TreeItem> event) {
-				tItem = (IMAPTreeItem) event.getSelectedItem();
-				if (tItem.isEdit())
-					return;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-				folder = (ImapFolder) tItem.getUserObject();
-				eventBus.fireEvent(new LoadMessagesEvent(user, folder));
-			}
->>>>>>> try to change fetch messages to use RF
-
-		});
-		display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
-
-<<<<<<< HEAD
-            public void onSelection(SelectionEvent<TreeItem> event) {
-                tItem = (IMAPTreeItem) event.getSelectedItem();
-                if (tItem.isEdit()) 
-                    return;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                folder = (IMAPFolderProxy) tItem.getUserObject();
-=======
-                folder = (IMAPFolder) tItem.getUserObject();
->>>>>>> 
-=======
-                folder = (IMAPFolderProxy) tItem.getUserObject();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-                folder = (ImapFolder) tItem.getUserObject();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                if (folder.getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {
-                    display.getDeleteEnable().setEnabled(false);
-                    display.getRenameEnable().setEnabled(false);
-                } else {
-                    display.getDeleteEnable().setEnabled(true);
-                    display.getRenameEnable().setEnabled(true);
-                }
-            }
-
-        });
-=======
-			public void onSelection(SelectionEvent<TreeItem> event) {
-				tItem = (IMAPTreeItem) event.getSelectedItem();
-				if (tItem.isEdit())
-					return;
-				folder = (ImapFolder) tItem.getUserObject();
-=======
-				ImapFolder editableFolder = (ImapFolder) tItem.getUserObject();
-				messagesRequest = requestFactory.messagesRequest();
-				folder = messagesRequest.edit(editableFolder);
-=======
-//				ImapFolder editableFolder = (ImapFolder) tItem.getUserObject();
-//				
-//				messagesRequest = requestFactory.messagesRequest();
-//				folder = messagesRequest.edit(editableFolder);
->>>>>>> make it usable by removing a function that showing the unread message number dynamically.
-=======
-				// ImapFolder editableFolder = (ImapFolder)
-				// tItem.getUserObject();
-				//
-				// messagesRequest = requestFactory.messagesRequest();
-				// folder = messagesRequest.edit(editableFolder);
->>>>>>> scrub code
-
-				folder = (ImapFolder) tItem.getUserObject();
-				// FIXME not good to find
-				eventBus.fireEvent(new LoadMessagesEvent(user, folder));
-<<<<<<< HEAD
->>>>>>> fix the frozen autobean issue, yet another occur
-=======
-			}
-		}));
-		// FIXME why same?
-		registerHandler(display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
-			public void onSelection(SelectionEvent<TreeItem> event) {
-				tItem = (IMAPTreeItem) event.getSelectedItem();
-				if (tItem.isEdit())
-					return;
-				// folder = (ImapFolder) tItem.getUserObject();
->>>>>>> forward and reply message to use RF
-				if (folder.getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {
-					display.getDeleteEnable().setEnabled(false);
-					display.getRenameEnable().setEnabled(false);
-				} else {
-					display.getDeleteEnable().setEnabled(true);
-					display.getRenameEnable().setEnabled(true);
-				}
-			}
-<<<<<<< HEAD
-
-		});
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> try to change fetch messages to use RF
-=======
-		//FIXME why another?
-//		display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
-//
-//			public void onSelection(SelectionEvent<TreeItem> event) {
-//				tItem = (IMAPTreeItem) event.getSelectedItem();
-//				if (tItem.isEdit())
-//					return;
-//				folder = (ImapFolder) tItem.getUserObject();
-//				if (folder.getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {
-//					display.getDeleteEnable().setEnabled(false);
-//					display.getRenameEnable().setEnabled(false);
-//				} else {
-//					display.getDeleteEnable().setEnabled(true);
-//					display.getRenameEnable().setEnabled(true);
-//				}
-//			}
-//
-//		});
->>>>>>> fix the frozen autobean issue, yet another occur
-=======
-		// FIXME why another?
-		// display.getTree().addSelectionHandler(new
-		// SelectionHandler<TreeItem>() {
-		//
-		// public void onSelection(SelectionEvent<TreeItem> event) {
-		// tItem = (IMAPTreeItem) event.getSelectedItem();
-		// if (tItem.isEdit())
-		// return;
-		// folder = (ImapFolder) tItem.getUserObject();
-		// if
-		// (folder.getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName()))
-		// {
-		// display.getDeleteEnable().setEnabled(false);
-		// display.getRenameEnable().setEnabled(false);
-		// } else {
-		// display.getDeleteEnable().setEnabled(true);
-		// display.getRenameEnable().setEnabled(true);
-		// }
-		// }
-		//
-		// });
->>>>>>> try to get message details, problem is:
-=======
->>>>>>> forward and reply message to use RF
-		display.getRenameClick().addClickHandler(new ClickHandler() {
-
-=======
-		}));
-		registerHandler(display.getRenameClick().addClickHandler(new ClickHandler() {
->>>>>>> scrub code
-			public void onClick(ClickEvent event) {
-				tItem.startEdit();
-			}
-		}));
-		registerHandler(display.getDeleteClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				display.getDeleteConfirmDialog().show();
-			}
-		}));
-		registerHandler(display.getDeleteConfirmClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				DeleteFolderRequest req = requestFactory.deleteFolderRequest();
-				final DeleteFolderAction action = req.create(DeleteFolderAction.class);
-				action.setFolder(folder);
-				req.delete(action).fire(new Receiver<GenericResult>() {
-					@Override
-					public void onSuccess(GenericResult response) {
-						display.deleteSelectedFolder();
-					}
-					@Override
-					public void onFailure(ServerFailure error) {
-						GWT.log("Error while deleting" + error.getStackTraceString());
-					}
-				});
-			}
-		}));
-		registerHandler(display.getNewClick().addClickHandler(new ClickHandler() {
-			public void onClick(ClickEvent event) {
-				editableTreeItem = display.createFolder(new EditHandler() {
-					public void onEditEvent(EditEvent event) {
-						final IMAPTreeItem item = (IMAPTreeItem) event.getSource();
-						final String newValue = (String) event.getNewValue();
-						if (event.getEventType().equals(EditEvent.EventType.Stop)) {
-							CreateFolderRequest req = requestFactory.createFolderRequest();
-							final CreateFolderAction action = req.create(CreateFolderAction.class);
-							ImapFolder folder = req.create(ImapFolder.class);
-							folder.setFullName(newValue.trim());
-							action.setFolder(folder);
-							req.create(action).fire(new Receiver<GenericResult>() {
-								@Override
-								public void onSuccess(GenericResult response) {
-									// Nothing todo
-								}
-								@Override
-								public void onFailure(ServerFailure error) {
-									GWT.log("Error while create folder" + error.getStackTraceString());
-									item.cancelEdit();
-								}
-							});
-						}
-					}
-				});
-			}
-		}));
-		eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {
-			public void onMessagesReceived(MessagesReceivedEvent event) {
-				ImapFolder f = event.getFolder();
-				display.updateTreeItem(f);
-			}
-		});
-=======
->>>>>>> refactoring.
-		eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-			public void onLogin(LoginEvent event) {
-				user = event.getUser();
-				searchValue = null;
-			}
-<<<<<<< HEAD
-
-<<<<<<< HEAD
-            public void onMessagesReceived(MessagesReceivedEvent event) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-            	IMAPFolderProxy f = event.getFolder();
-=======
-                IMAPFolder f = event.getFolder();
->>>>>>> 
-=======
-            	IMAPFolderProxy f = event.getFolder();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-            	ImapFolder f = event.getFolder();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                display.updateTreeItem(f);
-            }
-=======
-		});
->>>>>>> try to change fetch messages to use RF
-
-=======
-		});
->>>>>>> scrub code
-		exportJSMethods(this);
-	}
-
-<<<<<<< HEAD
-            public void onLogin(LoginEvent event) {
-                user = event.getUser();
-<<<<<<< HEAD
-<<<<<<< HEAD
-//                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());;
-                searchValue = null;
-//                showMessageTable(user, folder, searchValue);
-=======
-                folder = new IMAPFolder(user.getSettings().getInboxFolderName());;
-=======
-//                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-                searchValue = null;
-<<<<<<< HEAD
-                showMessageTable(user, folder, searchValue);
->>>>>>> 
-=======
-//                showMessageTable(user, folder, searchValue);
->>>>>>> At first make the inbox work, but only when click the refresh button. The page also be working, the other folder will be like the same.
-            }
-            
-        });
-
-        exportJSMethods(this);
-<<<<<<< HEAD
-=======
-	public void openLink(String url) {
-		Window.open(url, "_blank", "");
-	}
-
-	public void mailTo(String mailto) {
-		// sendPresenter.revealDisplay(user, mailto);
-	}
-
-	private native void exportJSMethods(WestActivity westactivity) /*-{
-	                                                               $wnd.openLink = function(url) {
-	                                                               try {
-	                                                               westactivity.@org.apache.hupa.client.activity.WestActivity::openLink(Ljava/lang/String;) (url);
-	                                                               } catch(e) {}
-	                                                               return false;
-	                                                               };
-	                                                               $wnd.mailTo = function(mail) {
-	                                                               try {
-	                                                               westactivity.@org.apache.hupa.client.activity.WestActivity::mailTo(Ljava/lang/String;) (mail);
-	                                                               } catch(e) {}
-	                                                               return false;
-	                                                               };
-	                                                               }-*/;
-
-	private void showMessageTable(User user, ImapFolder folder, String searchValue) {
-		this.user = user;
-		this.folder = folder;
-		this.searchValue = searchValue;
-
-		// FIXME goto?
-//		placeController.goTo(new MailFolderPlace().with(user, folder, searchValue));
-	}
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private void showMessage(User user, ImapFolder folder, Message message, MessageDetails details) {
-		placeController.goTo(IMAPMessagePlaceProvider.get());
->>>>>>> try to change fetch messages to use RF
-	}
-=======
-//	private void showMessage(User user, ImapFolder folder, Message message, MessageDetails details) {
-//		placeController.goTo(IMAPMessagePlaceProvider.get());
-//	}
->>>>>>> fixed issue #16
-
-=======
->>>>>>> refactoring.
-	private void showNewMessage() {
-		pc.goTo(this.messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
-	}
-
-	private void showForwardMessage(ForwardMessageEvent event) {
-		pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
-		        event.getMessage(), event.getMessageDetails(), Type.FORWARD));
-	}
-
-	private void showReplyMessage(ReplyMessageEvent event) {
-		pc.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(),
-		        event.getMessage(), event.getMessageDetails(), event.getReplyAll() ? Type.REPLY_ALL : Type.REPLY));
-	}
-
-	@Inject private Displayable display;
-	@Inject private Provider<MessageSendPlace> messageSendPlaceProvider;
-//	@Inject private Provider<IMAPMessagePlace> messagePlaceProvider;
-	private User user;
-	private ImapFolder folder;
-	private IMAPTreeItem tItem;
-	private HasEditable editableTreeItem;
-	private String searchValue;
-	private Place currentPlace;
-
-	public interface Displayable extends WidgetDisplayable {
-<<<<<<< HEAD
-		public HasSelectionHandlers<TreeItem> getTree();
-<<<<<<< HEAD
-
-<<<<<<< HEAD
-    private void showReplyMessage(ReplyMessageEvent event) {
-        placeController.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), event.getReplyAll()?Type.REPLY_ALL:Type.REPLY));
-    }
-=======
-		
-	}
-
->>>>>>> Change to new mvp framework - first step
-=======
-	}
-
-    
-    public void openLink(String url) {
-        Window.open(url, "_blank", "");
-    }
-
-    public void mailTo(String mailto) {
-//        sendPresenter.revealDisplay(user, mailto);
-    }
-    private native void exportJSMethods(WestActivity westactivity) /*-{
-      $wnd.openLink = function(url) {
-        try {
-           westactivity.@org.apache.hupa.client.activity.WestActivity::openLink(Ljava/lang/String;) (url);
-        } catch(e) {}
-        return false;
-      };
-      $wnd.mailTo = function(mail) {
-        try {
-           westactivity.@org.apache.hupa.client.activity.WestActivity::mailTo(Ljava/lang/String;) (mail);
-        } catch(e) {}
-        return false;
-      };
-    }-*/;
-    private void showMessageTable(User user, IMAPFolderProxy folder, String searchValue) {
-        this.user = user;
-        this.folder = folder;
-        this.searchValue = searchValue;
-        placeController.goTo(new MailFolderPlace().with(user,folder, searchValue));
-//        placeController.goTo(mailInboxPlaceProvider.get().with(user));
-//        System.out.println("111");
-//        placeController.goTo(new MailInboxPlace(folder.getName()).with(user));
-    }
-
-    private void showMessage(User user, IMAPFolder folder, Message message, MessageDetails details) {
-    	placeController.goTo(IMAPMessagePlaceProvider.get());
-    }
-
-    private void showNewMessage() {
-    	placeController.goTo(this.messageSendPlaceProvider.get().with(user, null, null, null, Type.NEW));
-    }
-
-    private void showForwardMessage(ForwardMessageEvent event) {
-    	placeController.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), Type.FORWARD));
-    }
-
-    private void showReplyMessage(ReplyMessageEvent event) {
-        placeController.goTo(this.messageSendPlaceProvider.get().with(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), event.getReplyAll()?Type.REPLY_ALL:Type.REPLY));
-    }
->>>>>>> 
-    public interface Displayable extends WidgetContainerDisplayable {
-        
-        public HasSelectionHandlers<TreeItem> getTree();
-=======
-		public void bindTreeItems(List<IMAPTreeItem> treeList);
->>>>>>> try to change fetch messages to use RF
-
-=======
-		public void bindTreeItems(List<IMAPTreeItem> treeList);
->>>>>>> scrub code
-		public HasClickHandlers getRenameClick();
-		public HasClickHandlers getDeleteClick();
-		public HasClickHandlers getNewClick();
-		public HasDialog getDeleteConfirmDialog();
-		public HasClickHandlers getDeleteConfirmClick();
-		public HasEnable getRenameEnable();
-		public HasEnable getDeleteEnable();
-		public HasEnable getNewEnable();
-		public void updateTreeItem(ImapFolder folder);
-<<<<<<< HEAD
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        public void updateTreeItem(IMAPFolderProxy folder);
-=======
-        public void updateTreeItem(IMAPFolder folder);
->>>>>>> Change to new mvp framework - first step
-=======
-        public void updateTreeItem(IMAPFolderProxy folder);
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        public void updateTreeItem(ImapFolder folder);
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-		public void deleteSelectedFolder();
->>>>>>> try to change fetch messages to use RF
-
-=======
-		public void deleteSelectedFolder();
->>>>>>> scrub code
-		public HasEditable createFolder(EditHandler handler);
-		public void increaseUnseenMessageCount(ImapFolder folder, int amount);
-<<<<<<< HEAD
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
-
-        public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
-=======
-        public void increaseUnseenMessageCount(IMAPFolder folder, int amount);
-
-        public void decreaseUnseenMessageCount(IMAPFolder folder, int amount);
->>>>>>> Change to new mvp framework - first step
-=======
-        public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
-
-        public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        public void increaseUnseenMessageCount(ImapFolder folder, int amount);
-
-        public void decreaseUnseenMessageCount(ImapFolder folder, int amount);
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        
-        public void setLoadingFolders(boolean loading);
-        public void setLoadingMessage(boolean loading);
-        
-        public void setUser(User user);
-=======
-=======
->>>>>>> scrub code
-		public void decreaseUnseenMessageCount(ImapFolder folder, int amount);
-		public void setLoadingFolders(boolean loading);
-<<<<<<< HEAD
->>>>>>> try to change fetch messages to use RF
-
-		public void setLoadingMessage(boolean loading);
-
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-=======
-		public void setLoadingMessage(boolean loading);
->>>>>>> scrub code
-		public void setUser(User user);
-=======
->>>>>>> refactoring.
-	}
->>>>>>> try to change fetch messages to use RF
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java b/client/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java
deleted file mode 100644
index a2ac366..0000000
--- a/client/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.client.gin;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-import net.customware.gwt.dispatch.client.DefaultExceptionHandler;

-import net.customware.gwt.dispatch.client.DispatchAsync;

-import net.customware.gwt.dispatch.client.ExceptionHandler;

-=======
->>>>>>> first commit
-=======
-import net.customware.gwt.dispatch.client.DefaultExceptionHandler;

-import net.customware.gwt.dispatch.client.DispatchAsync;

-import net.customware.gwt.dispatch.client.ExceptionHandler;

->>>>>>> constantly changed by manolo
-import net.customware.gwt.presenter.client.DefaultEventBus;

-import net.customware.gwt.presenter.client.EventBus;

-import net.customware.gwt.presenter.client.gin.AbstractPresenterModule;

-import net.customware.gwt.presenter.client.place.ParameterTokenFormatter;

-import net.customware.gwt.presenter.client.place.PlaceManager;

-import net.customware.gwt.presenter.client.place.TokenFormatter;

-

-import org.apache.hupa.client.CachingDispatchAsync;

-import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;

-import org.apache.hupa.client.mvp.AppPresenter;

-import org.apache.hupa.client.mvp.AppView;

-import org.apache.hupa.client.mvp.ContactsPresenter;

-import org.apache.hupa.client.mvp.ContactsView;

-import org.apache.hupa.client.mvp.IMAPMessageListPresenter;

-import org.apache.hupa.client.mvp.IMAPMessageListView;

-import org.apache.hupa.client.mvp.IMAPMessagePresenter;

-import org.apache.hupa.client.mvp.IMAPMessageView;

-import org.apache.hupa.client.mvp.LoginPresenter;

-import org.apache.hupa.client.mvp.LoginView;

-import org.apache.hupa.client.mvp.MainPresenter;

-import org.apache.hupa.client.mvp.MainView;

-import org.apache.hupa.client.mvp.MessageSendPresenter;

-import org.apache.hupa.client.mvp.MessageSendView;

-import org.apache.hupa.client.mvp.MessageTableModel;

-import org.apache.hupa.client.mvp.place.ContactsPresenterPlace;

-import org.apache.hupa.client.mvp.place.HupaPlaceManager;

-import org.apache.hupa.client.mvp.place.IMAPMessageListPresenterPlace;

-import org.apache.hupa.client.mvp.place.LoginPresenterPlace;

-import org.apache.hupa.client.mvp.place.MessageSendPresenterPlace;

-import org.apache.hupa.client.rf.HupaRequestFactory;

-

-import com.google.gwt.core.client.GWT;

-import com.google.gwt.event.shared.SimpleEventBus;

-import com.google.inject.Provider;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.inject.Provides;

-=======
->>>>>>> first commit
-=======
-import com.google.inject.Provides;

->>>>>>> constantly changed by manolo
-import com.google.inject.Singleton;

-

-public class HupaClientModule extends AbstractPresenterModule {

-

-    @Override

-    protected void configure() {        

-        bind(EventBus.class).to(DefaultEventBus.class).in(Singleton.class);

-        bind(PlaceManager.class).to(HupaPlaceManager.class);

-        bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(Singleton.class);

-        bindPresenter(LoginPresenter.class,LoginPresenter.Display.class, LoginView.class);

-        bindPresenter(IMAPMessageListPresenter.class,IMAPMessageListPresenter.Display.class,IMAPMessageListView.class);

-        bindPresenter(IMAPMessagePresenter.class,IMAPMessagePresenter.Display.class,IMAPMessageView.class);

-        bindPresenter(MainPresenter.class,MainPresenter.Display.class,MainView.class);

-        bindPresenter(MessageSendPresenter.class, MessageSendPresenter.Display.class, MessageSendView.class);

-        bindPresenter(AppPresenter.class, AppPresenter.Display.class, AppView.class);

-        bindPresenter(ContactsPresenter.class, ContactsPresenter.Display.class, ContactsView.class);

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-        bind(CachingDispatchAsync.class);

->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-        bind(PagingScrollTableRowDragController.class).in(Singleton.class);

-        bind(MessageTableModel.class).in(Singleton.class);

-        bind(LoginPresenterPlace.class).in(Singleton.class);

-        bind(IMAPMessageListPresenterPlace.class).in(Singleton.class);

-        bind(MessageSendPresenterPlace.class).in(Singleton.class);

-        bind(ContactsPresenterPlace.class).in(Singleton.class);

-<<<<<<< HEAD
-<<<<<<< HEAD
-

-        // Used by dispatch. Note that GWT 2.4 has its own ExceptionHandler etc in other namespace

-        bind(ExceptionHandler.class).to(DefaultExceptionHandler.class);

-        

-        // RF Stuff, Eventbus has a different namespace than gwt-dispatch

-=======
-        

->>>>>>> first commit
-=======
-

-        // Used by dispatch. Note that GWT 2.4 has its own ExceptionHandler etc in other namespace

-        bind(ExceptionHandler.class).to(DefaultExceptionHandler.class);

-        

-        // RF Stuff, Eventbus has a different namespace than gwt-dispatch

->>>>>>> constantly changed by manolo
-        bind(com.google.gwt.event.shared.EventBus.class)

-            .to(SimpleEventBus.class)

-            .in(Singleton.class);

-        bind(HupaRequestFactory.class)

-            .toProvider(HupaClientModule.RequestFactoryProvider.class)

-            .in(Singleton.class);

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-

-    }

-    

-    @Provides

-    @Singleton

-    protected DispatchAsync provideDispatchAsync(ExceptionHandler exceptionHandler) {

-        return new CachingDispatchAsync( exceptionHandler );

-<<<<<<< HEAD
-    }

-    

-    /**

-     * RF Stuff 

-     */

-=======
-    }

-    

->>>>>>> first commit
-=======
-    }

-    

-    /**

-     * RF Stuff 

-     */

->>>>>>> constantly changed by manolo
-    public static class RequestFactoryProvider implements Provider<HupaRequestFactory> {

-        private static final com.google.gwt.event.shared.EventBus eventBus = new SimpleEventBus();

-        public HupaRequestFactory get() {

-            HupaRequestFactory rf = GWT.create(HupaRequestFactory.class);

-            rf.initialize(eventBus);

-            return rf;

-        }

-    }

-

-}

diff --git a/client/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java b/client/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java
deleted file mode 100644
index 1189c5f..0000000
--- a/client/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-package org.apache.hupa.client.gin;

-

-import net.customware.gwt.dispatch.client.gin.StandardDispatchModule;

-import net.customware.gwt.presenter.client.EventBus;

-import net.customware.gwt.presenter.client.place.PlaceManager;

-

-import org.apache.hupa.client.mvp.AppPresenter;

-import org.apache.hupa.client.rf.HupaRequestFactory;

-

-import com.google.gwt.inject.client.GinModules;

-import com.google.gwt.inject.client.Ginjector;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-@GinModules({/*StandardDispatchModule.class,*/ HupaClientModule.class})

-=======
-@GinModules({StandardDispatchModule.class,HupaClientModule.class})

->>>>>>> first commit
-=======
-@GinModules({/*StandardDispatchModule.class,*/ HupaClientModule.class})

->>>>>>> constantly changed by manolo
-public interface HupaGinjector extends Ginjector {

-    AppPresenter getAppPresenter();

-    PlaceManager getPlaceManager();

-    EventBus getEventBus();

-    HupaRequestFactory getRequestFactory();

-}

diff --git a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java b/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
deleted file mode 100644
index 83fa865..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
+++ /dev/null
@@ -1,526 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.client.mvp;

-

-import java.util.ArrayList;

-import java.util.List;

-

-import net.customware.gwt.dispatch.client.DispatchAsync;

-import net.customware.gwt.presenter.client.EventBus;

-import net.customware.gwt.presenter.client.widget.WidgetDisplay;

-import net.customware.gwt.presenter.client.widget.WidgetPresenter;

-

-import org.apache.hupa.client.HandlerRegistrationAdapter;

-import org.apache.hupa.client.HupaCallback;

-import org.apache.hupa.client.widgets.HasDialog;

-<<<<<<< HEAD
-import org.apache.hupa.shared.data.ImapFolderImpl;

-import org.apache.hupa.shared.data.Message;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.Message.IMAPFlag;

-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;

-<<<<<<< HEAD
-=======
-import org.apache.hupa.shared.data.User;

-import org.apache.hupa.shared.data.Message.IMAPFlag;

->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.Message.IMAPFlag;

-import org.apache.hupa.shared.data.User;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-=======
-=======
-import org.apache.hupa.shared.data.MessageImpl;

-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;

->>>>>>> try to change fetch messages to use RF
-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.Message;

-import org.apache.hupa.shared.domain.User;

->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.events.DecreaseUnseenEvent;

-import org.apache.hupa.shared.events.ExpandMessageEvent;

-import org.apache.hupa.shared.events.FolderSelectionEvent;

-import org.apache.hupa.shared.events.FolderSelectionEventHandler;

-import org.apache.hupa.shared.events.IncreaseUnseenEvent;

-import org.apache.hupa.shared.events.LoadMessagesEvent;

-import org.apache.hupa.shared.events.LogoutEvent;

-import org.apache.hupa.shared.events.LogoutEventHandler;

-import org.apache.hupa.shared.events.MessagesReceivedEvent;

-import org.apache.hupa.shared.events.MessagesReceivedEventHandler;

-import org.apache.hupa.shared.events.MoveMessageEvent;

-import org.apache.hupa.shared.events.MoveMessageEventHandler;

-import org.apache.hupa.shared.events.NewMessageEvent;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.DeleteAllMessages;

-import org.apache.hupa.shared.rpc.DeleteMessageByUid;

-import org.apache.hupa.shared.rpc.DeleteMessageResult;

-import org.apache.hupa.shared.rpc.GenericResult;

-import org.apache.hupa.shared.rpc.MoveMessage;

-import org.apache.hupa.shared.rpc.MoveMessageResult;

-import org.apache.hupa.shared.rpc.SetFlag;

-import org.apache.hupa.widgets.ui.HasEnable;

-

-import com.google.gwt.event.dom.client.ChangeEvent;

-import com.google.gwt.event.dom.client.ChangeHandler;

-import com.google.gwt.event.dom.client.ClickEvent;

-import com.google.gwt.event.dom.client.ClickHandler;

-import com.google.gwt.event.dom.client.HasChangeHandlers;

-import com.google.gwt.event.dom.client.HasClickHandlers;

-import com.google.gwt.gen2.table.event.client.HasPageChangeHandlers;

-import com.google.gwt.gen2.table.event.client.HasPageLoadHandlers;

-import com.google.gwt.gen2.table.event.client.HasRowSelectionHandlers;

-import com.google.gwt.gen2.table.event.client.PageChangeEvent;

-import com.google.gwt.gen2.table.event.client.PageChangeHandler;

-import com.google.gwt.gen2.table.event.client.RowSelectionEvent;

-import com.google.gwt.gen2.table.event.client.RowSelectionHandler;

-import com.google.gwt.user.client.ui.HasValue;

-import com.google.gwt.user.client.ui.SourcesTableEvents;

-import com.google.gwt.user.client.ui.TableListener;

-import com.google.inject.Inject;

-

-@SuppressWarnings("deprecation")

-public class IMAPMessageListPresenter extends WidgetPresenter<IMAPMessageListPresenter.Display>{

-    

-    public interface Display extends WidgetDisplay {

-        public HasRowSelectionHandlers getDataTableSelection();

-        public HasPageLoadHandlers getDataTableLoad();

-        public void addTableListener(TableListener listener) ;

-        public void removeTableListener(TableListener listener) ;

-        public void setPostFetchMessageCount(int count);

-        public HasClickHandlers getNewClick();

-        public Message getData(int rowIndex);

-        public HasClickHandlers getDeleteClick();

-        public HasClickHandlers getDeleteAllClick();

-        public HasEnable getDeleteEnable();

-        public void reloadData();

-        public void removeMessages(List<Message> messages);

-        public List<Message> getSelectedMessages();

-        public void reset();

-        public HasDialog getConfirmDeleteDialog();

-        public HasDialog getConfirmDeleteAllDialog();

-        public HasClickHandlers getConfirmDeleteDialogClick();

-        public HasClickHandlers getConfirmDeleteAllDialogClick();

-        public void selectAllMessages();

-        public void deselectAllMessages();

-        public HasClickHandlers getSelectAllClick();

-        public HasClickHandlers getSelectNoneClick();

-        public HasClickHandlers getMarkSeenClick();

-        public HasClickHandlers getMarkUnseenClick();

-        public HasEnable getMarkSeenEnable();

-        public HasEnable getMarkUnseenEnable();

-        public HasClickHandlers getRefreshClick();

-        public void redraw();

-        public HasPageChangeHandlers getDataTablePageChange();

-        public void goToPage(int page);

-        public int getCurrentPage();

-        public int getRowsPerPageIndex();

-        public HasChangeHandlers getRowsPerPageChange();     

-        public HasClickHandlers getSearchClick();

-        public HasValue<String> getSearchValue();

-        public void fillSearchOracle(List<Message> messages);

-        public void setExpandLoading(boolean expanding);

-

-    }

-

-    private String searchValue;

-    private User user;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;

-=======
-    private IMAPFolder folder;

->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private DispatchAsync dispatcher;

-    private ShowMessageTableListener tableListener = new ShowMessageTableListener();

-    

-    @Inject

-    public IMAPMessageListPresenter(IMAPMessageListPresenter.Display display,EventBus bus,DispatchAsync dispatcher) {

-        super(display,bus);

-        this.dispatcher = dispatcher;

-        

-        // add this event on constructor because we don't want to remove it on unbind

-        eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {

-

-            public void onLogout(LogoutEvent logoutEvent) {

-                getDisplay().reset();

-                getDisplay().getSearchValue().setValue("");

-                

-                // we need to fire a event to notify the history about the reset

-                firePresenterChangedEvent();

-            }

-            

-        });

-    }

-

-    @Override

-    protected void onBind() {

-        registerHandler(eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {

-

-            public void onMessagesReceived(MessagesReceivedEvent event) {

-

-                // fill the oracle

-                display.fillSearchOracle(event.getMessages());

-            }

-

-        }));

-        registerHandler(display.getSearchClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                String searchValue = null;

-                if (display.getSearchValue().getValue().trim().length() > 0) {

-                    searchValue = display.getSearchValue().getValue().trim();

-                }

-                eventBus.fireEvent(new LoadMessagesEvent(user, folder, searchValue));

-            }

-

-        }));

-        registerHandler(eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {

-

-            public void onMoveMessageHandler(MoveMessageEvent event) {

-                final Message message = event.getMessage();

-                dispatcher.execute(new MoveMessage(event.getOldFolder(), event.getNewFolder(), message.getUid()), new HupaCallback<MoveMessageResult>(dispatcher, eventBus) {

-                    public void callback(MoveMessageResult result) {

-                        ArrayList<Message> messageArray = new ArrayList<Message>();

-                        messageArray.add(message);

-                        display.removeMessages(messageArray);

-                    }

-                }); 

-            }

-            

-        }));

-        registerHandler(display.getSelectAllClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                display.deselectAllMessages();

-                display.selectAllMessages();

-            }

-            

-        }));

-        

-        registerHandler(display.getSelectNoneClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                display.deselectAllMessages();

-            }

-            

-        }));

-

-

-        registerHandler(display.getDeleteClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {

-

-            public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {

-                if (folder.getFullName().equals(user.getSettings().getTrashFolderName())) {

-                    display.getConfirmDeleteDialog().show();

-                } else {

-                    deleteMessages();

-                }

-                

-            }

-            

-        }));

-        registerHandler(display.getConfirmDeleteDialogClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                deleteMessages();

-            }

-            

-        }));

-        

-        registerHandler(display.getNewClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {

-

-            public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {

-                eventBus.fireEvent(new NewMessageEvent());

-            }

-            

-        }));

-        

-        registerHandler(display.getDeleteAllClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                display.getConfirmDeleteAllDialog().center();

-            }

-            

-        }));

-        

-        registerHandler(display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                dispatcher.execute(new DeleteAllMessages(folder), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {

-                    public void callback(DeleteMessageResult result) {

-                        display.reset();

-                        display.reloadData();

-//                        eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));

-                    }

-                });

-            }

-            

-        }));

-        registerHandler(display.getMarkSeenClick().addClickHandler( new ClickHandler() {

-            public void onClick(ClickEvent event) {

-                final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());

-                ArrayList<Long> uids = new ArrayList<Long>();

-                for (Message m : selectedMessages) {

-                    if (m.getFlags().contains(IMAPFlag.SEEN) == false) {

-                        uids.add(m.getUid());

-                    } else {

-                        selectedMessages.remove(m);

-                    }

-                }

-                dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, true, uids), new HupaCallback<GenericResult>(dispatcher, eventBus) {

-                    public void callback(GenericResult result) {

-                        for (Message m : selectedMessages) {

-                            if (m.getFlags().contains(IMAPFlag.SEEN) == false) {

-                                m.getFlags().add(IMAPFlag.SEEN);

-                            }

-                        }

-                        display.redraw();

-                        eventBus.fireEvent(new DecreaseUnseenEvent(user, folder,selectedMessages.size()));

-                    }

-                });

-            }

-

-        }));

-        

-        registerHandler(display.getMarkUnseenClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());

-                ArrayList<Long> uids = new ArrayList<Long>();

-                for (Message m : selectedMessages) {

-                    if (m.getFlags().contains(IMAPFlag.SEEN)) {

-                        uids.add(m.getUid());

-                    } else {

-                        selectedMessages.remove(m);

-                    }

-                }

-                

-                dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, false, uids), new HupaCallback<GenericResult>(dispatcher, eventBus) {

-                    public void callback(GenericResult result) {

-                        for (Message m : selectedMessages) {

-                            if (m.getFlags().contains(IMAPFlag.SEEN)) {

-                                m.getFlags().remove(IMAPFlag.SEEN);

-                            }

-                        }

-                        display.redraw();

-                        eventBus.fireEvent(new IncreaseUnseenEvent(user, folder,selectedMessages.size()));

-                    }

-                });

-            }

-            

-            

-        }));

-        registerHandler(eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {

-

-            public void onFolderSelectionEvent(FolderSelectionEvent event) {

-                folder = event.getFolder();

-                user = event.getUser();

-                firePresenterChangedEvent();

-            }

-            

-        }));

-        registerHandler(new HandlerRegistrationAdapter(display.getDataTableSelection().addRowSelectionHandler(new RowSelectionHandler() {

-                public void onRowSelection(RowSelectionEvent event) {

-                    if (event.getSelectedRows().size() == 0) {

-                        display.getDeleteEnable().setEnabled(false);

-                        display.getMarkSeenEnable().setEnabled(false);

-                        display.getMarkUnseenEnable().setEnabled(false);

-                    } else {

-                        display.getDeleteEnable().setEnabled(true);

-                        display.getMarkSeenEnable().setEnabled(true);

-                        display.getMarkUnseenEnable().setEnabled(true);

-                    }

-                }

-                

-            

-            

-        })));

-        

-        registerHandler(display.getRefreshClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                display.reset();

-                display.reloadData();

-            }

-            

-        }));

-        registerHandler(new HandlerRegistrationAdapter(display.getDataTablePageChange().addPageChangeHandler(new PageChangeHandler() {

-

-            public void onPageChange(PageChangeEvent event) {

-                //firePresenterRevealedEvent(true);

-                firePresenterChangedEvent();

-            }

-            

-        })));

-        registerHandler(display.getRowsPerPageChange().addChangeHandler(new ChangeHandler() {

-

-            public void onChange(ChangeEvent event) {

-                //firePresenterRevealedEvent(true);

-                firePresenterChangedEvent();

-            }

-            

-        }));

-        display.addTableListener(tableListener);

-    }

-

-    

-    private void deleteMessages() {

-        final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());

-        ArrayList<Long> uids = new ArrayList<Long>();

-        for (Message m : selectedMessages) {

-            uids.add(m.getUid());

-        }

-        // maybe its better to just remove the messages from the table and expect the removal will work

-        display.removeMessages(selectedMessages);

-

-        dispatcher.execute(new DeleteMessageByUid(folder,uids), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {

-            public void callback(DeleteMessageResult result) {

-                eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));

-            }

-        }); 

-    }

- 

-

-    /*

-     * (non-Javadoc)

-     * @see net.customware.gwt.presenter.client.BasicPresenter#onUnbind()

-     */

-    protected void onUnbind() {

-        display.removeTableListener(tableListener);

-    }

-

-    

-    private final class ShowMessageTableListener implements TableListener {

-

-        public void onCellClicked(SourcesTableEvents sender, int row,

-                int cell) {

-            

-            display.setExpandLoading(true);

-            Message message = display.getData(row);

-            

-            // mark the message as seen and redraw the table to reflect this

-            if (message.getFlags().contains(MessageImpl.IMAPFlag.SEEN) == false) {

-                // add flag, fire event and redraw

-                message.getFlags().add(MessageImpl.IMAPFlag.SEEN);

-                eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,1));

-                

-                display.redraw();

-

-            }

-            

-            eventBus.fireEvent(new ExpandMessageEvent(user,folder,message));

-        }

-

-    }

-

-    @Override

-    protected void onRevealDisplay() {

-<<<<<<< HEAD
-<<<<<<< HEAD
-        if (user != null && folder != null) {

-            display.reloadData();  

-        }

-    }

-    

-<<<<<<< HEAD
-    public void revealDisplay(User user, IMAPFolderProxy folder, String searchValue) {

-<<<<<<< HEAD
-=======
-    public void revealDisplay(User user, ImapFolder folder, String searchValue) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.user = user;

-       

-        if (this.user == null 

-            || !this.user.getName().equals(user.getName()) 

-            || this.folder == null 

-            || !this.folder.getFullName().equals(folder.getFullName()) 

-            || (searchValue == null && this.searchValue != null) 

-            || (searchValue != null && searchValue.equals(this.searchValue) == false)) {

-=======
-        display.reloadData();  

-=======
-        if (user != null && folder != null) {

-            display.reloadData();  

-        }

->>>>>>> constantly changed by manolo
-    }

-    

-    public void revealDisplay(User user, IMAPFolder folder, String searchValue) {

-=======
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-        this.user = user;

-       

-<<<<<<< HEAD
-        if (this.folder == null || this.folder.getFullName().equals(folder.getFullName()) == false 

-                || (searchValue == null && this.searchValue != null) || (searchValue != null && searchValue.equals(this.searchValue) == false)) {

->>>>>>> first commit
-=======
-        if (this.user == null 

-            || !this.user.getName().equals(user.getName()) 

-            || this.folder == null 

-            || !this.folder.getFullName().equals(folder.getFullName()) 

-            || (searchValue == null && this.searchValue != null) 

-            || (searchValue != null && searchValue.equals(this.searchValue) == false)) {

->>>>>>> constantly changed by manolo
-            display.reset();

-            display.deselectAllMessages();

-        }

-        display.setExpandLoading(false);

-        this.searchValue = searchValue;

-        this.folder = folder;

-<<<<<<< HEAD
-<<<<<<< HEAD
-        

-

-=======
->>>>>>> first commit
-=======
-        

-

->>>>>>> constantly changed by manolo
-        revealDisplay();

-    }

-

-}

diff --git a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java b/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
deleted file mode 100644
index 921cccb..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
+++ /dev/null
@@ -1,812 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.mvp;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.hupa.client.HupaCSS;
-import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.HupaMessages;
-import org.apache.hupa.client.bundles.HupaImageBundle;
-import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;
-import org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display;
-import org.apache.hupa.client.widgets.CommandsBar;
-import org.apache.hupa.client.widgets.ConfirmDialogBox;
-import org.apache.hupa.client.widgets.DragRefetchPagingScrollTable;
-import org.apache.hupa.client.widgets.DragRefetchPagingScrollTable.DragHandlerFactory;
-import org.apache.hupa.client.widgets.EnableButton;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.widgets.ui.HasEnable;
-import org.apache.hupa.widgets.ui.Loading;
-import org.apache.hupa.widgets.ui.PagingOptions;
-import org.cobogw.gwt.user.client.ui.Button;
-import org.cobogw.gwt.user.client.ui.ButtonBar;
-
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
-import com.google.gwt.event.dom.client.HasChangeHandlers;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.dom.client.KeyCodes;
-import com.google.gwt.event.dom.client.KeyUpEvent;
-import com.google.gwt.event.dom.client.KeyUpHandler;
-import com.google.gwt.gen2.table.client.AbstractColumnDefinition;
-import com.google.gwt.gen2.table.client.AbstractScrollTable.ColumnResizePolicy;
-import com.google.gwt.gen2.table.client.AbstractScrollTable.ResizePolicy;
-import com.google.gwt.gen2.table.client.AbstractScrollTable.ScrollPolicy;
-import com.google.gwt.gen2.table.client.AbstractScrollTable.SortPolicy;
-import com.google.gwt.gen2.table.client.CachedTableModel;
-import com.google.gwt.gen2.table.client.CellRenderer;
-import com.google.gwt.gen2.table.client.ColumnDefinition;
-import com.google.gwt.gen2.table.client.DefaultTableDefinition;
-import com.google.gwt.gen2.table.client.FixedWidthFlexTable;
-import com.google.gwt.gen2.table.client.FixedWidthGrid;
-import com.google.gwt.gen2.table.client.FixedWidthGridBulkRenderer;
-import com.google.gwt.gen2.table.client.MutableTableModel;
-import com.google.gwt.gen2.table.client.SelectionGrid.SelectionPolicy;
-import com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView;
-import com.google.gwt.gen2.table.event.client.HasPageChangeHandlers;
-import com.google.gwt.gen2.table.event.client.HasPageLoadHandlers;
-import com.google.gwt.gen2.table.event.client.HasRowSelectionHandlers;
-import com.google.gwt.gen2.table.event.client.PageLoadEvent;
-import com.google.gwt.gen2.table.event.client.PageLoadHandler;
-import com.google.gwt.gen2.table.event.client.RowCountChangeEvent;
-import com.google.gwt.gen2.table.event.client.RowCountChangeHandler;
-import com.google.gwt.i18n.client.DateTimeFormat;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.HasValue;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Hyperlink;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
-import com.google.gwt.user.client.ui.SuggestBox;
-import com.google.gwt.user.client.ui.TableListener;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-
-
-@SuppressWarnings("deprecation")
-public class IMAPMessageListView extends Composite implements Display{
-
-    private static final int DEFAULT_MSG_PAGE_SIZE = 25;
-    
-    @SuppressWarnings("unused")
-    private HupaMessages messages;
-    private HupaImageBundle imageBundle;
-
-    private PagingOptions pagingBar;
-    private DragRefetchPagingScrollTable<Message> mailTable;
-    private CachedTableModel<Message> cTableModel;
-
-    private FixedWidthGrid dataTable = createDataTable();
-    private EnableButton deleteMailButton;
-    private Button newMailButton;
-    private Button deleteAllMailButton;
-    private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
-    private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
-    private EnableButton markSeenButton;
-    private EnableButton markUnSeenButton;
-
-    private ListBox pageBox = new ListBox();
-    private Hyperlink allLink;    
-    private Hyperlink noneLink;
-    private Hyperlink refreshLink;
-    private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" ,@");
-    private SuggestBox searchBox = new SuggestBox(oracle);
-    private Button searchButton;
-    private Loading loading;
-    
-    @Inject
-    public IMAPMessageListView(final PagingScrollTableRowDragController controller, final MessageTableModel mTableModel, final HupaConstants constants, final HupaMessages messages, final HupaImageBundle imageBundle) {
-        this.messages = messages;
-        this.imageBundle = imageBundle;
-        
-        deleteMailButton = new EnableButton(constants.deleteMailButton());
-        newMailButton = new Button(constants.newMailButton());
-        deleteAllMailButton = new Button(constants.deleteAll());
-        markSeenButton = new EnableButton(constants.markSeen());
-        markUnSeenButton = new EnableButton(constants.markUnseen());
-        allLink = new Hyperlink(constants.all(),"");    
-        noneLink = new Hyperlink(constants.none(),"");
-        refreshLink = new Hyperlink(constants.refresh(),"");
-        searchButton = new Button(constants.searchButton());
-        loading = new Loading(constants.loading());
-        this.cTableModel = new CachedTableModel<Message>(mTableModel);
-        cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
-        mTableModel.addRowCountChangeHandler(new RowCountChangeHandler() {
-            
-            public void onRowCountChange(RowCountChangeEvent event) {
-                cTableModel.setRowCount(event.getNewRowCount());
-            }
-        });
-        
-        VerticalPanel msgListContainer = new VerticalPanel();
-        msgListContainer.addStyleName(HupaCSS.C_msg_list_container);
-        mailTable = new DragRefetchPagingScrollTable<Message>(
-                cTableModel, dataTable, new FixedWidthFlexTable(),
-                createTableDefinitation(),controller,1);
-        mailTable.setPageSize(20);
-        mailTable.setDragHandler(0,30, new DragHandlerFactory() {
-
-            public Widget createHandler() {
-                return new Image(imageBundle.readyToMoveMailIcon());
-            }
-            
-        });
-        
-        HTML emptyTable = new HTML(constants.emptyMailTable());
-        emptyTable.addStyleName(HupaCSS.C_msg_table_empty);
-        mailTable.setEmptyTableWidget(emptyTable);
-        FixedWidthGridBulkRenderer<Message> bulkRenderer = new FixedWidthGridBulkRenderer<Message>(mailTable.getDataTable(),mailTable);
-        mailTable.setBulkRenderer(bulkRenderer);
-        mailTable.addStyleName(HupaCSS.C_msg_table);
-        mailTable.setCellPadding(0);
-        mailTable.setResizePolicy(ResizePolicy.FILL_WIDTH);
-        mailTable.setColumnResizePolicy(ColumnResizePolicy.MULTI_CELL);
-        mailTable.setScrollPolicy(ScrollPolicy.DISABLED);
-        mailTable.addPageLoadHandler(onMessagePageLoadHandler);
-        mailTable.setPageSize(DEFAULT_MSG_PAGE_SIZE);
-        mailTable.getDataTable().setCellSpacing(0);
-        mailTable.setSortPolicy(SortPolicy.DISABLED);
-
-        mailTable.fillWidth();
-        
-        pagingBar = new PagingOptions(mailTable, constants, loading);
-        
-        HorizontalPanel buttonBar = new HorizontalPanel();
-        buttonBar.addStyleName(HupaCSS.C_buttons);
-        
-        ButtonBar navigatorBar = new ButtonBar();
-        navigatorBar.add(newMailButton);
-        deleteMailButton.setEnabled(false);
-        navigatorBar.add(deleteMailButton);
-        buttonBar.add(navigatorBar);
-        buttonBar.add(deleteAllMailButton);
-        
-        ButtonBar markButtonBar = new ButtonBar();
-        markButtonBar.add(markSeenButton);
-        markButtonBar.add(markUnSeenButton);
-        buttonBar.add(markButtonBar);
-        buttonBar.add(refreshLink);
-        pageBox.addItem("" + DEFAULT_MSG_PAGE_SIZE);
-        pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 2));
-        pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 4));
-        pageBox.addChangeHandler(new ChangeHandler() {
-            public void onChange(ChangeEvent event) {
-                if (pageBox.getSelectedIndex() > 0)
-                    mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
-            }
-        });
-      
-        
-        HorizontalPanel searchPanel = new HorizontalPanel();
-        searchPanel.addStyleName(HupaCSS.C_buttons);
-
-        searchBox.addStyleName(HupaCSS.C_msg_search);
-        searchBox.setAnimationEnabled(true);
-        searchBox.setAutoSelectEnabled(false);
-        searchBox.setLimit(20);
-        searchBox.addKeyUpHandler(new KeyUpHandler() {
-
-            public void onKeyUp(KeyUpEvent event) {
-                if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
-                    searchButton.click();
-                }
-            }
-
-        });
-        searchPanel.add(searchBox);
-        searchPanel.add(searchButton);
-        searchPanel.add(pageBox);
-
-        HorizontalPanel hPanel = new HorizontalPanel();
-        hPanel.addStyleName(HupaCSS.C_msg_top_bar);
-        hPanel.add(buttonBar);
-        hPanel.add(searchPanel);
-        hPanel.setCellHorizontalAlignment(searchPanel, HorizontalPanel.ALIGN_RIGHT);        
-
-        msgListContainer.add(hPanel);
-        
-        CommandsBar commandsBar = new CommandsBar();
-        commandsBar.addLeft(new HTML(constants.select() +":"));
-        commandsBar.addLeft(allLink);
-        commandsBar.addLeft(noneLink);
-        commandsBar.add(loading);
-        commandsBar.addRight(pagingBar);
-        
-        msgListContainer.add(commandsBar);
-        msgListContainer.add(mailTable);
-        
-        confirmBox.setText(messages.confirmDeleteMessages());
-        confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
-        initWidget(msgListContainer);
-    }
-    
-    
-    PageLoadHandler onMessagePageLoadHandler = new PageLoadHandler() {
-
-        public void onPageLoad(PageLoadEvent event) {
-
-            for (int i = 0; i < mailTable.getDataTable().getRowCount(); i++) {
-                mailTable.getDataTable().getRowFormatter().setStyleName(i, HupaCSS.C_msg_table_row);
-                Message msg = mailTable.getRowValue(i);
-                if (msg != null) {
-                    if (msg.getFlags().contains(IMAPFlag.SEEN) == false) {
-                        mailTable.getDataTable().getRowFormatter().addStyleName(i,HupaCSS.C_msg_table_unseen);
-                    } else {
-                        mailTable.getDataTable().getRowFormatter().removeStyleName(i, HupaCSS.C_msg_table_seen);
-                    }
-                }
-            }
-            
-            String nrows = String.valueOf(mailTable.getPageSize());
-            for (int i = 0; i<pageBox.getItemCount(); i++) {
-                if (nrows.equals(pageBox.getItemText(i)))
-                    pageBox.setSelectedIndex(i);
-            }
-        }
-        
-    };
-    
-    private DefaultTableDefinition<Message> createTableDefinitation() {
-        DefaultTableDefinition<Message> def = new DefaultTableDefinition<Message>(createColumnDefinitionList());
-        
-        return def;
-    }
-
-    
-    /**
-       * @return the newly created data table.
-       */
-      private FixedWidthGrid createDataTable() {
-        FixedWidthGrid dataTable = new FixedWidthGrid();
-        dataTable.setSelectionPolicy(SelectionPolicy.CHECKBOX);
-        return dataTable;
-      }
-
-    /**
-     * Create a new List which holds all needed ColumnDefinitions 
-     * 
-     */
-    private List<ColumnDefinition<Message, ?>> createColumnDefinitionList() {
-        List<ColumnDefinition<Message, ?>> cList = new ArrayList<ColumnDefinition<Message, ?>>();
-
-        FromColumnDefination from = new FromColumnDefination();
-        from.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
-        from.setColumnTruncatable(true);
-        from.setPreferredColumnWidth(250);
-        from.setMinimumColumnWidth(150);
-        from.setMaximumColumnWidth(300);
-        cList.add(from);
-
-        
-        SubjectColumnDefination subject =new SubjectColumnDefination();
-        subject.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
-        subject.setColumnTruncatable(true);
-        subject.setPreferredColumnWidth(800);
-        subject.setMinimumColumnWidth(200);
-        cList.add(subject);
-        
-        AttachmentColumnDefination attachment = new AttachmentColumnDefination();
-        attachment.setColumnTruncatable(false);
-        // display an image if the message contains an attachment
-        attachment.setCellRenderer(new CellRenderer<Message, Boolean>() {
-
-            public void renderRowValue(Message rowValue,
-                    ColumnDefinition<Message, Boolean> columnDef,
-                    AbstractCellView<Message> view) {
-                if (columnDef.getCellValue(rowValue)) {
-                    view.setWidget(new Image(imageBundle.attachmentIcon()));
-                } else {
-                    view.setHTML("&nbsp");
-                }
-                
-            }
-            
-        });
-        
-        attachment.setPreferredColumnWidth(20);
-        attachment.setMinimumColumnWidth(15);
-        attachment.setMaximumColumnWidth(25);
-        cList.add(attachment);
-        
-        DateColumnDefination date = new DateColumnDefination();
-        date.setColumnTruncatable(true);
-        // set a special renderer for the date
-        date.setCellRenderer(new CellRenderer<Message, Date>() {
-
-            public void renderRowValue(Message rowValue,
-                    ColumnDefinition<Message, Date> columnDef,
-                    AbstractCellView<Message> view) {
-                DateTimeFormat dtformat;
-                Date rDate = rowValue.getReceivedDate();
-                int rYear = rDate.getYear();
-                int rMonth = rDate.getMonth();
-                int rDay = rDate.getDate();
-                
-                Date now = new Date();
-                int nowYear = now.getYear();
-                int nowMonth = now.getMonth();
-                int nowDay = now.getDate();
-                
-                if (rYear < nowYear) {
-                    dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy");
-                } else if (rMonth < nowMonth || (rMonth == nowMonth && rDay < nowDay)) {
-                    dtformat = DateTimeFormat.getFormat("dd.MMM.");
-                } else if (rDay == nowDay){
-                    dtformat = DateTimeFormat.getFormat("HH:mm");
-                } else {
-
-                    dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy HH:mm");
-                }
-            
-                view.setHTML(dtformat.format(rDate));
-                view.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
-            }
-            
-        });
-        date.setPreferredColumnWidth(100);
-        date.setMinimumColumnWidth(100);
-        date.setMaximumColumnWidth(150);
-        
-        cList.add(date);
-        
-        return cList;
-    }
-    
-   
-
-    
-    /**
-     * ColumnDefination which display if the message contains an attachment
-     * @author Norman
-     *
-     */
-    private static final class AttachmentColumnDefination extends AbstractColumnDefinition<Message, Boolean> {
-
-        @Override
-        public Boolean getCellValue(Message rowValue) {
-            return rowValue.hasAttachment();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, Boolean cellValue) {
-        }
-        
-    }
-
-    /**
-     * ColumnDefination which display the From 
-     *
-     */
-    private static final class FromColumnDefination extends AbstractColumnDefinition<Message, String> {
-
-        @Override
-        public String getCellValue(Message rowValue) {
-            return rowValue.getFrom();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, String cellValue) {
-            rowValue.setFrom(cellValue);
-        }
-        
-    }
-    
-    /**
-     * ColumnDefination which display the Subject
-     *
-     */
-    private static final class SubjectColumnDefination extends AbstractColumnDefinition<Message, String> {
-
-        @Override
-        public String getCellValue(Message rowValue) {
-            return rowValue.getSubject();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, String cellValue) {
-            rowValue.setSubject(cellValue);
-
-        }
-        
-    }
-    
-    /**
-     * ColumnDefination which display the Date
-     * 
-     */
-    private static final class DateColumnDefination extends AbstractColumnDefinition<Message, Date> {
-
-        @Override
-        public Date getCellValue(Message rowValue) {
-            return rowValue.getReceivedDate();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, Date cellValue) {
-            rowValue.setReceivedDate(cellValue);
-        }
-        
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableSelection()
-     */
-    public HasRowSelectionHandlers getDataTableSelection() {
-        return mailTable.getDataTable();
-    }
-    
-
-    public void reloadData() {
-        mailTable.reloadPage();
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
-     */
-    public void reset() {
-        pageBox.setSelectedIndex(0);
-        cTableModel.clearCache();
-        cTableModel.setRowCount(CachedTableModel.UNKNOWN_ROW_COUNT);
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        mailTable.gotoPage(0, false);
-=======
-        mailTable.gotoFirstPage();
->>>>>>> first commit
-=======
-//        mailTable.gotoFirstPage();
->>>>>>> constantly changed by manolo
-=======
-        mailTable.gotoPage(0, false);
->>>>>>> constantly changed by manolo
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableLoad()
-     */
-    public HasPageLoadHandlers getDataTableLoad() {
-        return mailTable;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
-     */
-    public Widget asWidget() {
-        return this;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick()
-     */
-    public HasClickHandlers getDeleteClick() {
-        return deleteMailButton;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
-     */
-    public HasClickHandlers getNewClick() {
-        return newMailButton;
-    }
-    
-    /**
-     * Renderer which fill empty rows with a whitespace 
-     *
-     * @param <E> RowType
-     */
-    private static final class WhiteSpaceCellRenderer<E> implements CellRenderer<E, String> {
-
-        /*
-         * (non-Javadoc)
-         * @see com.google.gwt.gen2.table.client.CellRenderer#renderRowValue(java.lang.Object, com.google.gwt.gen2.table.client.ColumnDefinition, com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView)
-         */
-        public void renderRowValue(E rowValue,
-                ColumnDefinition<E, String> columnDef, AbstractCellView<E> view) {
-            String cellValue = columnDef.getCellValue(rowValue);
-            if (cellValue == null || cellValue.length() < 1) {
-                view.setHTML("&nbsp");
-            } else {
-                view.setHTML(cellValue);
-            }
-        }
-
-        
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
-     */
-    public Message getData(int rowIndex) {
-        return mailTable.getRowValue(rowIndex);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog()
-     */
-    public HasDialog getConfirmDeleteDialog() {
-        return confirmBox;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteDialogClick()
-     */
-    public HasClickHandlers getConfirmDeleteDialogClick() {
-        return confirmBox;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialog()
-     */
-    public HasDialog getConfirmDeleteAllDialog() {
-        return confirmDeleteAllBox;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialogClick()
-     */
-    public HasClickHandlers getConfirmDeleteAllDialogClick() {
-        return confirmDeleteAllBox;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#deselectAllMessages()
-     */
-    public void deselectAllMessages() {
-        mailTable.getDataTable().deselectAllRows();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick()
-     */
-    public HasClickHandlers getSelectAllClick() {
-        return allLink;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectNoneClick()
-     */
-    public HasClickHandlers getSelectNoneClick() {
-        return noneLink;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages()
-     */
-    public void selectAllMessages() {
-        mailTable.getDataTable().selectAllRows();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectedMessages()
-     */
-    public List<Message> getSelectedMessages() {
-        return mailTable.getSelectedRows();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages(java.util.ArrayList)
-     */
-    public void removeMessages(List<Message> messages) {
-        mailTable.removeRows(messages);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#addTableListener(com.google.gwt.user.client.ui.TableListener)
-     */
-    public void addTableListener(TableListener listener) {
-        dataTable.addTableListener(listener);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeTableListener(com.google.gwt.user.client.ui.TableListener)
-     */
-    public void removeTableListener(TableListener listener) {
-        dataTable.removeTableListener(listener);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#setPostFetchMessageCount(int)
-     */
-    public void setPostFetchMessageCount(int count) {
-        cTableModel.setPostCachedRowCount(count);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
-     */
-    public void redraw() {
-        mailTable.reloadPage();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick()
-     */
-    public HasClickHandlers getDeleteAllClick() {
-        return deleteAllMailButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick()
-     */
-    public HasClickHandlers getMarkSeenClick() {
-        return markSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenClick()
-     */
-    public HasClickHandlers getMarkUnseenClick() {
-        return markUnSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable()
-     */
-    public HasEnable getDeleteEnable() {
-        return deleteMailButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable()
-     */
-    public HasEnable getMarkSeenEnable() {
-        return markSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenEnable()
-     */
-    public HasEnable getMarkUnseenEnable() {
-        return markUnSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRefreshClick()
-     */
-    public HasClickHandlers getRefreshClick() {
-        return refreshLink;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#goToPage(int)
-     */
-    public void goToPage(int page) {
-        if (page != mailTable.getCurrentPage()) {
-            mailTable.gotoPage(page, false);
-        }
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getCurrentPage()
-     */
-    public int getCurrentPage() {
-        return mailTable.getCurrentPage();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTablePageChange()
-     */
-    public HasPageChangeHandlers getDataTablePageChange() {
-        return mailTable;
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRowsPerPageIndex()
-     */
-    public int getRowsPerPageIndex() {
-        return pageBox.getSelectedIndex();
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRowsPerPageChange()
-     */
-    public HasChangeHandlers getRowsPerPageChange() {
-        return pageBox;
-    }
-    
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchClick()
-     */
-    public HasClickHandlers getSearchClick() {
-        return searchButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchValue()
-     */
-    public HasValue<String> getSearchValue() {
-        return searchBox;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#fillSearchOracle(java.util.ArrayList)
-     */
-    public void fillSearchOracle(List<Message> messages) {
-        for (Message m : messages) {
-            String subject = m.getSubject();
-            String from = m.getFrom();
-            if (subject != null && subject.trim().length() > 0) {
-                oracle.add(subject.trim());
-            }
-            if (from != null && from.trim().length() > 0) {
-                oracle.add(from.trim());
-            }
-        }
-        //searchBox.setText("");
-    }
-
-    public void setExpandLoading(boolean expanding) {
-        if (expanding) {
-            loading.show();
-        } else {
-            loading.hide();
-        }
-    }
-}
diff --git a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java b/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
deleted file mode 100644
index e2dfb21..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.mvp;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.customware.gwt.presenter.client.EventBus;
-import net.customware.gwt.presenter.client.widget.WidgetDisplay;
-import net.customware.gwt.presenter.client.widget.WidgetPresenter;
-
-import org.apache.hupa.client.CachingDispatchAsync;
-import org.apache.hupa.client.HupaCallback;
-import org.apache.hupa.shared.SConsts;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageAttachment;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.ForwardMessageEvent;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.ReplyMessageEvent;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.DeleteMessageByUid;
-import org.apache.hupa.shared.rpc.DeleteMessageResult;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.Window;
-import com.google.inject.Inject;
-
-public class IMAPMessagePresenter extends WidgetPresenter<IMAPMessagePresenter.Display>{
-
-    public interface Display extends WidgetDisplay{
-        
-        public void setHeaders(Message msg);
-        public void setAttachments(List<MessageAttachment> attachements, String folder,  long uid);
-        public void setContent(String content);
-        
-        public HasClickHandlers getShowRawMessageClick();
-        public HasClickHandlers getDeleteButtonClick();
-        public HasClickHandlers getReplyButtonClick();
-        public HasClickHandlers getReplyAllButtonClick();
-        public HasClickHandlers getForwardButtonClick();
-        public HasClickHandlers getBackButtonClick();
-    }
-
-    private MessageDetails messageDetails;
-    private Message message;
-    private CachingDispatchAsync dispatcher;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-=======
-    private IMAPFolder folder;
->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private User user;
-
-    @Inject
-    private IMAPMessagePresenter(IMAPMessagePresenter.Display display,EventBus bus, CachingDispatchAsync dispatcher) {
-        super(display,bus);
-        this.dispatcher = dispatcher;
-    }
-
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message message, MessageDetails messageDetails) {
-=======
-    public void revealDisplay(User user, IMAPFolder folder, Message message, MessageDetails messageDetails) {
->>>>>>> first commit
-=======
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message message, MessageDetails messageDetails) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void revealDisplay(User user, ImapFolder folder, Message message, MessageDetails messageDetails) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.message = message;
-        this.messageDetails = messageDetails;
-        this.folder = folder;
-        this.user = user;
-        updateDisplay();
-        firePresenterChangedEvent();
-        revealDisplay();
-    }
-
-    private void updateDisplay() {
-        display.setAttachments(messageDetails.getMessageAttachments(), folder.getFullName(),message.getUid());
-        display.setHeaders(message);
-        display.setContent(messageDetails.getText());
-    }
-
-    @Override
-    protected void onBind() {
-        registerHandler(display.getDeleteButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                ArrayList<Long> uidList = new ArrayList<Long>();
-                uidList.add(message.getUid());
-                dispatcher.execute(new DeleteMessageByUid(folder, uidList), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {
-                    public void callback(DeleteMessageResult result) {
-                        eventBus.fireEvent(new LoadMessagesEvent(user,folder));
-                    }
-                }); 
-            }
-
-        }));
-        
-        registerHandler(display.getForwardButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new ForwardMessageEvent(user,folder,message, messageDetails));
-            }
-            
-        }));
-        
-        registerHandler(display.getReplyButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, false));
-            }
-            
-        }));
-        
-        registerHandler(display.getReplyAllButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, true));
-            }
-            
-        }));
-        registerHandler(display.getBackButtonClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new BackEvent());
-            }
-            
-        }));
-        registerHandler(display.getShowRawMessageClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                String message_url = GWT.getModuleBaseURL() + SConsts.SERVLET_SOURCE + 
-                "?" + SConsts.PARAM_UID + "=" + message.getUid() + 
-                "&" + SConsts.PARAM_FOLDER + "=" + folder.getFullName();
-                Window.open(message_url, "_blank", "");
-            }
-            
-        }));
-    }
-
-
-    @Override
-    protected void onUnbind() {
-    }
-
-
-    @Override
-    protected void onRevealDisplay() {
-
-    }
-}
diff --git a/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java b/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java
deleted file mode 100644
index 1c74a16..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.client.mvp;

-

-import net.customware.gwt.dispatch.client.DispatchAsync;

-import net.customware.gwt.presenter.client.EventBus;

-import net.customware.gwt.presenter.client.widget.WidgetDisplay;

-import net.customware.gwt.presenter.client.widget.WidgetPresenter;

-

-import org.apache.hupa.client.HupaCallback;

-import org.apache.hupa.client.HupaConstants;

-import org.apache.hupa.shared.events.FlashEvent;

-import org.apache.hupa.shared.events.LoginEvent;

-import org.apache.hupa.shared.events.SessionExpireEvent;

-import org.apache.hupa.shared.events.SessionExpireEventHandler;

-import org.apache.hupa.shared.rpc.LoginUser;

-import org.apache.hupa.shared.rpc.LoginUserResult;

-

-import com.google.gwt.core.client.GWT;

-import com.google.gwt.event.dom.client.ClickEvent;

-import com.google.gwt.event.dom.client.ClickHandler;

-import com.google.gwt.event.dom.client.HasClickHandlers;

-import com.google.gwt.user.client.ui.Focusable;

-import com.google.gwt.user.client.ui.HasValue;

-import com.google.inject.Inject;

-

-/**

- * Presenter which handles the Login of and user to the IMAP-Server

- * 

- *

- */

-public class LoginPresenter extends WidgetPresenter<LoginPresenter.Display>{

-    

-    private HupaConstants constants = GWT.create(HupaConstants.class);

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-    private int minUsernameLength = 1;

-    private int minPasswordLength = 1;

->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-

-    public interface Display extends WidgetDisplay{

-        public HasClickHandlers getLoginClick();

-        public HasClickHandlers getResetClick();

-        public HasValue<String> getUserNameValue();

-        public HasValue<String> getPasswordValue();

-        public Focusable getUserNameFocus();

-        public void setLoading(boolean loading);

-    }

-    

-    private DispatchAsync dispatcher;

-

-    @Inject

-    public LoginPresenter(LoginPresenter.Display display,EventBus bus,DispatchAsync dispatcher) {

-        super(display,bus);

-        this.dispatcher = dispatcher;

-    }

-    

-    /**

-     * Try to login the user

-     */

-    private void doLogin() {

-<<<<<<< HEAD
-<<<<<<< HEAD
-        String user = display.getUserNameValue().getValue().trim();

-        String pass = display.getPasswordValue().getValue().trim();

-        

-        if (user.isEmpty() || pass.isEmpty())

-=======
-        String user = display.getUserNameValue().getValue();

-        String pass = display.getPasswordValue().getValue();

-        

-        if (user.length() < minUsernameLength || pass.length() < minPasswordLength)

->>>>>>> first commit
-=======
-        String user = display.getUserNameValue().getValue().trim();

-        String pass = display.getPasswordValue().getValue().trim();

-        

-        if (user.isEmpty() || pass.isEmpty())

->>>>>>> constantly changed by manolo
-            return;

-        

-        display.setLoading(true);

-        dispatcher.execute(new LoginUser(user, pass), new HupaCallback<LoginUserResult>(dispatcher, eventBus, display) {

-            public void callback(LoginUserResult result) {

-                display.setLoading(false);

-                eventBus.fireEvent(new LoginEvent(result.getUser()));

-                doReset();

-            }

-            public void callbackError(Throwable caught) {

-                display.setLoading(false);

-                eventBus.fireEvent(new FlashEvent(constants.loginInvalid(), 4000));

-                doReset();

-            }

-        }); 

-    }

-    

-    /**

-     * Reset display

-     */

-    private void doReset() {

-        display.getUserNameValue().setValue("");

-        display.getPasswordValue().setValue("");

-        display.getUserNameFocus().setFocus(true);

-    }

-

-    @Override

-    protected void onBind() {

-        registerHandler(display.getLoginClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                doLogin();

-            }

-            

-        }));

-        registerHandler(display.getResetClick().addClickHandler(new ClickHandler() {

-

-            public void onClick(ClickEvent event) {

-                doReset();

-            }

-            

-        }));

-        

-        registerHandler(eventBus.addHandler(SessionExpireEvent.TYPE, new SessionExpireEventHandler() {

-

-            public void onSessionExpireEvent(SessionExpireEvent event) {

-                eventBus.fireEvent(new FlashEvent(constants.sessionTimedOut(), 4000));

-            }

-            

-        }));

-    }

-

-    @Override

-    protected void onUnbind() {

-        // Nothing to do

-    }

-

-    @Override

-    protected void onRevealDisplay() {

-        // Nothing to do

-    }

-}

diff --git a/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java b/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java
deleted file mode 100644
index d076151..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.client.mvp;

-

-import org.apache.hupa.client.HupaCSS;

-import org.apache.hupa.client.HupaConstants;

-import org.apache.hupa.widgets.ui.Loading;

-import org.apache.hupa.widgets.ui.RndPanel;

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import org.cobogw.gwt.user.client.ui.Button;

-import org.cobogw.gwt.user.client.ui.ButtonBar;

->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-

-import com.google.gwt.event.dom.client.HasClickHandlers;

-import com.google.gwt.event.dom.client.KeyCodes;

-import com.google.gwt.event.dom.client.KeyUpEvent;

-import com.google.gwt.event.dom.client.KeyUpHandler;

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-import com.google.gwt.user.client.DOM;

-import com.google.gwt.user.client.ui.Button;

-import com.google.gwt.user.client.ui.Composite;

-import com.google.gwt.user.client.ui.FlexTable;

-import com.google.gwt.user.client.ui.FlowPanel;

-import com.google.gwt.user.client.ui.Focusable;

-import com.google.gwt.user.client.ui.FormPanel;

-import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;

-import com.google.gwt.user.client.ui.HasValue;

-import com.google.gwt.user.client.ui.Panel;

-import com.google.gwt.user.client.ui.PasswordTextBox;

-import com.google.gwt.user.client.ui.SubmitButton;

-<<<<<<< HEAD
-=======
-import com.google.gwt.user.client.ui.Composite;

-import com.google.gwt.user.client.ui.FlexTable;

-import com.google.gwt.user.client.ui.Focusable;

-import com.google.gwt.user.client.ui.HasValue;

-import com.google.gwt.user.client.ui.PasswordTextBox;

->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-import com.google.gwt.user.client.ui.TextBox;

-import com.google.gwt.user.client.ui.VerticalPanel;

-import com.google.gwt.user.client.ui.Widget;

-import com.google.inject.Inject;

-

-/**

- * View which shows the Login from

- *

- */

-public class LoginView extends Composite implements KeyUpHandler,LoginPresenter.Display{

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-    private Button loginButton = new Button();

-    private SubmitButton submitButton;

-    private Button resetButton;

-    private Loading loading;

-    

-    // We wrap login/password boxes with a form which must be in the html document, 

-    // in this way, the browser knows that we are sending a login form and 

-    // offers the save password dialog to the user

-    private TextBox usernameTextBox = TextBox.wrap(DOM.getElementById("email"));

-    private PasswordTextBox passwordTextBox = PasswordTextBox.wrap(DOM.getElementById("password"));

-    // wrap the form after inputs so as they are in the dom when are wrapped

-    final private FormPanel formPanel = FormPanel.wrap(DOM.getElementById("loginForm"), true);

-    

-=======
-    private Button loginButton;

-=======
-    private Button loginButton = new Button();

-    private SubmitButton submitButton;

->>>>>>> constantly changed by manolo
-    private Button resetButton;

-    private Loading loading;

-<<<<<<< HEAD
->>>>>>> first commit
-=======
-    

-    // We wrap login/password boxes with a form which must be in the html document, 

-    // in this way, the browser knows that we are sending a login form and 

-    // offers the save password dialog to the user

-    private TextBox usernameTextBox = TextBox.wrap(DOM.getElementById("email"));

-    private PasswordTextBox passwordTextBox = PasswordTextBox.wrap(DOM.getElementById("password"));

-    // wrap the form after inputs so as they are in the dom when are wrapped

-    final private FormPanel formPanel = FormPanel.wrap(DOM.getElementById("loginForm"), true);

-    

->>>>>>> constantly changed by manolo
-    @Inject

-    public LoginView(HupaConstants constants) {

-        

-        VerticalPanel mainContainer = new VerticalPanel();

-        RndPanel rPanel = new RndPanel();

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-        FlexTable flexTable = new FlexTable();

-        Panel buttonBar = new FlowPanel();

-        submitButton =   new SubmitButton(constants.loginButton());

-        resetButton = new Button(constants.resetButton());

-        submitButton.getElement().setClassName(HupaCSS.C_button);

-        resetButton.getElement().setClassName(HupaCSS.C_button);

-        submitButton.getElement().setClassName(resetButton.getElement().getClassName());

-<<<<<<< HEAD
-        loading = new Loading(constants.loading());

-        

-        mainContainer.setStyleName(HupaCSS.C_login_container);

-        flexTable.addStyleName(HupaCSS.C_login_form);

-        usernameTextBox.addStyleName(HupaCSS.C_login_box);

-        passwordTextBox.addStyleName(HupaCSS.C_login_box);

-        

-        buttonBar.add(submitButton);

-        buttonBar.add(resetButton);

-

-        flexTable.setText(0, 0, constants.usernameLabel());

-        flexTable.setWidget(0, 1, usernameTextBox);

-        flexTable.setText(1, 0, constants.passwordLabel());

-        flexTable.setWidget(1, 1, passwordTextBox);

-        flexTable.getFlexCellFormatter().setColSpan(2, 0, 2);

-        flexTable.setWidget(2, 0, buttonBar);

-

-        rPanel.add(formPanel);

-        formPanel.add(flexTable);

-=======
-        FlexTable formPanel = new FlexTable();

-        ButtonBar buttonBar = new ButtonBar();

-        loginButton = new Button(constants.loginButton());

-        resetButton = new Button(constants.resetButton());  

-=======
->>>>>>> constantly changed by manolo
-        loading = new Loading(constants.loading());

-

-        mainContainer.setStyleName(HupaCSS.C_login_container);

-        rPanel.addStyleName(HupaCSS.C_login_box);

-        flexTable.addStyleName(HupaCSS.C_login_form);

-        usernameTextBox.addStyleName(HupaCSS.C_login_textbox);

-        passwordTextBox.addStyleName(HupaCSS.C_login_textbox);

-         

-        buttonBar.add(submitButton);

-        buttonBar.add(resetButton);

-

-        flexTable.setText(0, 0, constants.usernameLabel());

-        flexTable.setWidget(0, 1, usernameTextBox);

-        flexTable.setText(1, 0, constants.passwordLabel());

-        flexTable.setWidget(1, 1, passwordTextBox);

-        flexTable.getFlexCellFormatter().setColSpan(2, 0, 2);

-        flexTable.setWidget(2, 0, buttonBar);

-

-        rPanel.add(formPanel);

-<<<<<<< HEAD
->>>>>>> first commit
-=======
-        formPanel.add(flexTable);

->>>>>>> constantly changed by manolo
-        mainContainer.add(rPanel);

-        mainContainer.add(loading);

-        initWidget(mainContainer);

-        

-        usernameTextBox.addKeyUpHandler(this);

-        usernameTextBox.setFocus(true);

-        passwordTextBox.addKeyUpHandler(this);

-

-        loading.hide();

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-

-        // The user submits the form so as the browser detect it and displays

-        // the save password dialog. Then we click on the hidden loginButton which

-        // stores the presenter clickHandler.

-        formPanel.addSubmitHandler(new FormPanel.SubmitHandler() {

-            public void onSubmit(SubmitEvent event) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-                if (!usernameTextBox.getValue().trim().isEmpty() && !passwordTextBox.getValue().trim().isEmpty()) {

-                    loginButton.click();

-                }

-//                event.cancel();

-<<<<<<< HEAD
-=======
-                event.cancel();

-                loginButton.click();

->>>>>>> constantly changed by manolo
-=======
->>>>>>> constantly changed by manolo
-            }

-        });

-        // loginButton must be in the document to handle the click() method

-        mainContainer.add(loginButton);

-        loginButton.setVisible(false);

-<<<<<<< HEAD
-=======
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-    }

-    

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * com.google.gwt.event.dom.client.KeyUpHandler#onKeyUp(com.google.gwt.event

-     * .dom.client.KeyUpEvent)

-     */

-    public void onKeyUp(KeyUpEvent event) {

-        if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {

-            if (event.getSource().equals(usernameTextBox)) {

-                passwordTextBox.setFocus(true);

-            }  else if (event.getSource().equals(passwordTextBox)) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-                submitButton.click();

-//                formPanel.submit();

-=======
-                loginButton.click();

->>>>>>> first commit
-=======
-                submitButton.click();

-<<<<<<< HEAD
->>>>>>> constantly changed by manolo
-=======
-//                formPanel.submit();

->>>>>>> constantly changed by manolo
-            }

-        }

-    }

- 

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.LoginPresenter.Display#getLoginClick()

-     */

-    public HasClickHandlers getLoginClick() {

-<<<<<<< HEAD
-<<<<<<< HEAD
-        return submitButton;

-=======
-        return loginButton;

->>>>>>> first commit
-=======
-        return submitButton;

->>>>>>> change the LOGIN progress using native MVP instead of gwt-presenter
-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.LoginPresenter.Display#getPasswordValue()

-     */

-    public HasValue<String> getPasswordValue() {

-        return passwordTextBox;

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.LoginPresenter.Display#getResetClick()

-     */

-    public HasClickHandlers getResetClick() {

-        return resetButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.LoginPresenter.Display#getUserNameValue()

-     */

-    public HasValue<String> getUserNameValue() {

-        return usernameTextBox;

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.LoginPresenter.Display#getUserNameFocus()

-     */

-    public Focusable getUserNameFocus() {

-        return usernameTextBox;

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()

-     */

-    public Widget asWidget() {

-        return this;

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.HupaWidgetDisplay#startProcessing()

-     */

-    public void setLoading(boolean load) {

-        if (load) {

-            loading.show();

-        } else {

-            loading.hide();

-

-        }

-    }

-    

-    /* (non-Javadoc)

-     * @see com.google.gwt.user.client.ui.Composite#onAttach()

-     */

-    @Override

-    public void onAttach() {

-       super.onAttach();

-       usernameTextBox.setFocus(true);

-    }

-

-}

diff --git a/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java b/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
deleted file mode 100644
index 346fa78..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
+++ /dev/null
@@ -1,849 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.mvp;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-import net.customware.gwt.dispatch.client.DispatchAsync;
-=======
->>>>>>> first commit
-=======
-import net.customware.gwt.dispatch.client.DispatchAsync;
->>>>>>> constantly changed by manolo
-import net.customware.gwt.presenter.client.EventBus;
-import net.customware.gwt.presenter.client.widget.WidgetContainerDisplay;
-import net.customware.gwt.presenter.client.widget.WidgetContainerPresenter;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import org.apache.hupa.client.CachingDispatchAsync;
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-import org.apache.hupa.client.HupaCallback;
-import org.apache.hupa.client.mvp.MessageSendPresenter.Type;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.client.widgets.IMAPTreeItem;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.Message;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.Message.IMAPFlag;
-import org.apache.hupa.shared.data.MessageDetails;
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-=======
-import org.apache.hupa.shared.data.MessageDetails;
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.data.Message.IMAPFlag;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.Message.IMAPFlag;
-import org.apache.hupa.shared.data.MessageDetails;
-import org.apache.hupa.shared.data.User;
->>>>>>> constantly changed by manolo
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-=======
-import org.apache.hupa.shared.data.MessageDetails;
-=======
->>>>>>> try to get message details, problem is:
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
->>>>>>> try to change fetch messages to use RF
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.BackEventHandler;
-import org.apache.hupa.shared.events.DecreaseUnseenEvent;
-import org.apache.hupa.shared.events.DecreaseUnseenEventHandler;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.ExpandMessageEventHandler;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.ForwardMessageEvent;
-import org.apache.hupa.shared.events.ForwardMessageEventHandler;
-import org.apache.hupa.shared.events.IncreaseUnseenEvent;
-import org.apache.hupa.shared.events.IncreaseUnseenEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
-import org.apache.hupa.shared.events.MessagesReceivedEvent;
-import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
-import org.apache.hupa.shared.events.NewMessageEvent;
-import org.apache.hupa.shared.events.NewMessageEventHandler;
-import org.apache.hupa.shared.events.ReplyMessageEvent;
-import org.apache.hupa.shared.events.ReplyMessageEventHandler;
-import org.apache.hupa.shared.events.SentMessageEvent;
-import org.apache.hupa.shared.events.SentMessageEventHandler;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.CreateFolder;
-import org.apache.hupa.shared.rpc.DeleteFolder;
-import org.apache.hupa.shared.rpc.FetchFolders;
-import org.apache.hupa.shared.rpc.FetchFoldersResult;
-import org.apache.hupa.shared.rpc.GenericResult;
-import org.apache.hupa.shared.rpc.GetMessageDetails;
-import org.apache.hupa.shared.rpc.GetMessageDetailsResult;
-import org.apache.hupa.shared.rpc.RenameFolder;
-import org.apache.hupa.widgets.event.EditEvent;
-import org.apache.hupa.widgets.event.EditHandler;
-import org.apache.hupa.widgets.ui.HasEditable;
-import org.apache.hupa.widgets.ui.HasEnable;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.logical.shared.HasSelectionHandlers;
-import com.google.gwt.event.logical.shared.SelectionEvent;
-import com.google.gwt.event.logical.shared.SelectionHandler;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.gwt.user.client.ui.TreeItem;
-import com.google.inject.Inject;
-
-/**
- *
- */
-public class MainPresenter extends WidgetContainerPresenter<MainPresenter.Display> {
-
-    public interface Display extends NameAwareWidgetDisplay, WidgetContainerDisplay {
-      
-        public HasSelectionHandlers<TreeItem> getTree();
-
-        public void bindTreeItems(List<IMAPTreeItem> treeList);
-
-        public HasClickHandlers getRenameClick();
-
-        public HasClickHandlers getDeleteClick();
-
-        public HasClickHandlers getNewClick();
-
-        public HasDialog getDeleteConfirmDialog();
-
-        public HasClickHandlers getDeleteConfirmClick();
-
-        public HasEnable getRenameEnable();
-
-        public HasEnable getDeleteEnable();
-
-        public HasEnable getNewEnable();
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        public void updateTreeItem(IMAPFolderProxy folder);
-=======
-        public void updateTreeItem(IMAPFolder folder);
->>>>>>> first commit
-=======
-        public void updateTreeItem(IMAPFolderProxy folder);
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        public void updateTreeItem(ImapFolder folder);
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-
-        public void deleteSelectedFolder();
-
-        public HasEditable createFolder(EditHandler handler);
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
-
-        public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
-=======
-        public void increaseUnseenMessageCount(IMAPFolder folder, int amount);
-
-        public void decreaseUnseenMessageCount(IMAPFolder folder, int amount);
->>>>>>> first commit
-=======
-        public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
-
-        public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount);
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        public void increaseUnseenMessageCount(ImapFolder folder, int amount);
-
-        public void decreaseUnseenMessageCount(ImapFolder folder, int amount);
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        
-        public void setLoadingFolders(boolean loading);
-        public void setLoadingMessage(boolean loading);
-
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private DispatchAsync dispatcher;
-    private User user;
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-=======
-    private CachingDispatchAsync cachingDispatcher;
-=======
-    private DispatchAsync dispatcher;
->>>>>>> constantly changed by manolo
-    private User user;
-<<<<<<< HEAD
-    private IMAPFolder folder;
->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private String searchValue;
-    private IMAPMessageListPresenter messageListPresenter;
-    private IMAPMessagePresenter messagePresenter;
-    private MessageSendPresenter sendPresenter;
-    private IMAPTreeItem tItem;
-    private HasEditable editableTreeItem;
-    
-    @Inject
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public MainPresenter(MainPresenter.Display display, EventBus bus, DispatchAsync cachingDispatcher, IMAPMessageListPresenter messageListPresenter, IMAPMessagePresenter messagePresenter,
-            MessageSendPresenter sendPresenter) {
-        super(display, bus, messageListPresenter, messagePresenter, sendPresenter);
-        this.dispatcher = cachingDispatcher;
-=======
-    public MainPresenter(MainPresenter.Display display, EventBus bus, CachingDispatchAsync cachingDispatcher, IMAPMessageListPresenter messageListPresenter, IMAPMessagePresenter messagePresenter,
-            MessageSendPresenter sendPresenter) {
-        super(display, bus, messageListPresenter, messagePresenter, sendPresenter);
-        this.cachingDispatcher = cachingDispatcher;
->>>>>>> first commit
-=======
-    public MainPresenter(MainPresenter.Display display, EventBus bus, DispatchAsync cachingDispatcher, IMAPMessageListPresenter messageListPresenter, IMAPMessagePresenter messagePresenter,
-            MessageSendPresenter sendPresenter) {
-        super(display, bus, messageListPresenter, messagePresenter, sendPresenter);
-        this.dispatcher = cachingDispatcher;
->>>>>>> constantly changed by manolo
-        this.messageListPresenter = messageListPresenter;
-        this.messagePresenter = messagePresenter;
-        this.sendPresenter = sendPresenter;
-        
-    }
-
-    protected void loadTreeItems() {
-        display.setLoadingFolders(true);
-<<<<<<< HEAD
-<<<<<<< HEAD
-        dispatcher.execute(new FetchFolders(), new HupaCallback<FetchFoldersResult>(dispatcher, eventBus, display) {
-=======
-        cachingDispatcher.execute(new FetchFolders(), new HupaCallback<FetchFoldersResult>(cachingDispatcher, eventBus, display) {
->>>>>>> first commit
-=======
-        dispatcher.execute(new FetchFolders(), new HupaCallback<FetchFoldersResult>(dispatcher, eventBus, display) {
->>>>>>> constantly changed by manolo
-            public void callback(FetchFoldersResult result) {
-                display.bindTreeItems(createTreeNodes(result.getFolders()));
-                // disable
-                display.getDeleteEnable().setEnabled(false);
-                display.getRenameEnable().setEnabled(false);
-                display.setLoadingFolders(false);
-
-            }
-        });
-    }
-
-    /**
-     * Create recursive the TreeNodes with all childs
-     * 
-     * @param list
-     * @return
-     */
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private List<IMAPTreeItem> createTreeNodes(List<IMAPFolderProxy> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (IMAPFolderProxy iFolder : list) {
-=======
-    private List<IMAPTreeItem> createTreeNodes(List<IMAPFolder> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (IMAPFolder iFolder : list) {
->>>>>>> first commit
-=======
-    private List<IMAPTreeItem> createTreeNodes(List<IMAPFolderProxy> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (IMAPFolderProxy iFolder : list) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private List<IMAPTreeItem> createTreeNodes(List<ImapFolder> list) {
-        List<IMAPTreeItem> tList = new ArrayList<IMAPTreeItem>();
-
-        for (ImapFolder iFolder : list) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-
-            final IMAPTreeItem record = new IMAPTreeItem(iFolder);
-            record.addEditHandler(new EditHandler() {
-
-                public void onEditEvent(EditEvent event) {
-                    if (event.getEventType().equals(EditEvent.EventType.Stop)) {
-                        ImapFolderImpl iFolder = new ImapFolderImpl((String) event.getOldValue());
-                        final String newName = (String) event.getNewValue();
-                        if (iFolder.getFullName().equalsIgnoreCase(newName) == false) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-                            dispatcher.execute(new RenameFolder(iFolder, newName), new HupaCallback<GenericResult>(dispatcher, eventBus) {
-=======
-                            cachingDispatcher.execute(new RenameFolder(iFolder, newName), new HupaCallback<GenericResult>(cachingDispatcher, eventBus) {
->>>>>>> first commit
-=======
-                            dispatcher.execute(new RenameFolder(iFolder, newName), new HupaCallback<GenericResult>(dispatcher, eventBus) {
->>>>>>> constantly changed by manolo
-                                public void callback(GenericResult result) {
-                                    folder.setFullName(newName);
-                                }
-                                public void callbackError(Throwable caught) {
-                                    record.cancelEdit();
-                                }
-                            }); 
-                        }
-                    }
-                }
-
-            });
-            record.setUserObject(iFolder);
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-            List<IMAPFolderProxy> childFolders = iFolder.getChildIMAPFolders();
-=======
-            List<IMAPFolder> childFolders = iFolder.getChildIMAPFolders();
->>>>>>> first commit
-=======
-            List<IMAPFolderProxy> childFolders = iFolder.getChildIMAPFolders();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-            List<IMAPFolderProxy> childFolders = iFolder.getChildren();
->>>>>>> 
-=======
-            List<ImapFolder> childFolders = iFolder.getChildren();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            List<IMAPTreeItem> items = createTreeNodes(childFolders);
-            for (IMAPTreeItem item : items) {
-                record.addItem(item);
-            }
-
-            // Store the INBOX as starting point after first loading
-            if (iFolder.getFullName().equals(user.getSettings().getInboxFolderName())) {
-                folder = iFolder;
-                tItem = record;
-            }
-
-            tList.add(record);
-        }
-
-        // Sort tree
-        Collections.sort(tList, new Comparator<TreeItem>() {
-
-            public int compare(TreeItem o1, TreeItem o2) {
-                return o1.getText().compareTo(o2.getText());
-            }
-
-        });
-        return tList;
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private void showMessageTable(User user, IMAPFolderProxy folder, String searchValue) {
-=======
-    private void showMessageTable(User user, IMAPFolder folder, String searchValue) {
->>>>>>> first commit
-=======
-    private void showMessageTable(User user, IMAPFolderProxy folder, String searchValue) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private void showMessageTable(User user, ImapFolder folder, String searchValue) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.user = user;
-        this.folder = folder;
-        this.searchValue = searchValue;
-        firePresenterChangedEvent();
-
-        messageListPresenter.revealDisplay(user, folder, searchValue);
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private void showMessage(User user, IMAPFolderProxy folder, Message message, MessageDetails details) {
-=======
-    private void showMessage(User user, IMAPFolder folder, Message message, MessageDetails details) {
->>>>>>> first commit
-=======
-    private void showMessage(User user, IMAPFolderProxy folder, Message message, MessageDetails details) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private void showMessage(User user, ImapFolder folder, Message message, MessageDetails details) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        messagePresenter.revealDisplay(user, folder, message, details);
-    }
-
-    private void showNewMessage() {
-        sendPresenter.revealDisplay(user);
-    }
-
-    private void showForwardMessage(ForwardMessageEvent event) {
-        sendPresenter.revealDisplay(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), Type.FORWARD);
-    }
-
-    private void showReplyMessage(ReplyMessageEvent event) {
-        if (event.getReplyAll()) {
-            sendPresenter.revealDisplay(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), Type.REPLY_ALL);
-        } else {
-            sendPresenter.revealDisplay(event.getUser(), event.getFolder(), event.getMessage(), event.getMessageDetails(), Type.REPLY);
-
-        }
-        sendPresenter.revealDisplay();
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-    /**
-     * Reset the presenter and display
-     */
-    private void reset() {
-        // clear the cache
-        cachingDispatcher.clear();
-    }
-
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-
-    @Override
-    protected void onBind() {
-        super.onBind();
-        registerHandler(eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-
-            public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-                showMessageTable(loadMessagesEvent.getUser(), loadMessagesEvent.getFolder(), loadMessagesEvent.getSearchValue());
-            }
-
-        }));
-
-
-        registerHandler(eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
-
-            public void onExpandMessage(ExpandMessageEvent event) {
-                final boolean decreaseUnseen;
-                final Message message = event.getMessage();
-                // check if the message was already seen in the past
-                if (event.getMessage().getFlags().contains(IMAPFlag.SEEN) == false) {
-                    decreaseUnseen = true;
-                } else {
-                    decreaseUnseen = false;
-                }
-
-                display.setLoadingMessage(true);
-<<<<<<< HEAD
-<<<<<<< HEAD
-                dispatcher.execute(new GetMessageDetails(event.getFolder(), message.getUid()), new HupaCallback<GetMessageDetailsResult>(dispatcher, eventBus, display) {
-=======
-                cachingDispatcher.executeWithCache(new GetMessageDetails(event.getFolder(), message.getUid()), new HupaCallback<GetMessageDetailsResult>(cachingDispatcher, eventBus, display) {
->>>>>>> first commit
-=======
-                dispatcher.execute(new GetMessageDetails(event.getFolder(), message.getUid()), new HupaCallback<GetMessageDetailsResult>(dispatcher, eventBus, display) {
->>>>>>> constantly changed by manolo
-                    public void callback(GetMessageDetailsResult result) {
-                        if (decreaseUnseen) {
-                            eventBus.fireEvent(new DecreaseUnseenEvent(user, folder));
-                        }
-                        display.setLoadingMessage(false);
-                        showMessage(user, folder, message, result.getMessageDetails());
-                    }
-                });
-            }
-
-        }));
-        registerHandler(eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
-
-            public void onNewMessageEvent(NewMessageEvent event) {
-                showNewMessage();
-            }
-
-        }));
-
-        registerHandler(eventBus.addHandler(SentMessageEvent.TYPE, new SentMessageEventHandler() {
-
-            public void onSentMessageEvent(SentMessageEvent ev) {
-                showMessageTable(user, folder, searchValue);
-            }
-
-        }));
-
-        registerHandler(eventBus.addHandler(ForwardMessageEvent.TYPE, new ForwardMessageEventHandler() {
-
-            public void onForwardMessageEvent(ForwardMessageEvent event) {
-                showForwardMessage(event);
-            }
-
-        }));
-        registerHandler(eventBus.addHandler(ReplyMessageEvent.TYPE, new ReplyMessageEventHandler() {
-
-            public void onReplyMessageEvent(ReplyMessageEvent event) {
-                showReplyMessage(event);
-            }
-
-        }));
-        registerHandler(eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-
-            public void onFolderSelectionEvent(FolderSelectionEvent event) {
-                user = event.getUser();
-                folder = event.getFolder();
-                showMessageTable(user, event.getFolder(), searchValue);
-            }
-
-        }));
-
-        registerHandler(eventBus.addHandler(BackEvent.TYPE, new BackEventHandler() {
-
-            public void onBackEvent(BackEvent event) {
-                showMessageTable(user, folder, searchValue);
-            }
-
-        }));
-
-        registerHandler(eventBus.addHandler(ExpandMessageEvent.TYPE, new ExpandMessageEventHandler() {
-
-            public void onExpandMessage(ExpandMessageEvent event) {
-                if (editableTreeItem != null && editableTreeItem.isEdit()) {
-                    editableTreeItem.cancelEdit();
-                }
-            }
-
-        }));
-        registerHandler(eventBus.addHandler(NewMessageEvent.TYPE, new NewMessageEventHandler() {
-
-            public void onNewMessageEvent(NewMessageEvent event) {
-                if (editableTreeItem != null && editableTreeItem.isEdit()) {
-                    editableTreeItem.cancelEdit();
-                }
-            }
-
-        }));
-        registerHandler(eventBus.addHandler(DecreaseUnseenEvent.TYPE, new DecreaseUnseenEventHandler() {
-
-            public void onDecreaseUnseenEvent(DecreaseUnseenEvent event) {
-                display.decreaseUnseenMessageCount(event.getFolder(), event.getAmount());
-            }
-
-        }));
-        registerHandler(eventBus.addHandler(IncreaseUnseenEvent.TYPE, new IncreaseUnseenEventHandler() {
-
-            public void onIncreaseUnseenEvent(IncreaseUnseenEvent event) {
-                display.increaseUnseenMessageCount(event.getFolder(), event.getAmount());
-            }
-
-        }));
-        registerHandler(display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
-
-            public void onSelection(SelectionEvent<TreeItem> event) {
-                tItem = (IMAPTreeItem) event.getSelectedItem();
-                if (tItem.isEdit()) 
-                    return;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                folder = (IMAPFolderProxy) tItem.getUserObject();
-=======
-                folder = (IMAPFolder) tItem.getUserObject();
->>>>>>> first commit
-=======
-                folder = (IMAPFolderProxy) tItem.getUserObject();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-                folder = (ImapFolder) tItem.getUserObject();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                eventBus.fireEvent(new LoadMessagesEvent(user, folder));
-            }
-
-        }));
-
-        registerHandler(display.getTree().addSelectionHandler(new SelectionHandler<TreeItem>() {
-
-            public void onSelection(SelectionEvent<TreeItem> event) {
-                tItem = (IMAPTreeItem) event.getSelectedItem();
-                if (tItem.isEdit()) 
-                    return;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                folder = (IMAPFolderProxy) tItem.getUserObject();
-=======
-                folder = (IMAPFolder) tItem.getUserObject();
->>>>>>> first commit
-=======
-                folder = (IMAPFolderProxy) tItem.getUserObject();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-                folder = (ImapFolder) tItem.getUserObject();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                if (folder.getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {
-                    display.getDeleteEnable().setEnabled(false);
-                    display.getRenameEnable().setEnabled(false);
-                } else {
-                    display.getDeleteEnable().setEnabled(true);
-                    display.getRenameEnable().setEnabled(true);
-                }
-            }
-
-        }));
-
-        registerHandler(display.getRenameClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                tItem.startEdit();
-            }
-
-        }));
-
-        registerHandler(display.getDeleteClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                display.getDeleteConfirmDialog().show();
-            }
-
-        }));
-
-        registerHandler(display.getDeleteConfirmClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-                dispatcher.execute(new DeleteFolder(folder), new AsyncCallback<GenericResult>() {
-=======
-                cachingDispatcher.execute(new DeleteFolder(folder), new AsyncCallback<GenericResult>() {
->>>>>>> first commit
-=======
-                dispatcher.execute(new DeleteFolder(folder), new AsyncCallback<GenericResult>() {
->>>>>>> constantly changed by manolo
-
-                    public void onFailure(Throwable caught) {
-                        GWT.log("ERROR while deleting", caught);
-                    }
-
-                    public void onSuccess(GenericResult result) {
-                        display.deleteSelectedFolder();
-                    }
-
-                });
-            }
-
-        }));
-
-        registerHandler(display.getNewClick().addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                editableTreeItem = display.createFolder(new EditHandler() {
-
-                    public void onEditEvent(EditEvent event) {
-                        final IMAPTreeItem item = (IMAPTreeItem) event.getSource();
-                        final String newValue = (String) event.getNewValue();
-                        if (event.getEventType().equals(EditEvent.EventType.Stop)) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                            dispatcher.execute(new CreateFolder(new IMAPFolder(newValue.trim())), new AsyncCallback<GenericResult>() {
-=======
-                            cachingDispatcher.execute(new CreateFolder(new IMAPFolder(newValue.trim())), new AsyncCallback<GenericResult>() {
->>>>>>> first commit
-=======
-                            dispatcher.execute(new CreateFolder(new IMAPFolder(newValue.trim())), new AsyncCallback<GenericResult>() {
->>>>>>> constantly changed by manolo
-=======
-                            dispatcher.execute(new CreateFolder(new ImapFolderImpl(newValue.trim())), new AsyncCallback<GenericResult>() {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-
-                                public void onFailure(Throwable caught) {
-                                    GWT.log("Error while create folder", caught);
-                                    item.cancelEdit();
-                                }
-
-                                public void onSuccess(GenericResult result) {
-                                    // Nothing todo
-                                }
-
-                            });
-                        }
-                    }
-
-                });
-            }
-
-        }));
-
-        registerHandler(eventBus.addHandler(MessagesReceivedEvent.TYPE, new MessagesReceivedEventHandler() {
-
-            public void onMessagesReceived(MessagesReceivedEvent event) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-            	IMAPFolderProxy f = event.getFolder();
-=======
-                IMAPFolder f = event.getFolder();
->>>>>>> first commit
-=======
-            	IMAPFolderProxy f = event.getFolder();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-            	ImapFolder f = event.getFolder();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                display.updateTreeItem(f);
-            }
-
-        }));
-        
-        registerHandler(eventBus.addHandler(LoginEvent.TYPE,  new LoginEventHandler() {
-
-            public void onLogin(LoginEvent event) {
-                user = event.getUser();
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());;
-=======
-                folder = (ImapFolder)new ImapFolderImpl(user.getSettings().getInboxFolderName());;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                searchValue = null;
-                showMessageTable(user, folder, searchValue);
-=======
-                folder = new IMAPFolder(user.getSettings().getInboxFolderName());
-                messageListPresenter.revealDisplay(user, folder, null);
->>>>>>> first commit
-=======
-                folder = new IMAPFolder(user.getSettings().getInboxFolderName());;
-=======
-                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-                searchValue = null;
-                showMessageTable(user, folder, searchValue);
->>>>>>> constantly changed by manolo
-            }
-            
-        }));
-        
-        // Export native javascript methods
-        exportJSMethods(this);
-
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-
-    @Override
-    protected void onUnbind() {
-        reset();
-
-        super.onUnbind();
-    }
-
-    
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-    public void revealDisplay(User user) {
-        this.user = user;
-        loadTreeItems();  
-        revealDisplay();
-    }
-    
-    @Override
-    protected void onRevealDisplay() {
-<<<<<<< HEAD
-<<<<<<< HEAD
-//        showMessageTable(user, folder, searchValue);
-//        super.onRevealDisplay();
-=======
-        showMessageTable(user, folder, searchValue);
-        super.onRevealDisplay();
->>>>>>> first commit
-=======
-//        showMessageTable(user, folder, searchValue);
-//        super.onRevealDisplay();
->>>>>>> constantly changed by manolo
-    }
-    
-    public void openLink(String url) {
-        Window.open(url, "_blank", "");
-    }
-
-    public void mailTo(String mailto) {
-        sendPresenter.revealDisplay(user, mailto);
-    }
-    
-    private native void exportJSMethods(MainPresenter presenter) /*-{
-      $wnd.openLink = function(url) {
-        try {
-           presenter.@org.apache.hupa.client.mvp.MainPresenter::openLink(Ljava/lang/String;) (url);
-        } catch(e) {}
-        return false;
-      };
-      $wnd.mailTo = function(mail) {
-        try {
-           presenter.@org.apache.hupa.client.mvp.MainPresenter::mailTo(Ljava/lang/String;) (mail);
-        } catch(e) {}
-        return false;
-      };
-    }-*/;
-}
diff --git a/client/src/main/java/org/apache/hupa/client/mvp/MainView.java b/client/src/main/java/org/apache/hupa/client/mvp/MainView.java
deleted file mode 100644
index a9c8066..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/MainView.java
+++ /dev/null
@@ -1,761 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.client.mvp;

-

-import java.util.ArrayList;

-import java.util.List;

-

-import net.customware.gwt.presenter.client.EventBus;

-

-import org.apache.hupa.client.HupaCSS;

-import org.apache.hupa.client.HupaConstants;

-import org.apache.hupa.client.HupaMessages;

-import org.apache.hupa.client.bundles.IMAPTreeImages;

-import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;

-import org.apache.hupa.client.widgets.ConfirmDialogBox;

-import org.apache.hupa.client.widgets.HasDialog;

-import org.apache.hupa.client.widgets.IMAPTreeItem;

-import org.apache.hupa.shared.data.ImapFolderImpl;

-<<<<<<< HEAD
-import org.apache.hupa.shared.data.Message;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.Message.IMAPFlag;

-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;

-<<<<<<< HEAD
-=======
-import org.apache.hupa.shared.data.User;

-import org.apache.hupa.shared.data.Message.IMAPFlag;

->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.Message.IMAPFlag;

-import org.apache.hupa.shared.data.User;

->>>>>>> constantly changed by manolo
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-=======
-=======
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;

->>>>>>> try to change fetch messages to use RF
-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.Message;

-import org.apache.hupa.shared.domain.User;

->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.events.LoginEvent;

-import org.apache.hupa.shared.events.LoginEventHandler;

-import org.apache.hupa.shared.events.LogoutEvent;

-import org.apache.hupa.shared.events.LogoutEventHandler;

-import org.apache.hupa.shared.events.MoveMessageEvent;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.widgets.event.EditEvent;

-import org.apache.hupa.widgets.event.EditHandler;

-import org.apache.hupa.widgets.ui.EnableHyperlink;

-import org.apache.hupa.widgets.ui.HasEditable;

-import org.apache.hupa.widgets.ui.HasEnable;

-import org.apache.hupa.widgets.ui.Loading;

-import org.apache.hupa.widgets.ui.RndPanel;

-

-import com.allen_sauer.gwt.dnd.client.DragContext;

-import com.allen_sauer.gwt.dnd.client.VetoDragException;

-import com.allen_sauer.gwt.dnd.client.drop.DropController;

-import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;

-import com.google.gwt.core.client.GWT;

-import com.google.gwt.event.dom.client.HasClickHandlers;

-import com.google.gwt.event.logical.shared.HasSelectionHandlers;

-import com.google.gwt.user.client.ui.Composite;

-import com.google.gwt.user.client.ui.DockPanel;

-import com.google.gwt.user.client.ui.HorizontalPanel;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.user.client.ui.Panel;

-<<<<<<< HEAD
-=======
-=======
-import com.google.gwt.user.client.ui.Panel;

->>>>>>> constantly changed by manolo
-import com.google.gwt.user.client.ui.SimplePanel;

->>>>>>> first commit
-=======
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import com.google.gwt.user.client.ui.Tree;

-import com.google.gwt.user.client.ui.TreeItem;

-import com.google.gwt.user.client.ui.VerticalPanel;

-import com.google.gwt.user.client.ui.Widget;

-import com.google.inject.Inject;

-

-/**

- * MainView acts like a container of other widgets which will get displayed after the user successfully logged in

- * 

- *

- */

-public class MainView extends Composite implements MainPresenter.Display {

-

-    private DockPanel dockPanel;

-    private VerticalPanel north;

-    private HupaConstants constants;

-    private RndPanel west;

-    private IMAPTreeImages tImages = GWT.create(IMAPTreeImages.class);

-    private Tree folderTree = new Tree(tImages, true);

-  

-    private Widget centerWidget;

-    private RndPanel center;

-    private IMAPMessageListView mListView;

-    private HupaMessages messages;

-    private VerticalPanel folderPanel = new VerticalPanel();

-<<<<<<< HEAD
-<<<<<<< HEAD
-    private Panel westPanel = new HorizontalPanel();

-=======
-    private SimplePanel panel = new SimplePanel();

->>>>>>> first commit
-=======
-    private Panel westPanel = new HorizontalPanel();

->>>>>>> constantly changed by manolo
-    private HorizontalPanel folderButtonBar = new HorizontalPanel();

-    private EnableHyperlink newFolderButton;

-    private EnableHyperlink renameFolderButton;

-    private EnableHyperlink deleteFolderButton;

-    private ConfirmDialogBox confirmFolderDeleteBox = new ConfirmDialogBox();

-    private Loading loader;

-    private Loading messageLoader = new Loading();

-    private List<DropController> dropControllerList = new ArrayList<DropController>();

-    private EventBus bus;

-    private PagingScrollTableRowDragController controller;

-    protected User user;

-

-    @Inject

-    public MainView(EventBus bus, PagingScrollTableRowDragController controllerProvider, HupaConstants constants, HupaMessages messages) {

-        this.constants = constants;

-        this.messages = messages;

-        this.controller = controllerProvider;

-        this.bus = bus;

-        loader = new Loading(constants.loading());

-        newFolderButton = new EnableHyperlink(constants.newFolder(), "");

-        renameFolderButton = new EnableHyperlink(constants.renameFolder(), "");

-        deleteFolderButton = new EnableHyperlink(constants.deleteFolder(), "");

-        

-        dockPanel = new DockPanel();

-

-        dockPanel.setSpacing(5);

-        dockPanel.setWidth("100%");

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-        // Not used so far

-        // createNorth();

-        // dockPanel.add(north, DockPanel.NORTH);

-        // dockPanel.setCellHorizontalAlignment(north, DockPanel.ALIGN_RIGHT);

-        

-        createWest();

-        dockPanel.add(west, DockPanel.WEST);

-        dockPanel.setCellWidth(west, "160px");

-

-        createCenter();

-        dockPanel.add(center, DockPanel.CENTER);

-=======
-        createNorth();

-=======
-        // Not used so far

-        // createNorth();

-        // dockPanel.add(north, DockPanel.NORTH);

-        // dockPanel.setCellHorizontalAlignment(north, DockPanel.ALIGN_RIGHT);

-        

->>>>>>> constant changed by manolo
-        createWest();

-        dockPanel.add(west, DockPanel.WEST);

-        dockPanel.setCellWidth(west, "160px");

-

-        createCenter();

-        dockPanel.add(center, DockPanel.CENTER);

-<<<<<<< HEAD
-        dockPanel.setCellHorizontalAlignment(north, DockPanel.ALIGN_RIGHT);

->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-        dockPanel.setCellHorizontalAlignment(center, DockPanel.ALIGN_LEFT);

-

-        initWidget(dockPanel);

-    }

-

-    private void createWest() {

-        west = new RndPanel();

-        west.add(folderTree);

-        west.addStyleName(HupaCSS.C_tree_container);

-

-        folderTree.setAnimationEnabled(true);

-        folderPanel.setSpacing(5);

-

-        folderButtonBar.setSpacing(3);

-        folderButtonBar.add(newFolderButton);

-        folderButtonBar.add(renameFolderButton);

-        folderButtonBar.add(deleteFolderButton);

-        folderPanel.add(folderButtonBar);

-        folderPanel.add(folderTree);

-<<<<<<< HEAD
-<<<<<<< HEAD
-        westPanel.add(loader);

-=======
-        panel.add(loader);

->>>>>>> first commit
-=======
-        westPanel.add(loader);

->>>>>>> constantly changed by manolo
-        confirmFolderDeleteBox.setText(messages.confirmDeleteFolder());

-        bus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {

-

-            public void onLogin(LoginEvent event) {

-                user = event.getUser();

-            }

-

-        });

-        bus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {

-

-            public void onLogout(LogoutEvent event) {

-                user = null;

-            }

-

-        });

-<<<<<<< HEAD
-<<<<<<< HEAD
-        west.add(westPanel);

-    }

-

-    @SuppressWarnings("unused")

-=======
-        west.add(panel);

-=======
-        west.add(westPanel);

->>>>>>> constantly changed by manolo
-    }

-

-<<<<<<< HEAD
->>>>>>> first commit
-=======
-    @SuppressWarnings("unused")

->>>>>>> constant changed by manolo
-    private void createNorth() {

-        north = new VerticalPanel();

-        north.setWidth("100%");

-    }

-

-    private void createCenter() {

-        center = new RndPanel();

-        center.setWidth("100%");

-        // FIXME: 

-        if (mListView != null)

-            center.add(mListView);

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#bindTreeItems(java.util.ArrayList)

-     */

-    public void bindTreeItems(List<IMAPTreeItem> treeList) {

-        folderTree.clear();

-        for (DropController dropController : dropControllerList) {

-            controller.unregisterDropController(dropController);

-        }

-

-        for (IMAPTreeItem iTreeItem : treeList) {

-            bindDropController(iTreeItem);

-            folderTree.addItem(iTreeItem);

-

-            if (((ImapFolderImpl) iTreeItem.getUserObject()).getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {

-                folderTree.setSelectedItem(iTreeItem, false);

-            }

-

-        }

-    }

-

-    /**

-     * Bind a IMAPFolderDropController to the given Item and all its childs

-     * 

-     * @param item

-     */

-    private void bindDropController(IMAPTreeItem item) {

-        IMAPFolderDropController dropController = new IMAPFolderDropController(item);

-        controller.registerDropController(dropController);

-        dropControllerList.add(dropController);

-

-        if (item.getChildCount() > 0) {

-            for (int i = 0; i < item.getChildCount(); i++) {

-                bindDropController((IMAPTreeItem) item.getChild(i));

-            }

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getTree()

-     */

-    public HasSelectionHandlers<TreeItem> getTree() {

-        return folderTree;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()

-     */

-    public Widget asWidget() {

-        return this;

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#setLoadingFolders(boolean)

-     */

-    public void setLoadingFolders(boolean load) {

-        if (load) {

-            loader.show();

-<<<<<<< HEAD
-<<<<<<< HEAD
-//            panel.clear();

-            westPanel.add(loader);

-        } else {

-            westPanel.clear();

-            westPanel.add(folderPanel);

-=======
-            panel.clear();

-            panel.add(loader);

-        } else {

-            panel.clear();

-            panel.add(folderPanel);

->>>>>>> first commit
-=======
-//            panel.clear();

-            westPanel.add(loader);

-        } else {

-            westPanel.clear();

-            westPanel.add(folderPanel);

->>>>>>> constantly changed by manolo
-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#setLoadingMessage(boolean)

-     */

-    public void setLoadingMessage(boolean load) {

-        if (load) {

-            messageLoader.show();

-        } else {

-            messageLoader.hide();

-        }

-    }

-

-    /**

-     * Drop controller which handle drop on TreeItems

-     * 

-     * 

-     */

-    private class IMAPFolderDropController extends SimpleDropController {

-        private IMAPTreeItem item;

-

-        public IMAPFolderDropController(IMAPTreeItem item) {

-            super(item.getWidget());

-            this.item = item;

-        }

-

-        /**

-         * Veto the Drop if the folder is the same

-         */

-        @Override

-        public void onPreviewDrop(DragContext context) throws VetoDragException {

-            if (item.equals(folderTree.getSelectedItem())) {

-                throw new VetoDragException();

-            }

-        }

-

-        /**

-         * Set the right unseen count on the folders and fire an event

-         */

-        @Override

-        public void onDrop(DragContext context) {

-            IMAPTreeItem oldTreeItem = (IMAPTreeItem) folderTree.getSelectedItem();

-            Message message = (Message) controller.getDragValue();

-            if (message.getFlags().contains(IMAPFlag.SEEN) == false) {

-                oldTreeItem.decreaseUnseenMessageCount();

-                item.increaseUnseenMessageCount();

-            }

-            bus.fireEvent(new MoveMessageEvent(user, (ImapFolderImpl) oldTreeItem.getUserObject(), (ImapFolderImpl) item.getUserObject(), message));

-        }

-

-        /**

-         * Update the proxy widget to show its valid to drop it

-         * 

-         */

-        @Override

-        public void onEnter(DragContext context) {

-            if (item.equals(folderTree.getSelectedItem()) == false) {

-                controller.getCurrentProxy().setIsValid(true);

-            }

-            super.onEnter(context);

-        }

-

-        /**

-         * Update the proxy widget to show its invalid to drop it

-         */

-        @Override

-        public void onLeave(DragContext context) {

-            controller.getCurrentProxy().setIsValid(false);

-            super.onLeave(context);

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getRenameClick()

-     */

-    public HasClickHandlers getRenameClick() {

-        return renameFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteEnable()

-     */

-    public HasEnable getDeleteEnable() {

-        return deleteFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getNewEnable()

-     */

-    public HasEnable getNewEnable() {

-        return newFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getRenameEnable()

-     */

-    public HasEnable getRenameEnable() {

-        return renameFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteClick()

-     */

-    public HasClickHandlers getDeleteClick() {

-        return deleteFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getNewClick()

-     */

-    public HasClickHandlers getNewClick() {

-        return newFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteConfirmDialog

-     * ()

-     */

-    public HasDialog getDeleteConfirmDialog() {

-        return confirmFolderDeleteBox;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteConfirmClick

-     * ()

-     */

-    public HasClickHandlers getDeleteConfirmClick() {

-        return confirmFolderDeleteBox;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#deleteSelectedFolder

-     * ()

-     */

-    public void deleteSelectedFolder() {

-        folderTree.getSelectedItem().remove();

-

-        // Select the INBOX after delete folder

-        for (int i = 0; i < folderTree.getItemCount(); i++) {

-            IMAPTreeItem item = (IMAPTreeItem) folderTree.getItem(i);

-            if (((ImapFolderImpl) item.getUserObject()).getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {

-                folderTree.setSelectedItem(item, true);

-                break;

-            }

-        }

-

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#createFolder(org

-     * .apache.hupa.client.widgets.EditHandler)

-     */

-    public HasEditable createFolder(EditHandler handler) {

-        final IMAPTreeItem selected = (IMAPTreeItem) folderTree.getSelectedItem();

-        

-        if (selected.isEdit())

-            return null;

-        

-        ImapFolderImpl oldFolder = (ImapFolderImpl) selected.getUserObject();

-

-        // Generate a new folder with a whitespace as name, this is needed as

-        // workaround

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        IMAPFolderProxy folder = (IMAPFolderProxy)new IMAPFolder(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

-=======
-        IMAPFolder folder = new IMAPFolder(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

->>>>>>> first commit
-=======
-        IMAPFolderProxy folder = (IMAPFolderProxy)new IMAPFolder(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        ImapFolder folder = (ImapFolder)new ImapFolderImpl(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        folder.setDelimiter(oldFolder.getDelimiter());

-

-        final IMAPTreeItem newItem = new IMAPTreeItem(folder);

-

-        // add the new item as child

-        folderTree.getSelectedItem().addItem(newItem);

-        newItem.addEditHandler(handler);

-        newItem.addEditHandler(new EditHandler() {

-

-            public void onEditEvent(EditEvent event) {

-                if (event.getEventType().equals(EditEvent.EventType.Cancel)) {

-                    // remove the folder

-                    newItem.remove();

-                    folderTree.setSelectedItem(selected, false);

-                } else if (event.getEventType().equals(EditEvent.EventType.Stop)) {

-                    // add the new item to dnd controller 

-                    bindDropController(newItem);

-                    // Select the parent folder to avoid an issue in gmail, because

-                    // the new folder takes a while until it is available

-                    folderTree.setSelectedItem(selected, false);

-                }

-            }

-

-        });

-        // Expand the parent

-        folderTree.getSelectedItem().setState(true, false);

-

-        // Select the new folder and start editing it

-        folderTree.setSelectedItem(newItem, false);

-        newItem.startEdit();

-

-        // reset the text of the new item (remove the whitespace)

-        newItem.setText("");

-        

-        return newItem;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @seeorg.apache.hupa.client.mvp.IMAPFolderPresenter.Display#

-     * decreaseUnseenMessageCount(org.apache.hupa.shared.data.IMAPFolder, int)

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

-=======
-    public void decreaseUnseenMessageCount(IMAPFolder folder, int amount) {

->>>>>>> first commit
-=======
-    public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void decreaseUnseenMessageCount(ImapFolder folder, int amount) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        int count = folderTree.getItemCount();

-        for (int i = 0; i < count; i++) {

-            IMAPTreeItem item = findTreeItemForFolder((IMAPTreeItem) folderTree.getItem(i), folder);

-            if (item != null) {

-                item.descreaseUnseenMessageCount(amount);

-                break;

-            }

-

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @seeorg.apache.hupa.client.mvp.IMAPFolderPresenter.Display#

-     * increaseUnseenMessageCount(org.apache.hupa.shared.data.IMAPFolder, int)

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

-=======
-    public void increaseUnseenMessageCount(IMAPFolder folder, int amount) {

->>>>>>> first commit
-=======
-    public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void increaseUnseenMessageCount(ImapFolder folder, int amount) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        int count = folderTree.getItemCount();

-        for (int i = 0; i < count; i++) {

-            IMAPTreeItem item = findTreeItemForFolder((IMAPTreeItem) folderTree.getItem(i), folder);

-            if (item != null) {

-                item.increaseUnseenMessageCount(amount);

-                break;

-            }

-

-        }

-    }

-

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, IMAPFolderProxy folder) {

-        if (folder.getFullName().equalsIgnoreCase(((IMAPFolderProxy) item.getUserObject()).getFullName())) {

-=======
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, IMAPFolder folder) {

-        if (folder.getFullName().equalsIgnoreCase(((IMAPFolder) item.getUserObject()).getFullName())) {

->>>>>>> first commit
-=======
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, IMAPFolderProxy folder) {

-        if (folder.getFullName().equalsIgnoreCase(((IMAPFolderProxy) item.getUserObject()).getFullName())) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, ImapFolder folder) {

-        if (folder.getFullName().equalsIgnoreCase(((ImapFolder) item.getUserObject()).getFullName())) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            return item;

-        }

-        for (int i = 0; i < item.getChildCount(); i++) {

-            IMAPTreeItem tItem = findTreeItemForFolder((IMAPTreeItem) item.getChild(i), folder);

-            if (tItem != null) {

-                return tItem;

-            }

-        }

-        return null;

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#updateTreeItem(org.apache.hupa.shared.data.IMAPFolder)

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void updateTreeItem(IMAPFolderProxy folder) {

-=======
-    public void updateTreeItem(IMAPFolder folder) {

->>>>>>> first commit
-=======
-    public void updateTreeItem(IMAPFolderProxy folder) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void updateTreeItem(ImapFolder folder) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        int count = folderTree.getItemCount();

-        for (int i = 0; i < count; i++) {

-            IMAPTreeItem item = findTreeItemForFolder((IMAPTreeItem) folderTree.getItem(i), folder);

-            if (item != null) {

-                item.setUserObject(folder);

-                break;

-            }

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see net.customware.gwt.presenter.client.widget.WidgetContainerDisplay#addWidget(com.google.gwt.user.client.ui.Widget)

-     */

-    public void addWidget(Widget widget) {

-        showWidget(widget);

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see net.customware.gwt.presenter.client.widget.WidgetContainerDisplay#removeWidget(com.google.gwt.user.client.ui.Widget)

-     */

-    public void removeWidget(Widget widget) {

-        centerWidget = null;

-        center.remove(widget); 

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see net.customware.gwt.presenter.client.widget.WidgetContainerDisplay#showWidget(com.google.gwt.user.client.ui.Widget)

-     */

-    public void showWidget(Widget widget) {

-        centerWidget = widget;

-        center.setWidget(centerWidget); 

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.NameAwareDisplay#getName()

-     */

-    public String getName() {

-        return constants.mailTab();

-    }

-}

diff --git a/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java b/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
deleted file mode 100644
index 68bd25d..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
+++ /dev/null
@@ -1,550 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.mvp;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-import gwtupload.client.IUploadStatus.Status;
-import gwtupload.client.IUploader;
-=======
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.inject.Inject;
-
-import gwtupload.client.IUploader;
-import gwtupload.client.IUploadStatus.Status;
->>>>>>> first commit
-=======
-import gwtupload.client.IUploadStatus.Status;
-import gwtupload.client.IUploader;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import gwtupload.client.IUploader.OnCancelUploaderHandler;
-import gwtupload.client.IUploader.OnFinishUploaderHandler;
-import gwtupload.client.IUploader.OnStatusChangedHandler;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-import java.util.ArrayList;
-import java.util.List;
-
-=======
->>>>>>> first commit
-=======
-import java.util.ArrayList;
-import java.util.List;
-
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import net.customware.gwt.dispatch.client.DispatchAsync;
-import net.customware.gwt.dispatch.shared.Action;
-import net.customware.gwt.presenter.client.EventBus;
-import net.customware.gwt.presenter.client.widget.WidgetDisplay;
-import net.customware.gwt.presenter.client.widget.WidgetPresenter;
-
-import org.apache.hupa.client.HupaCallback;
-import org.apache.hupa.client.validation.EmailListValidator;
-import org.apache.hupa.shared.SConsts;
-import org.apache.hupa.shared.Util;
-import org.apache.hupa.shared.data.MessageAttachmentImpl;
-import org.apache.hupa.shared.data.SmtpMessageImpl;
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageAttachment;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.SmtpMessage;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.BackEvent;
-import org.apache.hupa.shared.events.ContactsUpdatedEvent;
-import org.apache.hupa.shared.events.ContactsUpdatedEventHandler;
-import org.apache.hupa.shared.events.FlashEvent;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-import org.apache.hupa.shared.events.SentMessageEvent;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import org.apache.hupa.shared.rpc.ForwardMessage;
-import org.apache.hupa.shared.rpc.GenericResult;
-import org.apache.hupa.shared.rpc.ReplyMessage;
-import org.apache.hupa.shared.rpc.SendMessage;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.widgets.ui.HasEnable;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.inject.Inject;
-=======
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
-import org.apache.hupa.widgets.ui.HasEnable;
-
-import java.util.ArrayList;
-import java.util.List;
->>>>>>> first commit
-=======
-import org.apache.hupa.widgets.ui.HasEnable;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.inject.Inject;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-
-/**
- * Presenter which handles the sending, reply, replay-all, forward of mails
- * 
- */
-public class MessageSendPresenter extends WidgetPresenter<MessageSendPresenter.Display> {
-
-    private DispatchAsync dispatcher;
-    private ArrayList<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
-    private Type type = Type.NEW;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-=======
-    private IMAPFolder folder;
->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private Message oldmessage;
-    
-    protected SmtpMessage message = null;
-    
-    private MessageDetails oldDetails;
-
-    private OnFinishUploaderHandler onFinishUploadHandler = new OnFinishUploaderHandler() {
-        public void onFinish(IUploader uploader) {
-            if (uploader.getStatus() == Status.SUCCESS) {
-                String name = uploader.getInputName();
-                MessageAttachment attachment = new MessageAttachmentImpl();
-                attachment.setName(name);
-                attachments.add(attachment);
-                display.getSendEnable().setEnabled(true);
-            }
-        }
-    };
-
-    private OnStatusChangedHandler onStatusChangedHandler = new OnStatusChangedHandler() {
-        public void onStatusChanged(IUploader uploader) {
-            Status stat = display.getUploader().getStatus();
-            if (stat == Status.INPROGRESS)
-                display.getSendEnable().setEnabled(false);
-            else
-                display.getSendEnable().setEnabled(true);
-        }
-    };
-
-    private OnCancelUploaderHandler onCancelUploadHandler = new OnCancelUploaderHandler() {
-        public void onCancel(IUploader uploader) {
-            for (MessageAttachment attachment : attachments) {
-                if (attachment.getName().equals(uploader.getInputName()))
-                    attachments.remove(attachment);
-            }
-        }
-    };
-    
-    @Inject
-    public MessageSendPresenter(Display display, EventBus eventBus, DispatchAsync dispatcher) {
-        super(display, eventBus);
-        this.display = display;
-        this.dispatcher = dispatcher;
-    }
-    
-    public Display display;
-
-    /**
-     * The Type for which the SendPresenter will get used
-     */
-    public enum Type {
-        NEW, REPLY, REPLY_ALL, FORWARD
-    }
-
-    public interface Display extends WidgetDisplay {
-        public HasText getFromText();
-
-        public HasText getToText();
-
-        public HasText getCcText();
-
-        public HasText getBccText();
-
-        public HasText getSubjectText();
-
-        public HasHTML getMessageHTML();
-        
-        public Focusable getEditorFocus();
-
-        public HasClickHandlers getSendClick();
-
-        public HasEnable getSendEnable();
-
-        public IUploader getUploader();
-
-        public HasClickHandlers getBackButtonClick();
-        
-        public void refresh();
-
-        public void setLoading(boolean loading);
-        
-        public void fillContactList(Contact[] contacts);
-        
-        public boolean validate();
-    }
-
-    @Override
-    protected void onBind() {
-        registerHandler(eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-            public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-                reset();
-            }
-        }));
-        registerHandler(eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-            public void onFolderSelectionEvent(FolderSelectionEvent event) {
-                reset();
-            }
-        }));
-        registerHandler(eventBus.addHandler(ContactsUpdatedEvent.TYPE, new ContactsUpdatedEventHandler() {
-            public void onContactsUpdated(ContactsUpdatedEvent event) {
-                display.fillContactList(event.getContacts());
-            }
-        }));        
-        registerHandler(display.getSendClick().addClickHandler(sendClickHandler));
-        registerHandler(display.getBackButtonClick().addClickHandler(new ClickHandler() {
-            public void onClick(ClickEvent event) {
-                eventBus.fireEvent(new BackEvent());
-            }
-        }));
-
-        display.getUploader().addOnStatusChangedHandler(onStatusChangedHandler);
-        display.getUploader().addOnFinishUploadHandler(onFinishUploadHandler);
-        display.getUploader().addOnCancelUploadHandler(onCancelUploadHandler);
-
-        reset();
-    }
-    
-    protected ClickHandler sendClickHandler = new ClickHandler() {
-        public void onClick(ClickEvent event) {
-            if (validate()) {
-                message = new SmtpMessageImpl();
-                message.setFrom(display.getFromText().getText());
-                message.setSubject(display.getSubjectText().getText());
-                message.setText(display.getMessageHTML().getHTML());
-                message.setMessageAttachments(attachments);
-                message.setTo(emailTextToArray(display.getToText().getText()));
-                message.setCc(emailTextToArray(display.getCcText().getText()));
-                message.setBcc(emailTextToArray(display.getBccText().getText()));
-
-                SendMessage command;
-                if (type == Type.NEW) {
-                    command = new SendMessage(message);
-                } else if (type == Type.FORWARD) {
-                    command = addMessageIds(new ForwardMessage(message, folder, oldDetails.getUid()));
-                } else {
-                    command = addMessageIds(new ReplyMessage(message, folder, oldDetails.getUid()));
-                }
-                dispatchMessage(dispatcher, eventBus, command);
-            }
-        }
-
-        private ForwardMessage addMessageIds(ForwardMessage msg) {
-            String msgId = oldDetails.getMessageId();
-            msg.setInReplyTo(msgId);
-            
-            if (msgId != null) {
-                String oldRefs = oldDetails.getReferences();
-                if (oldRefs != null) {
-                    msg.setReferences(msgId.trim() + SConsts.HEADER_REFERENCES_SEPARATOR + oldRefs);
-                } else {
-                    msg.setReferences(msgId.trim());
-                }
-            }
-            return msg;
-        }
-        
-    };
-
-    protected ArrayList<String> emailTextToArray(String emails) {
-        ArrayList<String> cc = new ArrayList<String>();
-        for (String ccRaw : emails.split("[,;]+")) {
-            String ccRecip = ccRaw.trim();
-            if (ccRecip.length() > 0) {
-                cc.add(ccRaw.trim());
-            }
-        }
-        return cc;
-    }
-    
-    // Although dispatcher and eventBus parameters are not necessary, they are needed for testability
-    protected void dispatchMessage(DispatchAsync dispatcher, final EventBus eventBus, Action<GenericResult> command) {
-        display.setLoading(true);
-        dispatcher.execute(command, new HupaCallback<GenericResult>(dispatcher, eventBus) {
-            public void callback(GenericResult result) {
-                if (result.isSuccess()) {
-                    eventBus.fireEvent(new SentMessageEvent());
-                    reset();
-                } else {
-                    eventBus.fireEvent(new FlashEvent(result.getMessage(), 6000));
-                }
-                display.setLoading(false);
-            }
-        });
-    }
-
-    /**
-     * Reset everything
-     */
-    private void reset() {
-        display.getUploader().reset();
-        display.getBccText().setText("");
-        display.getCcText().setText("");
-        display.getToText().setText("");
-        display.getSubjectText().setText("");
-        attachments.clear();
-        folder = null;
-        oldmessage = null;
-        type = Type.NEW;
-    }
-
-    @Override
-    protected void onUnbind() {
-        // cancel the current upload when unbinding
-        display.getUploader().cancel();
-    }
-
-    /**
-     * Bind the given values to this presenter
-     * 
-     * @param user
-     *            the user
-     * @param folder
-     *            the currently selected folder
-     * @param oldmessage
-     *            the oldmessage ( if there is any)
-     * @param oldDetails
-     *            the olddetails ( if there are any)
-     * @param type
-     *            the type
-     */
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
-=======
-    public void revealDisplay(User user, IMAPFolder folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
->>>>>>> first commit
-=======
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails, String mailto, Type type) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.reset();
-        this.oldmessage = oldmessage;
-        this.oldDetails = oldDetails;
-        this.folder = folder;
-        this.type = type;
-
-        // Depending on the type, we have to automatically fill the view inputs
-        display.getFromText().setText(user.getName());
-        display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails, type));
-        if (type.equals(Type.NEW) && mailto != null) {
-                display.getToText().setText(mailto);
-        } else if (type.equals(Type.FORWARD)) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-        	String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-        	if (!subject.toLowerCase().startsWith("fwd:")){
-        		subject = "Fwd: " + subject;
-        	}
-        	display.getSubjectText().setText(subject);
-<<<<<<< HEAD
-        } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-        	String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-        	if (!subject.toLowerCase().startsWith("re:")){
-        		subject = "Re: " + subject;
-        	}
-        	display.getSubjectText().setText(subject);
-=======
-            if (oldmessage.getSubject() != null && !oldmessage.getSubject().toLowerCase().startsWith("fwd:")) {
-                display.getSubjectText().setText("Fwd: " + oldmessage.getSubject());
-            }
-        } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-            if (oldmessage.getSubject() != null && !oldmessage.getSubject().toLowerCase().startsWith("re:")) {
-                display.getSubjectText().setText("Re: " + oldmessage.getSubject());
-            }
->>>>>>> first commit
-=======
-        } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-        	String subject = oldmessage.getSubject() != null ? oldmessage.getSubject().trim() : "";
-        	if (!subject.toLowerCase().startsWith("re:")){
-        		subject = "Re: " + subject;
-        	}
-        	display.getSubjectText().setText(subject);
->>>>>>> constantly changed by manolo
-            if (type.equals(Type.REPLY)) { 
-                if (oldmessage.getReplyto() != null && !oldmessage.getFrom().contains(oldmessage.getReplyto())) {
-                    display.getToText().setText(oldmessage.getReplyto());
-                } else {
-                    display.getToText().setText(oldmessage.getFrom());
-                }
-            } else {
-                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.getCcText().setText(Util.listToString(list));
-                if (oldmessage.getTo() != null) {
-                    oldmessage.getTo().remove(user.getName());
-                }
-                display.getToText().setText(oldmessage.getFrom());
-            }
-        } 
-        display.refresh();
-        firePresenterChangedEvent();
-        revealDisplay();
-        display.getEditorFocus().setFocus(true);
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, Type type) {
-=======
-    public void revealDisplay(User user, IMAPFolder folder, Message oldmessage, MessageDetails oldDetails, Type type) {
->>>>>>> first commit
-=======
-    public void revealDisplay(User user, IMAPFolderProxy folder, Message oldmessage, MessageDetails oldDetails, Type type) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void revealDisplay(User user, ImapFolder folder, Message oldmessage, MessageDetails oldDetails, Type type) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.revealDisplay(user, folder, oldmessage, oldDetails, null, type);
-    }
-
-    public void revealDisplay(User user, String mailto) {
-        revealDisplay(user, null, null, null, mailto, Type.NEW);
-    }
-
-    /**
-     * Bind the given user to the presenter
-     * 
-     * @param user
-     */
-    public void revealDisplay(User user) {
-        revealDisplay(user, null, null, null, null, Type.NEW);
-    }
-
-    @Override
-    protected void onRevealDisplay() {
-    }
-    
-    private static String generateHeader(Message message, Type type) {
-        String ret = "<br>";
-        if (message != null) {
-            if (type.equals(Type.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(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-                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, Type 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 boolean validate() {
-        // Don't trust only in view validation
-        return  display.validate() 
-                && display.getToText().getText().trim().length() > 0  
-                && EmailListValidator.isValidAddressList(display.getToText().getText()) 
-                && EmailListValidator.isValidAddressList(display.getCcText().getText()) 
-                && EmailListValidator.isValidAddressList(display.getBccText().getText());
-    }
-    
-    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;
-    }
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java b/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
deleted file mode 100644
index c02bee6..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.mvp;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-
-import eu.maydu.gwt.validation.client.DefaultValidationProcessor;
-import eu.maydu.gwt.validation.client.ValidationProcessor;
-import eu.maydu.gwt.validation.client.i18n.ValidationMessages;
-import gwtupload.client.IFileInput.FileInputType;
-import gwtupload.client.BaseUploadStatus;
-import gwtupload.client.IUploadStatus;
-import gwtupload.client.IUploader;
-import gwtupload.client.MultiUploader;
-
-import org.apache.hupa.client.HupaCSS;
-import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.HupaMessages;
-import org.apache.hupa.client.validation.AddStyleAction;
-import org.apache.hupa.client.validation.EmailListValidator;
-import org.apache.hupa.client.validation.NotEmptyValidator;
-import org.apache.hupa.client.validation.SetFocusAction;
-import org.apache.hupa.client.widgets.CommandsBar;
-import org.apache.hupa.client.widgets.EnableButton;
-import org.apache.hupa.client.widgets.MessageHeaders;
-import org.apache.hupa.shared.SConsts;
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
-import org.apache.hupa.widgets.editor.Editor;
-import org.apache.hupa.widgets.ui.EnableHyperlink;
-import org.apache.hupa.widgets.ui.HasEnable;
-import org.apache.hupa.widgets.ui.Loading;
-import org.apache.hupa.widgets.ui.MultiValueSuggestArea;
-
-/**
- * View which displays a form which handle sending of mails
- * 
- *
- */
-public class MessageSendView extends Composite implements MessageSendPresenter.Display {
-
-    final VerticalPanel sendContainer = new VerticalPanel();
-    
-    private MessageHeaders headers;
-    
-    private Editor editor;
-    private CommandsBar buttonsBar = new CommandsBar();
-
-    private Label from = new Label();
-    
-    private MultiValueSuggestArea to = new MultiValueSuggestArea(" ,@<>");
-    // we only need one instance for all suggestion-boxes
-    private MultiValueSuggestArea cc = new MultiValueSuggestArea(to.getOracle());
-    private MultiValueSuggestArea bcc = new MultiValueSuggestArea(to.getOracle());
-    
-    private TextBox subject = new TextBox();
-    private MultiUploader uploader = null;
-    
-    private EnableButton sendButton;
-    private EnableHyperlink backButton;
-    private Loading loading;
-    
-    private ValidationProcessor validator;
-
-    @Inject
-    public MessageSendView(HupaConstants constants, HupaMessages messages) {
-        
-        sendButton = new EnableButton(constants.sendButton());
-        backButton = new EnableHyperlink(constants.backButton(),"");
-        headers = new MessageHeaders(constants);
-        loading = new Loading(constants.loading());
-        editor = new Editor(constants);
-        
-        BaseUploadStatus uploadStatus = new BaseUploadStatus();
-        uploadStatus.setCancelConfiguration(IUploadStatus.GMAIL_CANCEL_CFG);
-        uploader = new MultiUploader(FileInputType.ANCHOR, uploadStatus);
-        uploader.setServletPath(GWT.getModuleBaseURL() + SConsts.SERVLET_UPLOAD);
-        uploader.avoidRepeatFiles(true);
-        uploader.setI18Constants(constants);        
-        
-        sendContainer.addStyleName(HupaCSS.C_msgsend_container);
-        
-        buttonsBar.add(sendButton);
-        buttonsBar.add(loading);
-        buttonsBar.add(backButton);
-        
-        sendContainer.add(headers);
-        sendContainer.add(buttonsBar);
-
-        sendContainer.add(editor);
-
-        loading.hide();
-
-        initWidget(sendContainer);
-        
-        SetFocusAction fAction = new SetFocusAction();
-        AddStyleAction sAction = new AddStyleAction(HupaCSS.C_validate, 3000);
-        validator = new DefaultValidationProcessor(new ValidationMessages(messages));
-        validator.addValidators("cc", 
-                new EmailListValidator(getCcText()).addActionForFailure(sAction).addActionForFailure(fAction));
-        validator.addValidators("bcc", 
-                new EmailListValidator(getBccText()).addActionForFailure(sAction).addActionForFailure(fAction));
-        validator.addValidators("to", 
-                new EmailListValidator(getToText()).addActionForFailure(sAction).addActionForFailure(fAction),
-                new NotEmptyValidator(getToText()).addActionForFailure(sAction).addActionForFailure(fAction));
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-        try {
-        } catch (Exception e) {
-        }
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
-     */
-    public Widget asWidget() {
-        return this;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#setLoading(boolean)
-     */ 
-    public void setLoading(boolean load) {
-        if (load) {
-            loading.show();
-            sendButton.setEnabled(false);
-            backButton.setEnabled(false);
-        } else {
-            loading.hide();
-            sendButton.setEnabled(true);
-            backButton.setEnabled(true);
-        }
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getBccText()
-     */
-    public HasText getBccText() {
-        return bcc;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getCcText()
-     */
-    public HasText getCcText() {
-        return cc;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getFromText()
-     */
-    public HasText getFromText() {
-        return from;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getMessageText()
-     */
-    public HasText getMessageText() {
-        return editor;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getSubjectText()
-     */
-    public HasText getSubjectText() {
-        return subject;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getToText()
-     */
-    public HasText getToText() {
-        return to;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getSendClick()
-     */
-    public HasClickHandlers getSendClick() {
-        return sendButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getUploader()
-     */
-    public IUploader getUploader() {
-        return uploader;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getSendEnable()
-     */
-    public HasEnable getSendEnable() {
-        return sendButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getBackButtonClick()
-     */
-    public HasClickHandlers getBackButtonClick() {
-        return backButton;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getMessageHTML()
-     */
-    public HasHTML getMessageHTML() {
-        return editor;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getEditorFocus()
-     */
-    public Focusable getEditorFocus() {
-        return editor;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#refresh()
-     */
-    public void refresh() {
-        if (to.getText().length() == 0)
-            to.setText(" ");
-        headers.setValues(from, to, cc, bcc, subject, uploader);
-    }
-    
-    public void fillContactList(Contact[] contacts){
-        to.fillOracle(contacts);
-    }
-
-    public boolean validate() {
-        return validator.validate();
-    }
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/mvp/MessageTableModel.java b/client/src/main/java/org/apache/hupa/client/mvp/MessageTableModel.java
deleted file mode 100644
index 62fe04c..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/MessageTableModel.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-package org.apache.hupa.client.mvp;

-

-import java.util.ArrayList;

-import java.util.Iterator;

-

-import net.customware.gwt.dispatch.client.DispatchAsync;

-import net.customware.gwt.presenter.client.EventBus;

-

-import org.apache.hupa.client.HupaCallback;

-import org.apache.hupa.shared.data.ImapFolderImpl;

-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.Message;

-import org.apache.hupa.shared.domain.User;

-import org.apache.hupa.shared.events.FolderSelectionEvent;

-import org.apache.hupa.shared.events.FolderSelectionEventHandler;

-import org.apache.hupa.shared.events.LoadMessagesEvent;

-import org.apache.hupa.shared.events.LoadMessagesEventHandler;

-import org.apache.hupa.shared.events.LoginEvent;

-import org.apache.hupa.shared.events.LoginEventHandler;

-import org.apache.hupa.shared.events.LogoutEvent;

-import org.apache.hupa.shared.events.LogoutEventHandler;

-import org.apache.hupa.shared.events.MessagesReceivedEvent;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.FetchMessages;

-import org.apache.hupa.shared.rpc.FetchMessagesResult;

-

-import com.google.gwt.gen2.table.client.MutableTableModel;

-import com.google.gwt.gen2.table.client.TableModelHelper;

-import com.google.gwt.gen2.table.client.TableModelHelper.Request;

-import com.google.inject.Inject;

-

-/**

- * TableModel which retrieve the messages for the user

- *

- */

-public class MessageTableModel extends MutableTableModel<Message> {

-

-    private EventBus eventBus;

-    private DispatchAsync dispatcher;

-    private User user;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;

-=======
-    private IMAPFolder folder;

->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private String searchValue;

-

-    @Inject

-    public MessageTableModel(EventBus eventBus, DispatchAsync dispatcher){

-        

-        this.eventBus = eventBus;

-        this.dispatcher = dispatcher;

-

-        // bind some Events 

-        eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {

-            

-            public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {

-                user = loadMessagesEvent.getUser();

-                folder = loadMessagesEvent.getFolder();

-                searchValue = loadMessagesEvent.getSearchValue();

-            }

-        });

-        eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {

-            

-            public void onFolderSelectionEvent(FolderSelectionEvent event) {

-                user = event.getUser();

-                folder = event.getFolder();

-                searchValue = null;

-            }

-        });

-        eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {

-            

-            public void onLogin(LoginEvent event) {

-                user = event.getUser();

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());

-=======
-                folder = new IMAPFolder(user.getSettings().getInboxFolderName());

->>>>>>> first commit
-=======
-                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-                folder = (ImapFolder)new ImapFolderImpl(user.getSettings().getInboxFolderName());

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                searchValue = null;

-            }

-        });

-        eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {

-            

-            public void onLogout(LogoutEvent logoutEvent) {

-                user = null;

-                folder = null;

-                searchValue = null;

-            }

-        });

-        

-        

-    }

-

-    @Override 

-    public void requestRows(

-            final Request request,

-            final com.google.gwt.gen2.table.client.TableModel.Callback<Message> callback) {

-        

-        // if the given user or folder is null, its safe to return an empty list

-        if (user == null || folder == null) {

-            callback.onRowsReady(request, new TableModelHelper.Response<Message>() {

-

-                @Override

-                public Iterator<Message> getRowValues() {

-                    return new ArrayList<Message>().iterator();

-                }

-                

-            });

-        }

-        

-        dispatcher.execute(new FetchMessages(folder, request.getStartRow(), request.getNumRows(), searchValue),new HupaCallback<FetchMessagesResult>(dispatcher, eventBus) {

-            public void callback(final FetchMessagesResult result) {

-                // Update folder information before notifying presenter

-                folder.setMessageCount(result.getRealCount());

-                folder.setUnseenMessageCount(result.getRealUnreadCount());

-<<<<<<< HEAD
-<<<<<<< HEAD
-                

-                setRowCount(result.getRealCount());

-                callback.onRowsReady(request, new TableModelHelper.Response<Message>() {

-=======
-                // Notify presenter to update folder tree view

-                eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages()));

-                TableModelHelper.Response<Message> response = new TableModelHelper.Response<Message>() {

->>>>>>> first commit
-=======
-                

-                setRowCount(result.getRealCount());

-                callback.onRowsReady(request, new TableModelHelper.Response<Message>() {

->>>>>>> constantly changed by manolo
-                    @Override

-                    public Iterator<Message> getRowValues() {

-                        if (result != null && result.getMessages() != null) {

-                            return result.getMessages().iterator();

-                        } else {

-                            return new ArrayList<Message>().iterator();

-                        }

-                    }

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-                });

-                

-                // Notify presenter to update folder tree view

-                eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages()));

-<<<<<<< HEAD
-=======
-                };

-                setRowCount(result.getRealCount());

-                callback.onRowsReady(request,response);

->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-            }

-        }); 

-    }

-

-    @Override

-    protected boolean onRowInserted(int beforeRow) {

-        return true;

-    }

-

-    @Override

-    protected boolean onRowRemoved(int row) {    

-        return true;

-    }

-

-    @Override

-    protected boolean onSetRowValue(int row, Message rowValue) {

-        return true;

-    }

-}

diff --git a/client/src/main/java/org/apache/hupa/client/mvp/place/IMAPMessageListPresenterPlace.java b/client/src/main/java/org/apache/hupa/client/mvp/place/IMAPMessageListPresenterPlace.java
deleted file mode 100644
index c20f091..0000000
--- a/client/src/main/java/org/apache/hupa/client/mvp/place/IMAPMessageListPresenterPlace.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.hupa.client.mvp.place;
-
-
-import org.apache.hupa.client.mvp.IMAPMessageListPresenter;
-
-import com.google.gwt.core.client.GWT;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-import net.customware.gwt.presenter.client.gin.ProvidedPresenterPlace;
-import net.customware.gwt.presenter.client.place.PlaceRequest;
-
-public class IMAPMessageListPresenterPlace extends ProvidedPresenterPlace<IMAPMessageListPresenter>{
-
-    private final static String ROWS_PER_PAGE_INDEX = "rowsPerPageIndex";
-    private final static String PAGE = "page";
-    private final static String SEARCH = "search";
-
-    @Inject
-    public IMAPMessageListPresenterPlace(Provider<IMAPMessageListPresenter> presenter) {
-        super(presenter);
-    }
-
-    @Override
-    public String getName() {
-        return "MessageList";
-    }
-
-    @Override
-    protected void preparePresenter(PlaceRequest request, IMAPMessageListPresenter presenter) {
-        int page = 0;
-        try {
-            page = Integer.parseInt(request.getParameter(PAGE, "0"));
-            if (page < 0 ) {
-                page = 0;
-            }
-        } catch (NumberFormatException e) {
-            // ignore
-        }
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-        presenter.getDisplay().goToPage(page);
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-        
-        int rowsPerPageIndex = 0;
-        try {
-            rowsPerPageIndex = Integer.parseInt(request.getParameter(ROWS_PER_PAGE_INDEX, "0"));
-            if (rowsPerPageIndex < 0) {
-                rowsPerPageIndex = 0;
-            }
-        } catch (NumberFormatException e) {
-            // ignore
-        }
-
-        String searchValue = request.getParameter(SEARCH, "");
-        presenter.getDisplay().getSearchValue().setValue(searchValue);
-        
-<<<<<<< HEAD
-<<<<<<< HEAD
-        presenter.getDisplay().goToPage(page);
-        
-        GWT.log("PRES="+request.toString(),null);
-=======
-        GWT.log("PRES="+request.toString(),null);
-
->>>>>>> first commit
-=======
-        presenter.getDisplay().goToPage(page);
-        
-        GWT.log("PRES="+request.toString(),null);
->>>>>>> constantly changed by manolo
-    }
-
-    @Override
-    protected PlaceRequest prepareRequest(PlaceRequest request, IMAPMessageListPresenter presenter) {
-        request = request.with(PAGE, presenter.getDisplay().getCurrentPage() +"");
-        request = request.with(ROWS_PER_PAGE_INDEX, presenter.getDisplay().getRowsPerPageIndex() + "");
-      
-        String searchValue = presenter.getDisplay().getSearchValue().getValue();
-        if (searchValue != null && searchValue.length() > 0) {
-            request = request.with(SEARCH, searchValue);
-
-        }
-        
-        GWT.log("REQ="+request.toString(),null);
-
-        return request;
-    }
-    
-    
-}
diff --git a/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java b/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java
deleted file mode 100644
index bed5ebf..0000000
--- a/client/src/main/java/org/apache/hupa/client/place/MessageSendPlace.java
+++ /dev/null
@@ -1,280 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-<<<<<<< HEAD
-package org.apache.hupa.client.place;
-
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-<<<<<<< HEAD
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.User;
-
-=======
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-package org.apache.hupa.client.place;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> 
-=======
-=======
->>>>>>> 1. improve the inbox folder place.
-import org.apache.hupa.client.activity.MessageSendActivity.Type;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.MessageDetails;
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-
->>>>>>> 1. improve the inbox folder place.
-=======
-package org.apache.hupa.client.place;
-
->>>>>>> 
-=======
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-=======
->>>>>>> try to get message details, problem is:
-=======
->>>>>>> commit frequently based on (http://t.cn/zjxJ71X), there should be more robust and user-friendly features to develop.
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-
->>>>>>> 1. improve the inbox folder place.
-import com.google.gwt.place.shared.Place;
-import com.google.gwt.place.shared.PlaceTokenizer;
-import com.google.gwt.place.shared.Prefix;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-public class MessageSendPlace extends AbstractPlace {
-
-	
-	private User user ;
-	private ImapFolder folder;
-	private Message message;
-	private MessageDetails messageDetails;
-	private Type forward;
-	
-	
-	@Prefix("send")
-	public static class Tokenizer implements PlaceTokenizer<MessageSendPlace> {
-
-		@Override
-		public MessageSendPlace getPlace(String token) {
-			return new MessageSendPlace();
-		}
-
-		@Override
-		public String getToken(MessageSendPlace place) {
-			return place.getForward().toString();
-		}
-	}
-
-	public Place with(User user, ImapFolder folder, Message message, MessageDetails messageDetails, Type forward) {
-		this.forward = forward;
-		this.user = user;
-		this.folder = folder;
-		this.message = message;
-		this.messageDetails = messageDetails;
-		return this;
-	}
-
-	public User getUser() {
-		return user;
-	}
-
-	public ImapFolder getFolder() {
-		return folder;
-	}
-
-	public Message getMessage() {
-		return message;
-	}
-
-	public MessageDetails getMessageDetails() {
-		return messageDetails;
-	}
-
-	public Type getForward() {
-		return forward;
-	}
-	
-	
-
-	
-	
-=======
-public class MessageSendPlace extends Place {
-
-	
-	private User user ;
-	private IMAPFolderProxy folder;
-	private Message message;
-	private MessageDetails messageDetails;
-	private Type forward;
-	
-	
-	@Prefix("send")
-	public static class Tokenizer implements PlaceTokenizer<MessageSendPlace> {
-
-		@Override
-		public MessageSendPlace getPlace(String token) {
-			return new MessageSendPlace();
-		}
-
-		@Override
-		public String getToken(MessageSendPlace place) {
-			return place.getForward().toString();
-		}
-	}
-
-	public String toString() {
-		return this.getClass().getName() + "->[MessageSend]";
-	}
-
-	public Place with(User user, IMAPFolderProxy folder, Message message, MessageDetails messageDetails, Type forward) {
-		this.forward = forward;
-		this.user = user;
-		this.folder = folder;
-		this.message = message;
-		this.messageDetails = messageDetails;
-		return this;
-	}
-
-	public User getUser() {
-		return user;
-	}
-
-	public IMAPFolderProxy getFolder() {
-		return folder;
-	}
-
-	public Message getMessage() {
-		return message;
-	}
-
-	public MessageDetails getMessageDetails() {
-		return messageDetails;
-	}
-
-	public Type getForward() {
-		return forward;
-	}
-	
-	
-
-<<<<<<< HEAD
->>>>>>> 
-=======
-	
-	
->>>>>>> 1. improve the inbox folder place.
-=======
-public class MessageSendPlace extends Place {
-=======
-public class MessageSendPlace extends AbstractPlace {
->>>>>>> remove some warnings and create the AbstractPlace that can give place infomation
-
-	
-	private User user ;
-	private ImapFolder folder;
-	private Message message;
-	private MessageDetails messageDetails;
-	private Type forward;
-	
-	
-	@Prefix("send")
-	public static class Tokenizer implements PlaceTokenizer<MessageSendPlace> {
-
-		@Override
-		public MessageSendPlace getPlace(String token) {
-			return new MessageSendPlace();
-		}
-
-		@Override
-		public String getToken(MessageSendPlace place) {
-			return place.getForward().toString();
-		}
-	}
-
-	public Place with(User user, ImapFolder folder, Message message, MessageDetails messageDetails, Type forward) {
-		this.forward = forward;
-		this.user = user;
-		this.folder = folder;
-		this.message = message;
-		this.messageDetails = messageDetails;
-		return this;
-	}
-
-	public User getUser() {
-		return user;
-	}
-
-	public ImapFolder getFolder() {
-		return folder;
-	}
-
-	public Message getMessage() {
-		return message;
-	}
-
-	public MessageDetails getMessageDetails() {
-		return messageDetails;
-	}
-
-	public Type getForward() {
-		return forward;
-	}
-	
-	
-
-<<<<<<< HEAD
->>>>>>> 
-=======
-	
-	
->>>>>>> 1. improve the inbox folder place.
-}
diff --git a/client/src/main/java/org/apache/hupa/client/rf/IMAPFolderProxy.java b/client/src/main/java/org/apache/hupa/client/rf/IMAPFolderProxy.java
deleted file mode 100644
index 7b959a2..0000000
--- a/client/src/main/java/org/apache/hupa/client/rf/IMAPFolderProxy.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.apache.hupa.client.rf;
-
-import java.util.List;
-
-import org.apache.hupa.shared.data.IMAPFolder;
-
-import com.google.web.bindery.requestfactory.shared.EntityProxy;
-import com.google.web.bindery.requestfactory.shared.ProxyFor;
-
-@ProxyFor(IMAPFolder.class)
-public interface IMAPFolderProxy extends EntityProxy {
-//	List<IMAPFolder> requestFolders();
-	Long getId();
-	Long getVersion();
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/AppLayout.java b/client/src/main/java/org/apache/hupa/client/ui/AppLayout.java
deleted file mode 100644
index 5b6b7bf..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/AppLayout.java
+++ /dev/null
@@ -1,95 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.ui;
-
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.DockLayoutPanel;
-<<<<<<< HEAD
-
-public interface AppLayout {
-	DockLayoutPanel getAppLayoutPanel();
-	AcceptsOneWidget getNorthContainer();
-	AcceptsOneWidget getWestContainer();
-	AcceptsOneWidget getCenterContainer();
-	void setLoginLayout();
-	void setDefaultLayout();
-=======
-package org.apache.hupa.client.ui;
-=======
-package org.apache.hupa.client.ui;
-
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-
-=======
->>>>>>> introduce the top activity
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.LayoutPanel;
-
-public interface AppLayout {
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> Change to new mvp framework - first step
-
-  LayoutPanel getMainLayoutPanel();
-
-  AcceptsOneWidget getWestContainer();
-
-  AcceptsOneWidget getMainContainer();
-
-  void setLoginLayout();
-
-  void setDefaultLayout();
-
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
-=======
->>>>>>> introduce the top activity
-	LayoutPanel getMainLayoutPanel();
-=======
-
-public interface AppLayout {
-<<<<<<< HEAD
-	DockLayoutPanel getMainLayoutPanel();
->>>>>>> use DockLayoutPanel as the App Layout
-	AcceptsOneWidget getTopContainer();
-=======
-	DockLayoutPanel getAppLayoutPanel();
-	AcceptsOneWidget getNorthContainer();
->>>>>>> use DataGrid instead of CellTable to list messages.
-	AcceptsOneWidget getWestContainer();
-	AcceptsOneWidget getCenterContainer();
-	void setLoginLayout();
-	void setDefaultLayout();
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> introduce the top activity
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/AppLayoutImpl.java b/client/src/main/java/org/apache/hupa/client/ui/AppLayoutImpl.java
deleted file mode 100644
index 29b3d81..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/AppLayoutImpl.java
+++ /dev/null
@@ -1,449 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-<<<<<<< HEAD
-package org.apache.hupa.client.ui;
-
-import org.apache.hupa.client.HupaCSS;
-<<<<<<< HEAD
-=======
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-package org.apache.hupa.client.ui;
-
-<<<<<<< HEAD
-import static com.google.gwt.dom.client.Style.Unit.PCT;
->>>>>>> Change to new mvp framework - first step
-=======
-package org.apache.hupa.client.ui;
-
-import static com.google.gwt.dom.client.Style.Unit.PCT;
->>>>>>> Change to new mvp framework - first step
-
-=======
->>>>>>> use DockLayoutPanel as the App Layout
-=======
-
->>>>>>> make it look more beautiful
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.user.client.ui.DockLayoutPanel;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.user.client.ui.HTMLPanel;
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-import com.google.gwt.user.client.ui.FlowPanel;
->>>>>>> decorate the theme
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-import com.google.gwt.user.client.ui.FlowPanel;
->>>>>>> decorate the theme
-=======
-import com.google.gwt.user.client.ui.DockLayoutPanel;
->>>>>>> use DockLayoutPanel as the App Layout
-=======
-import com.google.gwt.user.client.ui.HorizontalPanel;
->>>>>>> make it look more beautiful
-=======
-import com.google.gwt.user.client.ui.HTMLPanel;
->>>>>>> make it look more beautiful
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.LayoutPanel;
-import com.google.gwt.user.client.ui.SimplePanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-
-public class AppLayoutImpl implements AppLayout {
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-	private final DockLayoutPanel appLayoutPanel;
-
-	interface AppLayoutUiBinder extends UiBinder<DockLayoutPanel, AppLayoutImpl> {
-=======
-=======
->>>>>>> decorate the theme
-	private static final int MAINMENU_HEIGHT = 10;
-	private static final int VMASTER_WIDTH = 15;
-
-	private final LayoutPanel mainLayoutPanel;
-
-	interface AppLayoutUiBinder extends UiBinder<LayoutPanel, AppLayoutImpl> {
-<<<<<<< HEAD
->>>>>>> decorate the theme
-=======
->>>>>>> decorate the theme
-=======
-	private final DockLayoutPanel mainLayoutPanel;
-=======
-	private final DockLayoutPanel appLayoutPanel;
->>>>>>> use DataGrid instead of CellTable to list messages.
-
-	interface AppLayoutUiBinder extends UiBinder<DockLayoutPanel, AppLayoutImpl> {
->>>>>>> use DockLayoutPanel as the App Layout
-	}
-
-	private static AppLayoutUiBinder binder = GWT.create(AppLayoutUiBinder.class);
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-	@UiField LayoutPanel northPanel;
-	@UiField HTMLPanel southPanel;
-	@UiField SimplePanel westPanel;
-	@UiField SimplePanel eastPanel;
-	@UiField LayoutPanel centerPanel;
-	@UiField SimplePanel logoContainer;
-	@UiField SimplePanel topContainer;
-
-	@Inject
-	public AppLayoutImpl() {
-		appLayoutPanel = binder.createAndBindUi(this);
-		logoContainer.addStyleName(HupaCSS.C_logo_container);
-=======
-	@UiField
-	SimplePanel topPanel;
-=======
-	@UiField
-<<<<<<< HEAD
-	FlowPanel topPanel;
->>>>>>> decorate the theme
-=======
-	SimplePanel topPanel;
->>>>>>> introduce the top activity
-=======
-	@UiField SimplePanel northPanel;
-	@UiField SimplePanel southPanel;
->>>>>>> use DockLayoutPanel as the App Layout
-
-=======
-	@UiField HorizontalPanel northPanel;
-	@UiField SimplePanel southPanel;
->>>>>>> make it look more beautiful
-=======
-	@UiField LayoutPanel northPanel;
-	@UiField HTMLPanel southPanel;
->>>>>>> make it look more beautiful
-	@UiField SimplePanel westPanel;
-	@UiField SimplePanel eastPanel;
-	@UiField LayoutPanel centerPanel;
-	@UiField SimplePanel logoContainer;
-	@UiField SimplePanel topContainer;
-
-	@Inject
-	public AppLayoutImpl() {
-<<<<<<< HEAD
-		mainLayoutPanel = binder.createAndBindUi(this);
-<<<<<<< HEAD
->>>>>>> decorate the theme
-=======
->>>>>>> decorate the theme
-=======
-		appLayoutPanel = binder.createAndBindUi(this);
-<<<<<<< HEAD
->>>>>>> use DataGrid instead of CellTable to list messages.
-=======
-		logoContainer.addStyleName(HupaCSS.C_logo_container);
->>>>>>> make it look more beautiful
-		setLoginLayout();
-	}
-
-	@Override
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-	public DockLayoutPanel getAppLayoutPanel() {
-		return appLayoutPanel;
-	}
-
-	@Override
-	public AcceptsOneWidget getNorthContainer() {
-		return new AcceptsOneWidget() {
-			@Override
-			public void setWidget(IsWidget w) {
-				Widget widget = Widget.asWidgetOrNull(w);
-				if(widget != null){
-					topContainer.add(widget);
-				}
-			}
-		};
-	}
-	@Override
-=======
-=======
->>>>>>> decorate the theme
-	public LayoutPanel getMainLayoutPanel() {
-		return mainLayoutPanel;
-	}
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-
-=======
-
-=======
-	public DockLayoutPanel getMainLayoutPanel() {
-		return mainLayoutPanel;
-=======
-	public DockLayoutPanel getAppLayoutPanel() {
-		return appLayoutPanel;
->>>>>>> use DataGrid instead of CellTable to list messages.
-	}
-
->>>>>>> use DockLayoutPanel as the App Layout
-	@Override
-	public AcceptsOneWidget getNorthContainer() {
-		return new AcceptsOneWidget() {
-			@Override
-			public void setWidget(IsWidget w) {
-				Widget widget = Widget.asWidgetOrNull(w);
-				if(widget != null){
-					topContainer.add(widget);
-				}
-			}
-		};
-	}
->>>>>>> introduce the top activity
-	@Override
-	public AcceptsOneWidget getTopContainer() {
-		return new AcceptsOneWidget() {
-			@Override
-			public void setWidget(IsWidget w) {
-				Widget widget = Widget.asWidgetOrNull(w);
-				topPanel.setWidget(widget);
-			}
-		};
-	}
-	@Override
->>>>>>> decorate the theme
-=======
-	@Override
->>>>>>> decorate the theme
-	public AcceptsOneWidget getWestContainer() {
-		return new AcceptsOneWidget() {
-			@Override
-			public void setWidget(IsWidget w) {
-				Widget widget = Widget.asWidgetOrNull(w);
-				westPanel.setWidget(widget);
-			}
-		};
-	}
-
-	@Override
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-	public AcceptsOneWidget getCenterContainer() {
-=======
-	public AcceptsOneWidget getMainContainer() {
->>>>>>> decorate the theme
-=======
-	public AcceptsOneWidget getMainContainer() {
->>>>>>> decorate the theme
-=======
-	public AcceptsOneWidget getCenterContainer() {
->>>>>>> use DataGrid instead of CellTable to list messages.
-		return new AcceptsOneWidget() {
-			@Override
-			public void setWidget(IsWidget w) {
-				Widget widget = Widget.asWidgetOrNull(w);
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> use DataGrid instead of CellTable to list messages.
-				if(centerPanel.getWidgetCount() > 0){
-					centerPanel.remove(0);
-				}
-				if(widget != null){
-					centerPanel.add(widget);
-				}
-<<<<<<< HEAD
-=======
-				mainPanel.setWidget(widget);
->>>>>>> decorate the theme
-=======
-				mainPanel.setWidget(widget);
->>>>>>> decorate the theme
-=======
-				centerPanel.setWidget(widget);
->>>>>>> use DockLayoutPanel as the App Layout
-=======
->>>>>>> use DataGrid instead of CellTable to list messages.
-			}
-		};
-	}
-
-	public void setDefaultLayout() {
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-		arrangeLayoutSize(8, 2, 15, 0);
-	}
-
-	public void setLoginLayout() {
-		arrangeLayoutSize(0, 2, 0, 0);
-	}
-	
-	private void arrangeLayoutSize(double n, double s, double w, double e){
-		appLayoutPanel.setWidgetSize(northPanel, n);
-		appLayoutPanel.setWidgetSize(southPanel, s);
-		appLayoutPanel.setWidgetSize(westPanel, w);
-		appLayoutPanel.setWidgetSize(eastPanel, e);
-	}
-=======
-=======
->>>>>>> Change to new mvp framework - first step
-  private static final int MAINMENU_HEIGHT = 10;
-  private static final int VMASTER_WIDTH = 20;
-
-  private final LayoutPanel mainLayoutPanel;
-
-  interface AppLayoutUiBinder extends UiBinder<LayoutPanel, AppLayoutImpl> {
-  }
-
-  private static AppLayoutUiBinder binder = GWT.create(AppLayoutUiBinder.class);
-
-  @UiField
-  SimplePanel menuPanel;
-
-  @UiField
-  SimplePanel mvPanel;
-
-  @UiField
-  SimplePanel mainPanel;
-
-
-  @Inject
-  public AppLayoutImpl() {
-    mainLayoutPanel = binder.createAndBindUi(this);
-    setLoginLayout();
-  }
-
-  @Override
-  public LayoutPanel getMainLayoutPanel() {
-    return mainLayoutPanel;
-  }
-
-  @Override
-  public AcceptsOneWidget getWestContainer() {
-    return new AcceptsOneWidget() {
-      @Override
-      public void setWidget(IsWidget w) {
-        Widget widget = Widget.asWidgetOrNull(w);
-        mvPanel.setWidget(widget);
-      }
-    };
-  }
-
-  @Override
-  public AcceptsOneWidget getMainContainer() {
-    return new AcceptsOneWidget() {
-      @Override
-      public void setWidget(IsWidget w) {
-        Widget widget = Widget.asWidgetOrNull(w);
-        mainPanel.setWidget(widget);
-      }
-    };
-  }
-
-  public void setDefaultLayout() {
-    int height = 100 - MAINMENU_HEIGHT;
-    mainLayoutPanel.setWidgetTopHeight(mvPanel, MAINMENU_HEIGHT, PCT, height, PCT);
-    mainLayoutPanel.setWidgetLeftWidth(mvPanel, 0, PCT, VMASTER_WIDTH, PCT);
-    mainLayoutPanel.setWidgetTopHeight(mainPanel, MAINMENU_HEIGHT, PCT, height, PCT);
-    mainLayoutPanel.setWidgetLeftWidth(mainPanel, VMASTER_WIDTH, PCT, 100 - VMASTER_WIDTH, PCT);
-//    mainLayoutPanel.animate(500);
-  }
-
-  public void setLoginLayout() {
-    int height = 100 - MAINMENU_HEIGHT;
-    mainLayoutPanel.setWidgetTopHeight(menuPanel, 0, PCT, MAINMENU_HEIGHT, PCT);
-    mainLayoutPanel.setWidgetTopHeight(mvPanel, 0, PCT, 0, PCT);
-    mainLayoutPanel.setWidgetTopHeight(mainPanel, MAINMENU_HEIGHT, PCT, height, PCT);
-    mainLayoutPanel.setWidgetLeftWidth(mainPanel, 0, PCT, 100, PCT);
-//    mainLayoutPanel.animate(500);
-  }
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
-=======
->>>>>>> decorate the theme
-		int height = 100 - MAINMENU_HEIGHT;
-		mainLayoutPanel.setWidgetTopHeight(westPanel, MAINMENU_HEIGHT, PCT, height, PCT);
-		mainLayoutPanel.setWidgetLeftWidth(westPanel, 0, PCT, VMASTER_WIDTH, PCT);
-		mainLayoutPanel.setWidgetTopHeight(mainPanel, MAINMENU_HEIGHT, PCT, height, PCT);
-		mainLayoutPanel.setWidgetLeftWidth(mainPanel, VMASTER_WIDTH, PCT, 100 - VMASTER_WIDTH, PCT);
-		// mainLayoutPanel.animate(500);
-=======
-		mainLayoutPanel.setWidgetSize(westPanel, 18);
-		mainLayoutPanel.setWidgetSize(northPanel, 8);
-		mainLayoutPanel.setWidgetSize(southPanel, 2);
-		mainLayoutPanel.setWidgetSize(eastPanel, 0);
->>>>>>> use DockLayoutPanel as the App Layout
-=======
-		this.arrangeLayout(true);
->>>>>>> use DataGrid instead of CellTable to list messages.
-=======
-		arrangeLayoutSize(8, 2, 15, 0);
->>>>>>> refactoring theme 1 - login page
-	}
-
-	public void setLoginLayout() {
-		arrangeLayoutSize(0, 2, 0, 0);
-	}
-	
-	private void arrangeLayoutSize(double n, double s, double w, double e){
-		appLayoutPanel.setWidgetSize(northPanel, n);
-		appLayoutPanel.setWidgetSize(southPanel, s);
-		appLayoutPanel.setWidgetSize(westPanel, w);
-		appLayoutPanel.setWidgetSize(eastPanel, e);
-	}
-<<<<<<< HEAD
->>>>>>> decorate the theme
-=======
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> decorate the theme
-}
\ No newline at end of file
diff --git a/client/src/main/java/org/apache/hupa/client/ui/AppLayoutImpl.ui.xml b/client/src/main/java/org/apache/hupa/client/ui/AppLayoutImpl.ui.xml
deleted file mode 100644
index 432a318..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/AppLayoutImpl.ui.xml
+++ /dev/null
@@ -1,312 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> use DockLayoutPanel as the App Layout
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
-	license agreements. See the NOTICE file distributed with this work for additional 
-	information regarding copyright ownership. The ASF licenses this file to 
-	you under the Apache License, Version 2.0 (the "License"); you may not use 
-	this file except in compliance with the License. You may obtain a copy of 
-	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
-	by applicable law or agreed to in writing, software distributed under the 
-	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
-	OF ANY KIND, either express or implied. See the License for the specific 
-	language governing permissions and limitations under the License. -->
-<<<<<<< HEAD
-=======
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements. See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership. The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License. You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied. See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-=======
->>>>>>> use DockLayoutPanel as the App Layout
-
-<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
-	xmlns:g='urn:import:com.google.gwt.user.client.ui'>
-<<<<<<< HEAD
-	<ui:style>
-	</ui:style>
-	<g:DockLayoutPanel unit='EM'>
-		<g:north size='8'>
-			<g:LayoutPanel ui:field="northPanel">
-			<g:layer left="0px" width="84px" top="0px" height="64">
-				<g:SimplePanel ui:field="logoContainer"/></g:layer>
-			<g:layer right="12px" width="37%" >
-				<g:SimplePanel ui:field="topContainer" /></g:layer>
-			</g:LayoutPanel>
-		</g:north>
-		<g:south size='2'>
-			<g:HTMLPanel  ui:field="southPanel">
-			</g:HTMLPanel>
-		</g:south>
-		<g:west size='12'>
-			<g:SimplePanel ui:field="westPanel"/>
-		</g:west>
-		<g:east size='0'>
-			<g:SimplePanel ui:field="eastPanel" />
-		</g:east>
-		<g:center>
-			<g:LayoutPanel ui:field="centerPanel"/>
-		</g:center>
-	</g:DockLayoutPanel>
-=======
-<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
-<<<<<<< HEAD
-=======
-<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-             xmlns:g='urn:import:com.google.gwt.user.client.ui'
-             xmlns:my='urn:import:org.apache.hupa.client.ui'>
-  <ui:image field="maincontent"/>
-  <ui:image field="masterv"/>
-  <ui:image field="mainmenu"/> 
-  <ui:style>
-    @sprite .menuPanel {
-      gwt-image: 'mainmenu';
-      background-position: center center;
-      height: 100%;
-      width: 100%;
-      border: 1px solid gray;
-    }
-
-    @sprite .mvPanel {
-      gwt-image: 'masterv';
-      background-position: center center;
-      height: 100%;
-      width: 100%;
-      border: 1px solid gray;
-    }
-
-    @sprite .mainPanel {
-      gwt-image: 'maincontent';
-      background-position: center center;
-      height: 100%;
-      width: 100%;
-      border: 1px solid gray;
-    }
-  </ui:style>
-  <g:LayoutPanel>
-    <g:layer>
-      <g:SimplePanel ui:field="menuPanel" addStyleNames="{style.menuPanel}">
-      </g:SimplePanel>
-    </g:layer>
-    <g:layer>
-      <g:SimplePanel ui:field="mvPanel" addStyleNames="{style.mvPanel}"/>
-    </g:layer>
-    <g:layer>
-      <g:SimplePanel ui:field="mainPanel" addStyleNames="{style.mainPanel}"/>
-    </g:layer>
-  </g:LayoutPanel>
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
-=======
->>>>>>> decorate the theme
-	xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:my='urn:import:org.apache.hupa.client.ui'>
-=======
-	xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:h='urn:import:org.apache.hupa.client.ui'>
->>>>>>> use DataGrid instead of CellTable to list messages.
-	<ui:style>
-		.Hupa {
-			text-align: left;
-			margin-top: 0px;
-			padding: 0px;
-			width: 100%;
-			min-width: 800px;
-			margin-top: 15px;
-		}
-		
-		.northPanel {
-			clear: both;
-			border: 1px solid #7FAAFF;
-			box-shadow: 0 1px 4px grey;
-			border-radius: 5px;
-			overflow: hidden;
-			background: literal("-moz-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-webkit-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-o-linear-gradient(#eaeaea, #fafafa)");
-			margin: 0px 8px 8px 8px;
-		}
-		
-		.topView {
-			height: 64px;
-			background-color: #C5D9FF;
-<<<<<<< HEAD
-<<<<<<< HEAD
-			background:  literal("-moz-linear-gradient(#FFFFFF, #C5D9FF)");
-=======
-			background: literal("-moz-linear-gradient(#FFFFFF, #C5D9FF)");
->>>>>>> use DockLayoutPanel as the App Layout
-			background: literal("-webkit-linear-gradient(#FFFFFF, #C5D9FF)");
-			background: literal("-o-linear-gradient(#FFFFFF, #C5D9FF)");
-<<<<<<< HEAD
-=======
-			background: -moz-linear-gradient(#FFFFFF, #C5D9FF);
-			background: -webkit-linear-gradient(#FFFFFF, #C5D9FF);
-			background: -o-linear-gradient(#FFFFFF, #C5D9FF);
->>>>>>> decorate the theme
-=======
-			width : 98%
->>>>>>> make it look more beautiful
-		}
-		
-		.hupa-logo {
-			width: 90px;
-			height: 64px;
-			float: left;
-<<<<<<< HEAD
-			background: url(images/hupa-logo-64-transparent.png) no-repeat;
-		}
-		
-		.hupa-main {
-			clear: both;
-			margin: 8px 8px 8px 8px;
-			min-height: 500px;
-<<<<<<< HEAD
-			background: literal("-moz-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-webkit-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-o-linear-gradient(#eaeaea, #fafafa)");
-=======
-			background: -moz-linear-gradient(#eaeaea, #fafafa);
-			background: -webkit-linear-gradient(#eaeaea, #fafafa);
-			background: -o-linear-gradient(#eaeaea, #fafafa);
->>>>>>> decorate the theme
-=======
-			background: url(hupa-logo-64-transparent.png) no-repeat;
->>>>>>> make it look more beautiful
-		}
-		
-		.westPanel {
-			border: 1px solid #7FAAFF;
-			box-shadow: 0 1px 4px grey;
-			border-radius: 5px;
-			overflow: hidden;
-<<<<<<< HEAD
-			background: literal("-moz-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-webkit-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-o-linear-gradient(#eaeaea, #fafafa)");
-=======
-			background: -moz-linear-gradient(#eaeaea, #fafafa);
-			background: -webkit-linear-gradient(#eaeaea, #fafafa);
-			background: -o-linear-gradient(#eaeaea, #fafafa);
->>>>>>> decorate the theme
-			clear: both;
-			margin: 8px 8px 8px 8px;
-		}
-		
-		.centerPanel {
-			clear: both;
-			border: 1px solid #7FAAFF;
-			box-shadow: 0 1px 4px grey;
-			border-radius: 5px;
-			overflow: hidden;
-<<<<<<< HEAD
-			background: literal("-moz-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-webkit-linear-gradient(#eaeaea, #fafafa)");
-			background: literal("-o-linear-gradient(#eaeaea, #fafafa)");
-<<<<<<< HEAD
-=======
-			background: -moz-linear-gradient(#eaeaea, #fafafa);
-			background: -webkit-linear-gradient(#eaeaea, #fafafa);
-			background: -o-linear-gradient(#eaeaea, #fafafa);
->>>>>>> decorate the theme
-			clear: both;
-			margin: 8px 8px 8px 8px;
-			min-height: 500px;
-=======
-			margin: 0px 8px 8px 8px;
-<<<<<<< HEAD
-<<<<<<< HEAD
-			min-height: 400px;
->>>>>>> make it look more beautiful
-=======
-			min-height: 300px;
-=======
->>>>>>> make messages list pager be available
-		}
-		.southPanel{
-			text-align: center;
->>>>>>> make it look more beautiful
-		}
-	</ui:style>
-<<<<<<< HEAD
-	<g:LayoutPanel addStyleNames="{style.Hupa}">
-		<g:layer>
-<<<<<<< HEAD
-<<<<<<< HEAD
-			<g:SimplePanel ui:field="topPanel" addStyleNames="{style.topPanel}">
-			</g:SimplePanel>
-=======
-			<g:FlowPanel ui:field="topPanel" addStyleNames="{style.topPanel}">
-				<g:HTMLPanel addStyleNames="{style.hupa-logo}" />
-				<my:TopView ui:field="topView" addStyleNames="{style.topView}" />
-			</g:FlowPanel>
->>>>>>> decorate the theme
-=======
-			<g:SimplePanel ui:field="topPanel" addStyleNames="{style.topPanel}">
-			</g:SimplePanel>
->>>>>>> introduce the top activity
-		</g:layer>
-		<g:layer>
-			<g:SimplePanel ui:field="westPanel" addStyleNames="{style.westPanel}" />
-		</g:layer>
-		<g:layer>
-			<g:SimplePanel ui:field="mainPanel" addStyleNames="{style.mainPanel}" />
-		</g:layer>
-	</g:LayoutPanel>
-<<<<<<< HEAD
->>>>>>> decorate the theme
-=======
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> decorate the theme
-=======
-	<g:DockLayoutPanel unit='EM' addStyleNames="{style.Hupa}">
-=======
-	<ui:style>
-	</ui:style>
-	<g:DockLayoutPanel unit='EM'>
->>>>>>> refactoring theme 1 - login page
-		<g:north size='8'>
-			<g:LayoutPanel ui:field="northPanel">
-			<g:layer left="0px" width="84px" top="0px" height="64">
-				<g:SimplePanel ui:field="logoContainer"/></g:layer>
-			<g:layer right="12px" width="37%" >
-				<g:SimplePanel ui:field="topContainer" /></g:layer>
-			</g:LayoutPanel>
-		</g:north>
-		<g:south size='2'>
-			<g:HTMLPanel  ui:field="southPanel">
-			</g:HTMLPanel>
-		</g:south>
-		<g:west size='12'>
-			<g:SimplePanel ui:field="westPanel"/>
-		</g:west>
-		<g:east size='0'>
-			<g:SimplePanel ui:field="eastPanel" />
-		</g:east>
-		<g:center>
-			<g:LayoutPanel ui:field="centerPanel"/>
-		</g:center>
-	</g:DockLayoutPanel>
->>>>>>> use DockLayoutPanel as the App Layout
-</ui:UiBinder>
\ No newline at end of file
diff --git a/client/src/main/java/org/apache/hupa/client/ui/Displayable.java b/client/src/main/java/org/apache/hupa/client/ui/Displayable.java
deleted file mode 100644
index 2be1435..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/Displayable.java
+++ /dev/null
@@ -1,36 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-<<<<<<< HEAD
-=======
->>>>>>> Make the evo more clear.
-=======
->>>>>>> Make the evo more clear.
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-package org.apache.hupa.client.ui;
-
-public interface Displayable {
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java b/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
deleted file mode 100644
index 0067e26..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
+++ /dev/null
@@ -1,2305 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.ui;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import java.util.List;
-import java.util.Set;
-<<<<<<< HEAD
-=======
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
->>>>>>> Change to new mvp framework - first step
-=======
-import java.util.ArrayList;
-=======
->>>>>>> clean some code. Pager issue remain
-import java.util.Date;
-=======
->>>>>>> remove gwt-incubator dependency in Messages List Model; 
-import java.util.List;
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> fix the main part of issue 11 - delete selected messages.
-
-import org.apache.hupa.client.HupaCSS;
-import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.HupaMessages;
-import org.apache.hupa.client.activity.IMAPMessageListActivity;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.rf.FetchMessagesRequest;
-import org.apache.hupa.client.rf.HupaRequestFactory;
-import org.apache.hupa.client.widgets.ConfirmDialogBox;
-import org.apache.hupa.client.widgets.EnableButton;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-import org.apache.hupa.shared.domain.FetchMessagesAction;
-import org.apache.hupa.shared.domain.FetchMessagesResult;
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
-import org.apache.hupa.shared.events.LogoutEvent;
-import org.apache.hupa.shared.events.LogoutEventHandler;
-import org.apache.hupa.shared.events.MessagesReceivedEvent;
-import org.apache.hupa.widgets.ui.HasEnable;
-import org.apache.hupa.widgets.ui.Loading;
-import org.cobogw.gwt.user.client.ui.Button;
-import org.cobogw.gwt.user.client.ui.ButtonBar;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.dom.client.Style.Unit;
-=======
-=======
->>>>>>> Change to new mvp framework - first step
-import org.apache.hupa.client.bundles.HupaImageBundle;
-=======
->>>>>>> make the messages list can be selected without bothering the checkbox column's behavior of it.
-=======
-import org.apache.hupa.client.bundles.HupaImageBundle;
->>>>>>> fix issue 5,6,8:
-=======
->>>>>>> fix the main part of issue 11 - delete selected messages.
-import org.apache.hupa.client.rf.FetchMessagesRequest;
-import org.apache.hupa.client.rf.HupaRequestFactory;
-import org.apache.hupa.client.widgets.ConfirmDialogBox;
-import org.apache.hupa.client.widgets.EnableButton;
-import org.apache.hupa.client.widgets.HasDialog;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-import org.apache.hupa.shared.domain.FetchMessagesAction;
-import org.apache.hupa.shared.domain.FetchMessagesResult;
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.Message;
-import org.apache.hupa.shared.domain.User;
-import org.apache.hupa.shared.events.ExpandMessageEvent;
-import org.apache.hupa.shared.events.FolderSelectionEvent;
-import org.apache.hupa.shared.events.FolderSelectionEventHandler;
-import org.apache.hupa.shared.events.LoadMessagesEvent;
-import org.apache.hupa.shared.events.LoadMessagesEventHandler;
-import org.apache.hupa.shared.events.LoginEvent;
-import org.apache.hupa.shared.events.LoginEventHandler;
-import org.apache.hupa.shared.events.LogoutEvent;
-import org.apache.hupa.shared.events.LogoutEventHandler;
-import org.apache.hupa.shared.events.MessagesReceivedEvent;
-import org.apache.hupa.widgets.ui.HasEnable;
-import org.apache.hupa.widgets.ui.Loading;
-import org.cobogw.gwt.user.client.ui.Button;
-import org.cobogw.gwt.user.client.ui.ButtonBar;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-import com.google.gwt.cell.client.CheckboxCell;
-import com.google.gwt.cell.client.DateCell;
-import com.google.gwt.cell.client.ImageResourceCell;
-import com.google.gwt.cell.client.TextCell;
-=======
-import com.google.gwt.cell.client.FieldUpdater;
->>>>>>> make the messages list can be selected without bothering the checkbox column's behavior of it.
-=======
->>>>>>> refactoring.
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-<<<<<<< HEAD
->>>>>>> use CellTable to deal with MessageTableModel, even a few issues
-=======
->>>>>>> fix the CellTable display
-=======
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-<<<<<<< HEAD
->>>>>>> clean some code. Pager issue remain
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
-=======
->>>>>>> remove gwt-incubator dependency in Messages List Model; 
-=======
-import com.google.gwt.dom.client.Style.Unit;
-<<<<<<< HEAD
->>>>>>> use DataGrid instead of CellTable to list messages.
-=======
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
->>>>>>> fix issue 5,6,8:
-import com.google.gwt.event.dom.client.HasChangeHandlers;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.dom.client.KeyCodes;
-import com.google.gwt.event.dom.client.KeyUpEvent;
-import com.google.gwt.event.dom.client.KeyUpHandler;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.event.shared.EventBus;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
->>>>>>> remove gwt-incubator dependency in Messages List Model; 
-=======
->>>>>>> decorate columns of messages list and related panels above and below.
-import com.google.gwt.user.cellview.client.SimplePager;
-import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
-import com.google.gwt.user.client.ui.Anchor;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.DockLayoutPanel;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-=======
-import com.google.gwt.user.client.ui.Grid;
->>>>>>> fix issue 5,6,8:
-import com.google.gwt.user.client.ui.HTML;
->>>>>>> decorate columns of messages list and related panels above and below.
-=======
->>>>>>> fix issue 10
-import com.google.gwt.user.client.ui.HasValue;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
-import com.google.gwt.user.client.ui.SuggestBox;
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import com.google.gwt.user.client.ui.VerticalPanel;
->>>>>>> remove gwt-incubator dependency in Messages List Model; 
-=======
->>>>>>> use DataGrid instead of CellTable to list messages.
-import com.google.gwt.user.client.ui.Widget;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import com.google.gwt.view.client.CellPreviewEvent;
-import com.google.gwt.view.client.CellPreviewEvent.Handler;
-import com.google.gwt.view.client.MultiSelectionModel;
-import com.google.gwt.view.client.ProvidesKey;
-=======
->>>>>>> decorate columns of messages list and related panels above and below.
-import com.google.gwt.view.client.RangeChangeEvent;
-import com.google.gwt.view.client.SelectionChangeEvent;
-=======
-import com.google.gwt.view.client.CellPreviewEvent;
-import com.google.gwt.view.client.CellPreviewEvent.Handler;
-import com.google.gwt.view.client.MultiSelectionModel;
-import com.google.gwt.view.client.ProvidesKey;
-import com.google.gwt.view.client.RangeChangeEvent;
-<<<<<<< HEAD
->>>>>>> make the messages list can be selected without bothering the checkbox column's behavior of it.
-=======
-import com.google.gwt.view.client.SelectionChangeEvent;
->>>>>>> fix the main part of issue 11 - delete selected messages.
-import com.google.gwt.view.client.SelectionModel;
-import com.google.inject.Inject;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-import com.google.web.bindery.requestfactory.shared.ServerFailure;
-
-@SuppressWarnings("deprecation")
-public class IMAPMessageListView extends Composite implements IMAPMessageListActivity.Displayable {
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-	@SuppressWarnings("unused") private HupaMessages messages;
-
-	private EnableButton deleteMailButton;
-	private Button newMailButton;
-	private Button deleteAllMailButton;
-	private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
-	private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
-	private EnableButton markSeenButton;
-	private EnableButton markUnSeenButton;
-
-	private ListBox pageBox = new ListBox();
-	private Anchor allLink;
-	private Anchor noneLink;
-	private Anchor refreshLink;
-	private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" ,@");
-	private SuggestBox searchBox = new SuggestBox(oracle);
-	private Button searchButton;
-	private Loading loading;
-
-	private SimplePager pager;
-	private EventBus eventBus;
-
-	private User user;
-	private ImapFolder folder;
-	private String searchValue;
-	private HupaRequestFactory requestFactory;
-	public final ProvidesKey<Message> KEY_PROVIDER = new ProvidesKey<Message>() {
-		@Override
-		public Object getKey(Message item) {
-			return item == null ? null : item.getUid();
-		}
-	};
-	private SelectionModel<? super Message> selectionModel;
-
-	public void fetch(final int start) {
-		FetchMessagesRequest messagesRequest = requestFactory.messagesRequest();
-		FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class);
-		final ImapFolder folder1 = messagesRequest.create(ImapFolder.class);
-		folder1.setChildren(folder.getChildren());
-		folder1.setDelimiter(folder.getDelimiter());
-		folder1.setFullName(folder.getFullName());
-		folder1.setMessageCount(folder.getMessageCount());
-		folder1.setName(folder.getName());
-		folder1.setSubscribed(folder.getSubscribed());
-		folder1.setUnseenMessageCount(folder.getUnseenMessageCount());
-		action.setFolder(folder1);
-		action.setOffset(table.getPageSize());
-		action.setSearchString(searchValue);
-		action.setStart(start);
-		messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {
-
-			@Override
-			public void onFailure(ServerFailure error) {
-				if (error.isFatal()) {
-					throw new RuntimeException(error.getMessage());
-				}
-			}
-
-			@Override
-			public void onSuccess(final FetchMessagesResult result) {
-				assert result != null;
-				// folder.setMessageCount(result.getRealCount());// TODO if do
-				// this, there will be auto bean has been frozen.
-				// folder.setUnseenMessageCount(result.getRealUnreadCount());
-				table.setRowCount(result.getRealCount());
-				table.setRowData(start, result.getMessages());
-
-				pager.setPageStart(start);
-				eventBus.fireEvent(new MessagesReceivedEvent(folder1, result.getMessages()));
-			}
-		});
-	}
-
-	private MessagesCellTable table;
-	private boolean pending;
-
-	@Inject
-	public IMAPMessageListView(final HupaConstants constants, final HupaMessages messages, final EventBus eventBus,
-	        final HupaRequestFactory requestFactory, final MessagesCellTable table) {
-		this.table = table;
-		this.eventBus = eventBus;
-		this.requestFactory = requestFactory;
-		selectionModel = table.getSelectionModel();
-		table.addCellPreviewHandler(new Handler<Message>() {
-			@Override
-			public void onCellPreview(CellPreviewEvent<Message> event) {
-				if (hasClickedButFirstCol(event)) {
-					setExpandLoading(true);
-					eventBus.fireEvent(new ExpandMessageEvent(user, folder, event.getValue()));
-				}
-			}
-			private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) {
-				return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
-			}
-
-		});
-		selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
-			@Override
-			public void onSelectionChange(SelectionChangeEvent event) {
-				if (selectedCount() == 0) {
-					toggleButtons(false);
-				} else {
-					toggleButtons(true);
-				}
-			}
-		});
-//		table.getCheckboxCol().setFieldUpdater(new FieldUpdater<Message, Boolean>() {
-//			@Override
-//			public void update(int index, Message object, Boolean value) {
-//				selectionModel.setSelected(object, value);
-//				if (selectedCount() == 0) {
-//					toggleButtons(false);
-//				} else {
-//					toggleButtons(true);
-//				}
-//			}
-//
-//			private int selectedCount() {
-//				return getSelectedMessages().size();
-//			}
-//
-//			private void toggleButtons(boolean b) {
-//				getDeleteEnable().setEnabled(b);
-//				getMarkSeenEnable().setEnabled(b);
-//				getMarkUnseenEnable().setEnabled(b);
-//			}
-//		});
-
-		table.addRangeChangeHandler(new RangeChangeEvent.Handler() {
-			@Override
-			public void onRangeChange(RangeChangeEvent event) {
-				fetch(event.getNewRange().getStart());
-			}
-		});
-		// bind some Events
-		eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-			public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-				user = loadMessagesEvent.getUser();
-				folder = loadMessagesEvent.getFolder();
-				searchValue = loadMessagesEvent.getSearchValue();
-				fetch(0);
-
-			}
-		});
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-			public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				user = event.getUser();
-				folder = event.getFolder();
-				searchValue = null;
-			}
-		});
-		eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-			public void onLogin(LoginEvent event) {
-				user = event.getUser();
-				folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
-				searchValue = null;
-				if (!pending) {
-					pending = true;
-					Scheduler.get().scheduleFinally(new ScheduledCommand() {
-						@Override
-						public void execute() {
-							pending = false;
-							fetch(0);
-						}
-					});
-				}
-			}
-		});
-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-			public void onLogout(LogoutEvent logoutEvent) {
-				user = null;
-				folder = null;
-				searchValue = null;
-			}
-		});
-
-		this.messages = messages;
-		this.eventBus = eventBus;
-
-		SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
-		pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
-		pager.setDisplay(table);
-
-		deleteMailButton = new EnableButton(constants.deleteMailButton());
-		newMailButton = new Button(constants.newMailButton());
-		deleteAllMailButton = new Button(constants.deleteAll());
-		markSeenButton = new EnableButton(constants.markSeen());
-		markUnSeenButton = new EnableButton(constants.markUnseen());
-		allLink = new Anchor(constants.all());
-		noneLink = new Anchor(constants.none());
-		refreshLink = new Anchor(constants.refresh());
-		searchButton = new Button(constants.searchButton());
-		loading = new Loading(constants.loading());
-
-		DockLayoutPanel solidCenterPanel = new DockLayoutPanel(Unit.EM);
-		// solidCenterPanel.addStyleName(HupaCSS.C_msg_list_container);
-
-		HorizontalPanel buttonBar = new HorizontalPanel();
-		buttonBar.addStyleName(HupaCSS.C_buttons);
-
-		ButtonBar navigatorBar = new ButtonBar();
-		navigatorBar.add(newMailButton);
-		deleteMailButton.setEnabled(false);
-		navigatorBar.add(deleteMailButton);
-		buttonBar.add(navigatorBar);
-		buttonBar.add(deleteAllMailButton);
-
-		ButtonBar markButtonBar = new ButtonBar();
-		markButtonBar.add(markSeenButton);
-		markButtonBar.add(markUnSeenButton);
-		buttonBar.add(markButtonBar);
-		// buttonBar.add(refreshLink); TODO
-
-		pageBox.addItem("" + MessagesCellTable.PAGE_SIZE);
-		pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 2));
-		pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 4));
-		pageBox.addChangeHandler(new ChangeHandler() {
-			public void onChange(ChangeEvent event) {
-				// if (pageBox.getSelectedIndex() > 0)
-				table.setVisibleRange(0, Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
-				// mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
-			}
-		});
-
-		HorizontalPanel searchPanel = new HorizontalPanel();
-		searchPanel.addStyleName(HupaCSS.C_buttons);
-
-		searchBox.addStyleName(HupaCSS.C_msg_search);
-		searchBox.setAnimationEnabled(true);
-		searchBox.setAutoSelectEnabled(false);
-		searchBox.setLimit(20);
-		searchBox.addKeyUpHandler(new KeyUpHandler() {
-			public void onKeyUp(KeyUpEvent event) {
-				if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
-					searchButton.click();
-				}
-			}
-		});
-		searchPanel.add(searchBox);
-		searchPanel.add(searchButton);
-
-		HorizontalPanel hPanel = new HorizontalPanel();
-		hPanel.addStyleName(HupaCSS.C_msg_top_bar);
-		hPanel.add(buttonBar);
-		hPanel.add(searchPanel);
-		hPanel.setCellHorizontalAlignment(searchPanel, HorizontalPanel.ALIGN_RIGHT);
-
-		HorizontalPanel pagerBar = new HorizontalPanel();
-
-		pagerBar.add(pager);
-		pagerBar.add(pageBox);
-
-		solidCenterPanel.addNorth(hPanel, 3);
-		solidCenterPanel.addSouth(pagerBar, 2);
-		solidCenterPanel.add(table);
-
-		// msgListContainer.add(mailTable);
-
-		confirmBox.setText(messages.confirmDeleteMessages());
-		confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
-		initWidget(solidCenterPanel);
-	}
-
-	private int selectedCount() {
-		return getSelectedMessages().size();
-	}
-
-	private void toggleButtons(boolean b) {
-		getDeleteEnable().setEnabled(b);
-		getMarkSeenEnable().setEnabled(b);
-		getMarkUnseenEnable().setEnabled(b);
-	}
-	public void reloadData() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
-	 */
-	public void reset() {
-		pageBox.setSelectedIndex(0);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
-	 */
-	public Widget asWidget() {
-		return this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick
-	 * ()
-	 */
-	public HasClickHandlers getDeleteClick() {
-		return deleteMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
-	 */
-	public HasClickHandlers getNewClick() {
-		return newMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
-	 */
-	public Message getData(int rowIndex) {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog
-	 * ()
-	 */
-	public HasDialog getConfirmDeleteDialog() {
-		return confirmBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getConfirmDeleteDialogClick()
-	 */
-	public HasClickHandlers getConfirmDeleteDialogClick() {
-		return confirmBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getConfirmDeleteAllDialog()
-	 */
-	public HasDialog getConfirmDeleteAllDialog() {
-		return confirmDeleteAllBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getConfirmDeleteAllDialogClick()
-	 */
-	public HasClickHandlers getConfirmDeleteAllDialogClick() {
-		return confirmDeleteAllBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * deselectAllMessages()
-	 */
-	public void deselectAllMessages() {
-		// mailTable.getDataTable().deselectAllRows();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick
-	 * ()
-	 */
-	public HasClickHandlers getSelectAllClick() {
-		return allLink;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getSelectNoneClick()
-	 */
-	public HasClickHandlers getSelectNoneClick() {
-		return noneLink;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages
-	 * ()
-	 */
-	public void selectAllMessages() {
-		// mailTable.getDataTable().selectAllRows();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getSelectedMessages()
-	 */
-	@SuppressWarnings("unchecked")
-	public Set<Message> getSelectedMessages() {
-		return ((MultiSelectionModel<Message>) (table.getSelectionModel())).getSelectedSet();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages
-	 * (java.util.ArrayList)
-	 */
-	public void removeMessages(List<Message> messages) {
-		// mailTable.removeRows(messages);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * setPostFetchMessageCount(int)
-	 */
-	public void setPostFetchMessageCount(int count) {
-		// cTableModel.setPostCachedRowCount(count);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
-	 */
-	public void redraw() {
-		// mailTable.reloadPage();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick
-	 * ()
-	 */
-	public HasClickHandlers getDeleteAllClick() {
-		return deleteAllMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick
-	 * ()
-	 */
-	public HasClickHandlers getMarkSeenClick() {
-		return markSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getMarkUnseenClick()
-	 */
-	public HasClickHandlers getMarkUnseenClick() {
-		return markUnSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable
-	 * ()
-	 */
-	public HasEnable getDeleteEnable() {
-		return deleteMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable
-	 * ()
-	 */
-	public HasEnable getMarkSeenEnable() {
-		return markSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getMarkUnseenEnable()
-	 */
-	public HasEnable getMarkUnseenEnable() {
-		return markUnSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRefreshClick
-	 * ()
-	 */
-	public HasClickHandlers getRefreshClick() {
-		return refreshLink;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#goToPage(int)
-	 */
-	public void goToPage(int page) {
-		// if (page != mailTable.getCurrentPage()) {
-		// mailTable.gotoPage(page, false);
-		// }
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getCurrentPage
-	 * ()
-	 */
-	public int getCurrentPage() {
-		return 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getRowsPerPageIndex()
-	 */
-	public int getRowsPerPageIndex() {
-		return pageBox.getSelectedIndex();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getRowsPerPageChange()
-	 */
-	public HasChangeHandlers getRowsPerPageChange() {
-		return pageBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchClick()
-	 */
-	public HasClickHandlers getSearchClick() {
-		return searchButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchValue()
-	 */
-	public HasValue<String> getSearchValue() {
-		return searchBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.MainPresenter.Display#fillSearchOracle(java
-	 * .util.ArrayList)
-	 */
-	public void fillSearchOracle(List<Message> messages) {
-		for (Message m : messages) {
-			String subject = m.getSubject();
-			String from = m.getFrom();
-			if (subject != null && subject.trim().length() > 0) {
-				oracle.add(subject.trim());
-			}
-			if (from != null && from.trim().length() > 0) {
-				oracle.add(from.trim());
-			}
-		}
-		// searchBox.setText("");
-	}
-
-	public void setExpandLoading(boolean expanding) {
-		if (expanding) {
-			loading.show();
-		} else {
-			loading.hide();
-		}
-	}
-
-	@Override
-	public MessagesCellTable getTable() {
-		return table;
-	}
-=======
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-import com.google.gwt.event.shared.EventBus;
->>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator 
-=======
->>>>>>> fix the CellTable display
-import com.google.gwt.gen2.table.client.AbstractColumnDefinition;
-import com.google.gwt.gen2.table.client.CachedTableModel;
-import com.google.gwt.gen2.table.client.CellRenderer;
-import com.google.gwt.gen2.table.client.ColumnDefinition;
-import com.google.gwt.gen2.table.client.FixedWidthGrid;
-import com.google.gwt.gen2.table.client.MutableTableModel;
-import com.google.gwt.gen2.table.client.SelectionGrid.SelectionPolicy;
-import com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView;
-import com.google.gwt.gen2.table.event.client.HasPageChangeHandlers;
-import com.google.gwt.gen2.table.event.client.HasPageLoadHandlers;
-import com.google.gwt.gen2.table.event.client.HasRowSelectionHandlers;
-import com.google.gwt.gen2.table.event.client.PageLoadEvent;
-import com.google.gwt.gen2.table.event.client.PageLoadHandler;
-import com.google.gwt.gen2.table.event.client.RowCountChangeEvent;
-import com.google.gwt.gen2.table.event.client.RowCountChangeHandler;
-<<<<<<< HEAD
-import com.google.gwt.i18n.client.DateTimeFormat;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import com.google.gwt.user.cellview.client.AbstractPager;
-import com.google.gwt.user.cellview.client.DataGrid;
-import com.google.gwt.user.cellview.client.SimplePager;
->>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator 
-import com.google.gwt.user.client.ui.Anchor;
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-=======
-import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.cellview.client.SimplePager;
-import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
->>>>>>> use CellTable to deal with MessageTableModel, even a few issues
-=======
-import com.google.gwt.user.cellview.client.SimplePager;
->>>>>>> fix the CellTable display
-=======
-import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
-import com.google.gwt.user.cellview.client.SimplePager;
-import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
->>>>>>> clean some code. Pager issue remain
-import com.google.gwt.user.client.ui.Anchor;
->>>>>>> 
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.HasValue;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
-import com.google.gwt.user.client.ui.SuggestBox;
-import com.google.gwt.user.client.ui.TableListener;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.view.client.ListDataProvider;
-import com.google.gwt.view.client.RangeChangeEvent;
-import com.google.gwt.view.client.SelectionChangeEvent;
-import com.google.gwt.view.client.SingleSelectionModel;
-import com.google.inject.Inject;
-import com.google.web.bindery.requestfactory.shared.Receiver;
-import com.google.web.bindery.requestfactory.shared.ServerFailure;
-
-@SuppressWarnings("deprecation")
-<<<<<<< HEAD
-public class IMAPMessageListView extends Composite implements IMAPMessageListActivity.Displayable{
-
-    private static final int DEFAULT_MSG_PAGE_SIZE = 25;
-    
-    @SuppressWarnings("unused")
-    private HupaMessages messages;
-    private HupaImageBundle imageBundle;
-
-    private PagingOptions pagingBar;
-    private DragRefetchPagingScrollTable<Message> mailTable;
-    private CachedTableModel<Message> cTableModel;
-
-    private FixedWidthGrid dataTable = createDataTable();
-    private EnableButton deleteMailButton;
-    private Button newMailButton;
-    private Button deleteAllMailButton;
-    private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
-    private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
-    private EnableButton markSeenButton;
-    private EnableButton markUnSeenButton;
-
-    private ListBox pageBox = new ListBox();
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private Anchor allLink;    
-    private Anchor noneLink;
-    private Anchor refreshLink;
-=======
-    private Hyperlink allLink;    
-    private Hyperlink noneLink;
-    private Hyperlink refreshLink;
->>>>>>> Change to new mvp framework - first step
-=======
-    private Anchor allLink;    
-    private Anchor noneLink;
-    private Anchor refreshLink;
->>>>>>> 
-    private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" ,@");
-    private SuggestBox searchBox = new SuggestBox(oracle);
-    private Button searchButton;
-    private Loading loading;
-    
-    @Inject
-    public IMAPMessageListView(final PagingScrollTableRowDragController controller, final MessageTableModel mTableModel, final HupaConstants constants, final HupaMessages messages, final HupaImageBundle imageBundle) {
-        this.messages = messages;
-        this.imageBundle = imageBundle;
-        
-        deleteMailButton = new EnableButton(constants.deleteMailButton());
-        newMailButton = new Button(constants.newMailButton());
-        deleteAllMailButton = new Button(constants.deleteAll());
-        markSeenButton = new EnableButton(constants.markSeen());
-        markUnSeenButton = new EnableButton(constants.markUnseen());
-<<<<<<< HEAD
-<<<<<<< HEAD
-        allLink = new Anchor(constants.all());    
-        noneLink = new Anchor(constants.none());
-        refreshLink = new Anchor(constants.refresh());
-=======
-        allLink = new Hyperlink(constants.all(),"");    
-        noneLink = new Hyperlink(constants.none(),"");
-        refreshLink = new Hyperlink(constants.refresh(),"");
->>>>>>> Change to new mvp framework - first step
-=======
-        allLink = new Anchor(constants.all());    
-        noneLink = new Anchor(constants.none());
-        refreshLink = new Anchor(constants.refresh());
->>>>>>> 
-        searchButton = new Button(constants.searchButton());
-        loading = new Loading(constants.loading());
-        this.cTableModel = new CachedTableModel<Message>(mTableModel);
-        cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
-        mTableModel.addRowCountChangeHandler(new RowCountChangeHandler() {
-            
-            public void onRowCountChange(RowCountChangeEvent event) {
-                cTableModel.setRowCount(event.getNewRowCount());
-            }
-        });
-        
-        VerticalPanel msgListContainer = new VerticalPanel();
-        msgListContainer.addStyleName(HupaCSS.C_msg_list_container);
-        mailTable = new DragRefetchPagingScrollTable<Message>(
-                cTableModel, dataTable, new FixedWidthFlexTable(),
-                createTableDefinitation(),controller,1);
-        mailTable.setPageSize(20);
-        mailTable.setDragHandler(0,30, new DragHandlerFactory() {
-
-            public Widget createHandler() {
-                return new Image(imageBundle.readyToMoveMailIcon());
-            }
-            
-        });
-        
-        HTML emptyTable = new HTML(constants.emptyMailTable());
-        emptyTable.addStyleName(HupaCSS.C_msg_table_empty);
-        mailTable.setEmptyTableWidget(emptyTable);
-        FixedWidthGridBulkRenderer<Message> bulkRenderer = new FixedWidthGridBulkRenderer<Message>(mailTable.getDataTable(),mailTable);
-        mailTable.setBulkRenderer(bulkRenderer);
-        mailTable.addStyleName(HupaCSS.C_msg_table);
-        mailTable.setCellPadding(0);
-        mailTable.setResizePolicy(ResizePolicy.FILL_WIDTH);
-        mailTable.setColumnResizePolicy(ColumnResizePolicy.MULTI_CELL);
-        mailTable.setScrollPolicy(ScrollPolicy.DISABLED);
-        mailTable.addPageLoadHandler(onMessagePageLoadHandler);
-        mailTable.setPageSize(DEFAULT_MSG_PAGE_SIZE);
-        mailTable.getDataTable().setCellSpacing(0);
-        mailTable.setSortPolicy(SortPolicy.DISABLED);
-
-        mailTable.fillWidth();
-        
-        pagingBar = new PagingOptions(mailTable, constants, loading);
-        
-        HorizontalPanel buttonBar = new HorizontalPanel();
-        buttonBar.addStyleName(HupaCSS.C_buttons);
-        
-        ButtonBar navigatorBar = new ButtonBar();
-        navigatorBar.add(newMailButton);
-        deleteMailButton.setEnabled(false);
-        navigatorBar.add(deleteMailButton);
-        buttonBar.add(navigatorBar);
-        buttonBar.add(deleteAllMailButton);
-        
-        ButtonBar markButtonBar = new ButtonBar();
-        markButtonBar.add(markSeenButton);
-        markButtonBar.add(markUnSeenButton);
-        buttonBar.add(markButtonBar);
-        buttonBar.add(refreshLink);
-        pageBox.addItem("" + DEFAULT_MSG_PAGE_SIZE);
-        pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 2));
-        pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 4));
-        pageBox.addChangeHandler(new ChangeHandler() {
-            public void onChange(ChangeEvent event) {
-                if (pageBox.getSelectedIndex() > 0)
-                    mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
-            }
-        });
-      
-        
-        HorizontalPanel searchPanel = new HorizontalPanel();
-        searchPanel.addStyleName(HupaCSS.C_buttons);
-
-        searchBox.addStyleName(HupaCSS.C_msg_search);
-        searchBox.setAnimationEnabled(true);
-        searchBox.setAutoSelectEnabled(false);
-        searchBox.setLimit(20);
-        searchBox.addKeyUpHandler(new KeyUpHandler() {
-
-            public void onKeyUp(KeyUpEvent event) {
-                if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
-                    searchButton.click();
-                }
-            }
-
-        });
-        searchPanel.add(searchBox);
-        searchPanel.add(searchButton);
-        searchPanel.add(pageBox);
-
-        HorizontalPanel hPanel = new HorizontalPanel();
-        hPanel.addStyleName(HupaCSS.C_msg_top_bar);
-        hPanel.add(buttonBar);
-        hPanel.add(searchPanel);
-        hPanel.setCellHorizontalAlignment(searchPanel, HorizontalPanel.ALIGN_RIGHT);        
-
-        msgListContainer.add(hPanel);
-        
-        CommandsBar commandsBar = new CommandsBar();
-        commandsBar.addLeft(new HTML(constants.select() +":"));
-        commandsBar.addLeft(allLink);
-        commandsBar.addLeft(noneLink);
-        commandsBar.add(loading);
-        commandsBar.addRight(pagingBar);
-        
-        msgListContainer.add(commandsBar);
-        msgListContainer.add(mailTable);
-        
-        confirmBox.setText(messages.confirmDeleteMessages());
-        confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
-        initWidget(msgListContainer);
-    }
-    
-    
-    PageLoadHandler onMessagePageLoadHandler = new PageLoadHandler() {
-
-        public void onPageLoad(PageLoadEvent event) {
-
-            for (int i = 0; i < mailTable.getDataTable().getRowCount(); i++) {
-                mailTable.getDataTable().getRowFormatter().setStyleName(i, HupaCSS.C_msg_table_row);
-                Message msg = mailTable.getRowValue(i);
-                if (msg != null) {
-                    if (msg.getFlags().contains(IMAPFlag.SEEN) == false) {
-                        mailTable.getDataTable().getRowFormatter().addStyleName(i,HupaCSS.C_msg_table_unseen);
-                    } else {
-                        mailTable.getDataTable().getRowFormatter().removeStyleName(i, HupaCSS.C_msg_table_seen);
-                    }
-                }
-            }
-            
-            String nrows = String.valueOf(mailTable.getPageSize());
-            for (int i = 0; i<pageBox.getItemCount(); i++) {
-                if (nrows.equals(pageBox.getItemText(i)))
-                    pageBox.setSelectedIndex(i);
-            }
-        }
-        
-    };
-    
-    private DefaultTableDefinition<Message> createTableDefinitation() {
-        DefaultTableDefinition<Message> def = new DefaultTableDefinition<Message>(createColumnDefinitionList());
-        
-        return def;
-    }
-
-    
-    /**
-       * @return the newly created data table.
-       */
-      private FixedWidthGrid createDataTable() {
-        FixedWidthGrid dataTable = new FixedWidthGrid();
-        dataTable.setSelectionPolicy(SelectionPolicy.CHECKBOX);
-        return dataTable;
-      }
-
-    /**
-     * Create a new List which holds all needed ColumnDefinitions 
-     * 
-     */
-    private List<ColumnDefinition<Message, ?>> createColumnDefinitionList() {
-        List<ColumnDefinition<Message, ?>> cList = new ArrayList<ColumnDefinition<Message, ?>>();
-
-        FromColumnDefination from = new FromColumnDefination();
-        from.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
-        from.setColumnTruncatable(true);
-        from.setPreferredColumnWidth(250);
-        from.setMinimumColumnWidth(150);
-        from.setMaximumColumnWidth(300);
-        cList.add(from);
-
-        
-        SubjectColumnDefination subject =new SubjectColumnDefination();
-        subject.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
-        subject.setColumnTruncatable(true);
-        subject.setPreferredColumnWidth(800);
-        subject.setMinimumColumnWidth(200);
-        cList.add(subject);
-        
-        AttachmentColumnDefination attachment = new AttachmentColumnDefination();
-        attachment.setColumnTruncatable(false);
-        // display an image if the message contains an attachment
-        attachment.setCellRenderer(new CellRenderer<Message, Boolean>() {
-
-            public void renderRowValue(Message rowValue,
-                    ColumnDefinition<Message, Boolean> columnDef,
-                    AbstractCellView<Message> view) {
-                if (columnDef.getCellValue(rowValue)) {
-                    view.setWidget(new Image(imageBundle.attachmentIcon()));
-                } else {
-                    view.setHTML("&nbsp");
-                }
-                
-            }
-            
-        });
-        
-        attachment.setPreferredColumnWidth(20);
-        attachment.setMinimumColumnWidth(15);
-        attachment.setMaximumColumnWidth(25);
-        cList.add(attachment);
-        
-        DateColumnDefination date = new DateColumnDefination();
-        date.setColumnTruncatable(true);
-        // set a special renderer for the date
-        date.setCellRenderer(new CellRenderer<Message, Date>() {
-
-            public void renderRowValue(Message rowValue,
-                    ColumnDefinition<Message, Date> columnDef,
-                    AbstractCellView<Message> view) {
-                DateTimeFormat dtformat;
-                Date rDate = rowValue.getReceivedDate();
-                int rYear = rDate.getYear();
-                int rMonth = rDate.getMonth();
-                int rDay = rDate.getDate();
-                
-                Date now = new Date();
-                int nowYear = now.getYear();
-                int nowMonth = now.getMonth();
-                int nowDay = now.getDate();
-                
-                if (rYear < nowYear) {
-                    dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy");
-                } else if (rMonth < nowMonth || (rMonth == nowMonth && rDay < nowDay)) {
-                    dtformat = DateTimeFormat.getFormat("dd.MMM.");
-                } else if (rDay == nowDay){
-                    dtformat = DateTimeFormat.getFormat("HH:mm");
-                } else {
-
-                    dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy HH:mm");
-                }
-            
-                view.setHTML(dtformat.format(rDate));
-                view.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
-            }
-            
-        });
-        date.setPreferredColumnWidth(100);
-        date.setMinimumColumnWidth(100);
-        date.setMaximumColumnWidth(150);
-        
-        cList.add(date);
-        
-        return cList;
-    }
-    
-   
-
-    
-    /**
-     * ColumnDefination which display if the message contains an attachment
-     * @author Norman
-     *
-     */
-    private static final class AttachmentColumnDefination extends AbstractColumnDefinition<Message, Boolean> {
-
-        @Override
-        public Boolean getCellValue(Message rowValue) {
-            return rowValue.hasAttachment();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, Boolean cellValue) {
-        }
-        
-    }
-
-    /**
-     * ColumnDefination which display the From 
-     *
-     */
-    private static final class FromColumnDefination extends AbstractColumnDefinition<Message, String> {
-
-        @Override
-        public String getCellValue(Message rowValue) {
-            return rowValue.getFrom();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, String cellValue) {
-            rowValue.setFrom(cellValue);
-        }
-        
-    }
-    
-    /**
-     * ColumnDefination which display the Subject
-     *
-     */
-    private static final class SubjectColumnDefination extends AbstractColumnDefinition<Message, String> {
-
-        @Override
-        public String getCellValue(Message rowValue) {
-            return rowValue.getSubject();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, String cellValue) {
-            rowValue.setSubject(cellValue);
-
-        }
-        
-    }
-    
-    /**
-     * ColumnDefination which display the Date
-     * 
-     */
-    private static final class DateColumnDefination extends AbstractColumnDefinition<Message, Date> {
-
-        @Override
-        public Date getCellValue(Message rowValue) {
-            return rowValue.getReceivedDate();
-        }
-
-        @Override
-        public void setCellValue(Message rowValue, Date cellValue) {
-            rowValue.setReceivedDate(cellValue);
-        }
-        
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableSelection()
-     */
-    public HasRowSelectionHandlers getDataTableSelection() {
-        return mailTable.getDataTable();
-    }
-    
-
-    public void reloadData() {
-        mailTable.reloadPage();
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
-     */
-    public void reset() {
-        pageBox.setSelectedIndex(0);
-        cTableModel.clearCache();
-        cTableModel.setRowCount(CachedTableModel.UNKNOWN_ROW_COUNT);
-        mailTable.gotoPage(0, false);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableLoad()
-     */
-    public HasPageLoadHandlers getDataTableLoad() {
-        return mailTable;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
-     */
-    public Widget asWidget() {
-        return this;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick()
-     */
-    public HasClickHandlers getDeleteClick() {
-        return deleteMailButton;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
-     */
-    public HasClickHandlers getNewClick() {
-        return newMailButton;
-    }
-    
-    /**
-     * Renderer which fill empty rows with a whitespace 
-     *
-     * @param <E> RowType
-     */
-    private static final class WhiteSpaceCellRenderer<E> implements CellRenderer<E, String> {
-
-        /*
-         * (non-Javadoc)
-         * @see com.google.gwt.gen2.table.client.CellRenderer#renderRowValue(java.lang.Object, com.google.gwt.gen2.table.client.ColumnDefinition, com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView)
-         */
-        public void renderRowValue(E rowValue,
-                ColumnDefinition<E, String> columnDef, AbstractCellView<E> view) {
-            String cellValue = columnDef.getCellValue(rowValue);
-            if (cellValue == null || cellValue.length() < 1) {
-                view.setHTML("&nbsp");
-            } else {
-                view.setHTML(cellValue);
-            }
-        }
-
-        
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
-     */
-    public Message getData(int rowIndex) {
-        return mailTable.getRowValue(rowIndex);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog()
-     */
-    public HasDialog getConfirmDeleteDialog() {
-        return confirmBox;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteDialogClick()
-     */
-    public HasClickHandlers getConfirmDeleteDialogClick() {
-        return confirmBox;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialog()
-     */
-    public HasDialog getConfirmDeleteAllDialog() {
-        return confirmDeleteAllBox;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialogClick()
-     */
-    public HasClickHandlers getConfirmDeleteAllDialogClick() {
-        return confirmDeleteAllBox;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#deselectAllMessages()
-     */
-    public void deselectAllMessages() {
-        mailTable.getDataTable().deselectAllRows();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick()
-     */
-    public HasClickHandlers getSelectAllClick() {
-        return allLink;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectNoneClick()
-     */
-    public HasClickHandlers getSelectNoneClick() {
-        return noneLink;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages()
-     */
-    public void selectAllMessages() {
-        mailTable.getDataTable().selectAllRows();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectedMessages()
-     */
-    public List<Message> getSelectedMessages() {
-        return mailTable.getSelectedRows();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages(java.util.ArrayList)
-     */
-    public void removeMessages(List<Message> messages) {
-        mailTable.removeRows(messages);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#addTableListener(com.google.gwt.user.client.ui.TableListener)
-     */
-    public void addTableListener(TableListener listener) {
-        dataTable.addTableListener(listener);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeTableListener(com.google.gwt.user.client.ui.TableListener)
-     */
-    public void removeTableListener(TableListener listener) {
-        dataTable.removeTableListener(listener);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#setPostFetchMessageCount(int)
-     */
-    public void setPostFetchMessageCount(int count) {
-        cTableModel.setPostCachedRowCount(count);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
-     */
-    public void redraw() {
-        mailTable.reloadPage();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick()
-     */
-    public HasClickHandlers getDeleteAllClick() {
-        return deleteAllMailButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick()
-     */
-    public HasClickHandlers getMarkSeenClick() {
-        return markSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenClick()
-     */
-    public HasClickHandlers getMarkUnseenClick() {
-        return markUnSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable()
-     */
-    public HasEnable getDeleteEnable() {
-        return deleteMailButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable()
-     */
-    public HasEnable getMarkSeenEnable() {
-        return markSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenEnable()
-     */
-    public HasEnable getMarkUnseenEnable() {
-        return markUnSeenButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRefreshClick()
-     */
-    public HasClickHandlers getRefreshClick() {
-        return refreshLink;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#goToPage(int)
-     */
-    public void goToPage(int page) {
-        if (page != mailTable.getCurrentPage()) {
-            mailTable.gotoPage(page, false);
-        }
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getCurrentPage()
-     */
-    public int getCurrentPage() {
-        return mailTable.getCurrentPage();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTablePageChange()
-     */
-    public HasPageChangeHandlers getDataTablePageChange() {
-        return mailTable;
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRowsPerPageIndex()
-     */
-    public int getRowsPerPageIndex() {
-        return pageBox.getSelectedIndex();
-    }
-    
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRowsPerPageChange()
-     */
-    public HasChangeHandlers getRowsPerPageChange() {
-        return pageBox;
-    }
-    
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchClick()
-     */
-    public HasClickHandlers getSearchClick() {
-        return searchButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchValue()
-     */
-    public HasValue<String> getSearchValue() {
-        return searchBox;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#fillSearchOracle(java.util.ArrayList)
-     */
-    public void fillSearchOracle(List<Message> messages) {
-        for (Message m : messages) {
-            String subject = m.getSubject();
-            String from = m.getFrom();
-            if (subject != null && subject.trim().length() > 0) {
-                oracle.add(subject.trim());
-            }
-            if (from != null && from.trim().length() > 0) {
-                oracle.add(from.trim());
-            }
-        }
-        //searchBox.setText("");
-    }
-
-    public void setExpandLoading(boolean expanding) {
-        if (expanding) {
-            loading.show();
-        } else {
-            loading.hide();
-        }
-    }
-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-public class IMAPMessageListView extends Composite implements IMAPMessageListActivity.Displayable {
-
-	private static final int DEFAULT_MSG_PAGE_SIZE = 25;
-
-	@SuppressWarnings("unused") private HupaMessages messages;
-	private HupaImageBundle imageBundle;
-=======
-	@SuppressWarnings("unused")
-	private HupaMessages messages;
->>>>>>> make the messages list can be selected without bothering the checkbox column's behavior of it.
-=======
-	@SuppressWarnings("unused") private HupaMessages messages;
->>>>>>> fix the main part of issue 11 - delete selected messages.
-
-	private EnableButton deleteMailButton;
-	private Button newMailButton;
-	private Button deleteAllMailButton;
-	private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
-	private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
-	private EnableButton markSeenButton;
-	private EnableButton markUnSeenButton;
-
-	private ListBox pageBox = new ListBox();
-	private Anchor allLink;
-	private Anchor noneLink;
-	private Anchor refreshLink;
-	private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" ,@");
-	private SuggestBox searchBox = new SuggestBox(oracle);
-	private Button searchButton;
-	private Loading loading;
-
-	private SimplePager pager;
-	private EventBus eventBus;
-
-	private User user;
-	private ImapFolder folder;
-	private String searchValue;
-	private HupaRequestFactory requestFactory;
-	public final ProvidesKey<Message> KEY_PROVIDER = new ProvidesKey<Message>() {
-		@Override
-		public Object getKey(Message item) {
-			return item == null ? null : item.getUid();
-		}
-	};
-	private SelectionModel<? super Message> selectionModel;
-
-	public void fetch(final int start) {
-		FetchMessagesRequest messagesRequest = requestFactory.messagesRequest();
-		FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class);
-		final ImapFolder folder1 = messagesRequest.create(ImapFolder.class);
-		folder1.setChildren(folder.getChildren());
-		folder1.setDelimiter(folder.getDelimiter());
-		folder1.setFullName(folder.getFullName());
-		folder1.setMessageCount(folder.getMessageCount());
-		folder1.setName(folder.getName());
-		folder1.setSubscribed(folder.getSubscribed());
-		folder1.setUnseenMessageCount(folder.getUnseenMessageCount());
-		action.setFolder(folder1);
-		action.setOffset(table.getPageSize());
-		action.setSearchString(searchValue);
-		action.setStart(start);
-		messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {
-
-			@Override
-			public void onFailure(ServerFailure error) {
-				if (error.isFatal()) {
-					throw new RuntimeException(error.getMessage());
-				}
-			}
-
-			@Override
-			public void onSuccess(final FetchMessagesResult result) {
-				assert result != null;
-				// folder.setMessageCount(result.getRealCount());// TODO if do
-				// this, there will be auto bean has been frozen.
-				// folder.setUnseenMessageCount(result.getRealUnreadCount());
-				table.setRowCount(result.getRealCount());
-				table.setRowData(start, result.getMessages());
-
-				pager.setPageStart(start);
-				eventBus.fireEvent(new MessagesReceivedEvent(folder1, result.getMessages()));
-			}
-		});
-	}
-
-	private MessagesCellTable table;
-	private boolean pending;
-
-	@Inject
-	public IMAPMessageListView(final HupaConstants constants, final HupaMessages messages, final EventBus eventBus,
-	        final HupaRequestFactory requestFactory, final MessagesCellTable table) {
-		this.table = table;
-		this.eventBus = eventBus;
-		this.requestFactory = requestFactory;
-		selectionModel = table.getSelectionModel();
-		table.addCellPreviewHandler(new Handler<Message>() {
-			@Override
-			public void onCellPreview(CellPreviewEvent<Message> event) {
-				if (hasClickedButFirstCol(event)) {
-					setExpandLoading(true);
-					eventBus.fireEvent(new ExpandMessageEvent(user, folder, event.getValue()));
-				}
-			}
-			private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) {
-				return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
-			}
-
-		});
-		selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
-			@Override
-			public void onSelectionChange(SelectionChangeEvent event) {
-				if (selectedCount() == 0) {
-					toggleButtons(false);
-				} else {
-					toggleButtons(true);
-				}
-			}
-		});
-//		table.getCheckboxCol().setFieldUpdater(new FieldUpdater<Message, Boolean>() {
-//			@Override
-//			public void update(int index, Message object, Boolean value) {
-//				selectionModel.setSelected(object, value);
-//				if (selectedCount() == 0) {
-//					toggleButtons(false);
-//				} else {
-//					toggleButtons(true);
-//				}
-//			}
-//
-//			private int selectedCount() {
-//				return getSelectedMessages().size();
-//			}
-//
-//			private void toggleButtons(boolean b) {
-//				getDeleteEnable().setEnabled(b);
-//				getMarkSeenEnable().setEnabled(b);
-//				getMarkUnseenEnable().setEnabled(b);
-//			}
-//		});
-
-		table.addRangeChangeHandler(new RangeChangeEvent.Handler() {
-			@Override
-			public void onRangeChange(RangeChangeEvent event) {
-				fetch(event.getNewRange().getStart());
-			}
-		});
-		// bind some Events
-		eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
-			public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
-				user = loadMessagesEvent.getUser();
-				folder = loadMessagesEvent.getFolder();
-				searchValue = loadMessagesEvent.getSearchValue();
-				fetch(0);
-
-			}
-		});
-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
-			public void onFolderSelectionEvent(FolderSelectionEvent event) {
-				user = event.getUser();
-				folder = event.getFolder();
-				searchValue = null;
-			}
-		});
-		eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-			public void onLogin(LoginEvent event) {
-				user = event.getUser();
-				folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
-				searchValue = null;
-				if (!pending) {
-					pending = true;
-					Scheduler.get().scheduleFinally(new ScheduledCommand() {
-						@Override
-						public void execute() {
-							pending = false;
-							fetch(0);
-						}
-					});
-				}
-			}
-		});
-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-			public void onLogout(LogoutEvent logoutEvent) {
-				user = null;
-				folder = null;
-				searchValue = null;
-			}
-		});
-
-		this.messages = messages;
-		this.eventBus = eventBus;
-
-		SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
-		pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
-		pager.setDisplay(table);
-
-		deleteMailButton = new EnableButton(constants.deleteMailButton());
-		newMailButton = new Button(constants.newMailButton());
-		deleteAllMailButton = new Button(constants.deleteAll());
-		markSeenButton = new EnableButton(constants.markSeen());
-		markUnSeenButton = new EnableButton(constants.markUnseen());
-		allLink = new Anchor(constants.all());
-		noneLink = new Anchor(constants.none());
-		refreshLink = new Anchor(constants.refresh());
-		searchButton = new Button(constants.searchButton());
-		loading = new Loading(constants.loading());
-
-		DockLayoutPanel solidCenterPanel = new DockLayoutPanel(Unit.EM);
-		// solidCenterPanel.addStyleName(HupaCSS.C_msg_list_container);
-
-		HorizontalPanel buttonBar = new HorizontalPanel();
-		buttonBar.addStyleName(HupaCSS.C_buttons);
-
-		ButtonBar navigatorBar = new ButtonBar();
-		navigatorBar.add(newMailButton);
-		deleteMailButton.setEnabled(false);
-		navigatorBar.add(deleteMailButton);
-		buttonBar.add(navigatorBar);
-		buttonBar.add(deleteAllMailButton);
-
-		ButtonBar markButtonBar = new ButtonBar();
-		markButtonBar.add(markSeenButton);
-		markButtonBar.add(markUnSeenButton);
-		buttonBar.add(markButtonBar);
-		// buttonBar.add(refreshLink); TODO
-
-		pageBox.addItem("" + MessagesCellTable.PAGE_SIZE);
-		pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 2));
-		pageBox.addItem("" + (MessagesCellTable.PAGE_SIZE * 4));
-		pageBox.addChangeHandler(new ChangeHandler() {
-			public void onChange(ChangeEvent event) {
-				// if (pageBox.getSelectedIndex() > 0)
-				table.setVisibleRange(0, Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
-				// mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
-			}
-		});
-
-		HorizontalPanel searchPanel = new HorizontalPanel();
-		searchPanel.addStyleName(HupaCSS.C_buttons);
-
-		searchBox.addStyleName(HupaCSS.C_msg_search);
-		searchBox.setAnimationEnabled(true);
-		searchBox.setAutoSelectEnabled(false);
-		searchBox.setLimit(20);
-		searchBox.addKeyUpHandler(new KeyUpHandler() {
-			public void onKeyUp(KeyUpEvent event) {
-				if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
-					searchButton.click();
-				}
-			}
-		});
-		searchPanel.add(searchBox);
-		searchPanel.add(searchButton);
-
-		HorizontalPanel hPanel = new HorizontalPanel();
-		hPanel.addStyleName(HupaCSS.C_msg_top_bar);
-		hPanel.add(buttonBar);
-		hPanel.add(searchPanel);
-		hPanel.setCellHorizontalAlignment(searchPanel, HorizontalPanel.ALIGN_RIGHT);
-
-		HorizontalPanel pagerBar = new HorizontalPanel();
-
-		pagerBar.add(pager);
-		pagerBar.add(pageBox);
-
-		solidCenterPanel.addNorth(hPanel, 3);
-		solidCenterPanel.addSouth(pagerBar, 2);
-		solidCenterPanel.add(table);
-
-		// msgListContainer.add(mailTable);
-
-		confirmBox.setText(messages.confirmDeleteMessages());
-		confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
-		initWidget(solidCenterPanel);
-	}
-
-	private int selectedCount() {
-		return getSelectedMessages().size();
-	}
-
-	private void toggleButtons(boolean b) {
-		getDeleteEnable().setEnabled(b);
-		getMarkSeenEnable().setEnabled(b);
-		getMarkUnseenEnable().setEnabled(b);
-	}
-	public void reloadData() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
-	 */
-	public void reset() {
-		pageBox.setSelectedIndex(0);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
-	 */
-	public Widget asWidget() {
-		return this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick
-	 * ()
-	 */
-	public HasClickHandlers getDeleteClick() {
-		return deleteMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
-	 */
-	public HasClickHandlers getNewClick() {
-		return newMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
-	 */
-	public Message getData(int rowIndex) {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog
-	 * ()
-	 */
-	public HasDialog getConfirmDeleteDialog() {
-		return confirmBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getConfirmDeleteDialogClick()
-	 */
-	public HasClickHandlers getConfirmDeleteDialogClick() {
-		return confirmBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getConfirmDeleteAllDialog()
-	 */
-	public HasDialog getConfirmDeleteAllDialog() {
-		return confirmDeleteAllBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getConfirmDeleteAllDialogClick()
-	 */
-	public HasClickHandlers getConfirmDeleteAllDialogClick() {
-		return confirmDeleteAllBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * deselectAllMessages()
-	 */
-	public void deselectAllMessages() {
-		// mailTable.getDataTable().deselectAllRows();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick
-	 * ()
-	 */
-	public HasClickHandlers getSelectAllClick() {
-		return allLink;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getSelectNoneClick()
-	 */
-	public HasClickHandlers getSelectNoneClick() {
-		return noneLink;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages
-	 * ()
-	 */
-	public void selectAllMessages() {
-		// mailTable.getDataTable().selectAllRows();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getSelectedMessages()
-	 */
-	@SuppressWarnings("unchecked")
-	public Set<Message> getSelectedMessages() {
-		return ((MultiSelectionModel<Message>) (table.getSelectionModel())).getSelectedSet();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages
-	 * (java.util.ArrayList)
-	 */
-	public void removeMessages(List<Message> messages) {
-		// mailTable.removeRows(messages);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * setPostFetchMessageCount(int)
-	 */
-	public void setPostFetchMessageCount(int count) {
-		// cTableModel.setPostCachedRowCount(count);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
-	 */
-	public void redraw() {
-		// mailTable.reloadPage();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick
-	 * ()
-	 */
-	public HasClickHandlers getDeleteAllClick() {
-		return deleteAllMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick
-	 * ()
-	 */
-	public HasClickHandlers getMarkSeenClick() {
-		return markSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getMarkUnseenClick()
-	 */
-	public HasClickHandlers getMarkUnseenClick() {
-		return markUnSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable
-	 * ()
-	 */
-	public HasEnable getDeleteEnable() {
-		return deleteMailButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable
-	 * ()
-	 */
-	public HasEnable getMarkSeenEnable() {
-		return markSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getMarkUnseenEnable()
-	 */
-	public HasEnable getMarkUnseenEnable() {
-		return markUnSeenButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRefreshClick
-	 * ()
-	 */
-	public HasClickHandlers getRefreshClick() {
-		return refreshLink;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#goToPage(int)
-	 */
-	public void goToPage(int page) {
-		// if (page != mailTable.getCurrentPage()) {
-		// mailTable.gotoPage(page, false);
-		// }
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getCurrentPage
-	 * ()
-	 */
-	public int getCurrentPage() {
-		return 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getRowsPerPageIndex()
-	 */
-	public int getRowsPerPageIndex() {
-		return pageBox.getSelectedIndex();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
-	 * getRowsPerPageChange()
-	 */
-	public HasChangeHandlers getRowsPerPageChange() {
-		return pageBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchClick()
-	 */
-	public HasClickHandlers getSearchClick() {
-		return searchButton;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchValue()
-	 */
-	public HasValue<String> getSearchValue() {
-		return searchBox;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.apache.hupa.client.mvp.MainPresenter.Display#fillSearchOracle(java
-	 * .util.ArrayList)
-	 */
-	public void fillSearchOracle(List<Message> messages) {
-		for (Message m : messages) {
-			String subject = m.getSubject();
-			String from = m.getFrom();
-			if (subject != null && subject.trim().length() > 0) {
-				oracle.add(subject.trim());
-			}
-			if (from != null && from.trim().length() > 0) {
-				oracle.add(from.trim());
-			}
-		}
-		// searchBox.setText("");
-	}
-
-	public void setExpandLoading(boolean expanding) {
-		if (expanding) {
-			loading.show();
-		} else {
-			loading.hide();
-		}
-	}
-<<<<<<< HEAD
->>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator 
-=======
-
-	@Override
-	public MessagesCellTable getTable() {
-		return table;
-	}
->>>>>>> fix the main part of issue 11 - delete selected messages.
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/MessageSendView.java b/client/src/main/java/org/apache/hupa/client/ui/MessageSendView.java
deleted file mode 100644
index 614bfd0..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/MessageSendView.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.ui;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import eu.maydu.gwt.validation.client.DefaultValidationProcessor;
-import eu.maydu.gwt.validation.client.ValidationProcessor;
-import eu.maydu.gwt.validation.client.i18n.ValidationMessages;
-import gwtupload.client.BaseUploadStatus;
-import gwtupload.client.IFileInput.FileInputType;
-=======
-=======
->>>>>>> 1. improve the inbox folder place.
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-
-=======
->>>>>>> fix bugs, including 1)folders appending on west panel; 2)unread email folder's been frozen exception; 3)back, logout, ...buttons wired behavior.
-import eu.maydu.gwt.validation.client.DefaultValidationProcessor;
-import eu.maydu.gwt.validation.client.ValidationProcessor;
-import eu.maydu.gwt.validation.client.i18n.ValidationMessages;
-import gwtupload.client.BaseUploadStatus;
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
-import gwtupload.client.IFileInput.FileInputType;
->>>>>>> fix bugs, including 1)folders appending on west panel; 2)unread email folder's been frozen exception; 3)back, logout, ...buttons wired behavior.
-import gwtupload.client.IUploadStatus;
-import gwtupload.client.IUploader;
-import gwtupload.client.MultiUploader;
-
-import org.apache.hupa.client.HupaCSS;
-import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.HupaMessages;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.activity.MessageSendActivity;
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
-import org.apache.hupa.client.activity.MessageSendActivity;
->>>>>>> fix bugs, including 1)folders appending on west panel; 2)unread email folder's been frozen exception; 3)back, logout, ...buttons wired behavior.
-import org.apache.hupa.client.validation.AddStyleAction;
-import org.apache.hupa.client.validation.EmailListValidator;
-import org.apache.hupa.client.validation.NotEmptyValidator;
-import org.apache.hupa.client.validation.SetFocusAction;
-import org.apache.hupa.client.widgets.CommandsBar;
-import org.apache.hupa.client.widgets.EnableButton;
-import org.apache.hupa.client.widgets.MessageHeaders;
-import org.apache.hupa.shared.SConsts;
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
-import org.apache.hupa.widgets.editor.Editor;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.widgets.ui.HasEnable;
-import org.apache.hupa.widgets.ui.Loading;
-import org.apache.hupa.widgets.ui.MultiValueSuggestArea;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Anchor;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-=======
-=======
->>>>>>> 1. improve the inbox folder place.
-import org.apache.hupa.widgets.ui.EnableHyperlink;
-import org.apache.hupa.widgets.ui.HasEnable;
-import org.apache.hupa.widgets.ui.Loading;
-import org.apache.hupa.widgets.ui.MultiValueSuggestArea;
-import org.apache.hupa.client.activity.MessageSendActivity;
-<<<<<<< HEAD
->>>>>>> 1. improve the inbox folder place.
-=======
->>>>>>> 1. improve the inbox folder place.
-=======
-import org.apache.hupa.widgets.ui.HasEnable;
-import org.apache.hupa.widgets.ui.Loading;
-import org.apache.hupa.widgets.ui.MultiValueSuggestArea;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Anchor;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Focusable;
-import com.google.gwt.user.client.ui.HasHTML;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
->>>>>>> fix bugs, including 1)folders appending on west panel; 2)unread email folder's been frozen exception; 3)back, logout, ...buttons wired behavior.
-
-/**
- * View which displays a form which handle sending of mails
- * 
- *
- */
-public class MessageSendView extends Composite implements MessageSendActivity.Displayable {
-
-    final VerticalPanel sendContainer = new VerticalPanel();
-    
-    private MessageHeaders headers;
-    
-    private Editor editor;
-    private CommandsBar buttonsBar = new CommandsBar();
-
-    private Label from = new Label();
-    
-    private MultiValueSuggestArea to = new MultiValueSuggestArea(" ,@<>");
-    // we only need one instance for all suggestion-boxes
-    private MultiValueSuggestArea cc = new MultiValueSuggestArea(to.getOracle());
-    private MultiValueSuggestArea bcc = new MultiValueSuggestArea(to.getOracle());
-    
-    private TextBox subject = new TextBox();
-    private MultiUploader uploader = null;
-    
-    private EnableButton sendButton;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private Anchor backButton;
-=======
-    private EnableHyperlink backButton;
->>>>>>> 1. improve the inbox folder place.
-=======
-    private EnableHyperlink backButton;
->>>>>>> 1. improve the inbox folder place.
-=======
-    private Anchor backButton;
->>>>>>> fix bugs, including 1)folders appending on west panel; 2)unread email folder's been frozen exception; 3)back, logout, ...buttons wired behavior.
-    private Loading loading;
-    
-    private ValidationProcessor validator;
-
-    @Inject
-    public MessageSendView(HupaConstants constants, HupaMessages messages) {
-        
-        sendButton = new EnableButton(constants.sendButton());
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        backButton = new Anchor(constants.backButton());
-=======
-        backButton = new EnableHyperlink(constants.backButton(),"");
->>>>>>> 1. improve the inbox folder place.
-=======
-        backButton = new EnableHyperlink(constants.backButton(),"");
->>>>>>> 1. improve the inbox folder place.
-=======
-        backButton = new Anchor(constants.backButton());
->>>>>>> fix bugs, including 1)folders appending on west panel; 2)unread email folder's been frozen exception; 3)back, logout, ...buttons wired behavior.
-        headers = new MessageHeaders(constants);
-        loading = new Loading(constants.loading());
-        editor = new Editor(constants);
-        
-        BaseUploadStatus uploadStatus = new BaseUploadStatus();
-        uploadStatus.setCancelConfiguration(IUploadStatus.GMAIL_CANCEL_CFG);
-        uploader = new MultiUploader(FileInputType.ANCHOR, uploadStatus);
-        uploader.setServletPath(GWT.getModuleBaseURL() + SConsts.SERVLET_UPLOAD);
-        uploader.avoidRepeatFiles(true);
-        uploader.setI18Constants(constants);        
-        
-        sendContainer.addStyleName(HupaCSS.C_msgsend_container);
-        
-        buttonsBar.add(sendButton);
-        buttonsBar.add(loading);
-        buttonsBar.add(backButton);
-        
-        sendContainer.add(headers);
-        sendContainer.add(buttonsBar);
-
-        sendContainer.add(editor);
-
-        loading.hide();
-
-        initWidget(sendContainer);
-        
-        SetFocusAction fAction = new SetFocusAction();
-        AddStyleAction sAction = new AddStyleAction(HupaCSS.C_validate, 3000);
-        validator = new DefaultValidationProcessor(new ValidationMessages(messages));
-        validator.addValidators("cc", 
-                new EmailListValidator(getCcText()).addActionForFailure(sAction).addActionForFailure(fAction));
-        validator.addValidators("bcc", 
-                new EmailListValidator(getBccText()).addActionForFailure(sAction).addActionForFailure(fAction));
-        validator.addValidators("to", 
-                new EmailListValidator(getToText()).addActionForFailure(sAction).addActionForFailure(fAction),
-                new NotEmptyValidator(getToText()).addActionForFailure(sAction).addActionForFailure(fAction));
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
-     */
-    public Widget asWidget() {
-        return this;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#setLoading(boolean)
-     */ 
-    public void setLoading(boolean load) {
-        if (load) {
-            loading.show();
-            sendButton.setEnabled(false);
-            backButton.setEnabled(false);
-        } else {
-            loading.hide();
-            sendButton.setEnabled(true);
-            backButton.setEnabled(true);
-        }
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getBccText()
-     */
-    public HasText getBccText() {
-        return bcc;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getCcText()
-     */
-    public HasText getCcText() {
-        return cc;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getFromText()
-     */
-    public HasText getFromText() {
-        return from;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getMessageText()
-     */
-    public HasText getMessageText() {
-        return editor;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getSubjectText()
-     */
-    public HasText getSubjectText() {
-        return subject;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getToText()
-     */
-    public HasText getToText() {
-        return to;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getSendClick()
-     */
-    public HasClickHandlers getSendClick() {
-        return sendButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getUploader()
-     */
-    public IUploader getUploader() {
-        return uploader;
-    }
-
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getSendEnable()
-     */
-    public HasEnable getSendEnable() {
-        return sendButton;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getBackButtonClick()
-     */
-    public HasClickHandlers getBackButtonClick() {
-        return backButton;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getMessageHTML()
-     */
-    public HasHTML getMessageHTML() {
-        return editor;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#getEditorFocus()
-     */
-    public Focusable getEditorFocus() {
-        return editor;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.hupa.client.mvp.MessageSendPresenter.Display#refresh()
-     */
-    public void refresh() {
-        if (to.getText().length() == 0)
-            to.setText(" ");
-        headers.setValues(from, to, cc, bcc, subject, uploader);
-    }
-    
-    public void fillContactList(Contact[] contacts){
-        to.fillOracle(contacts);
-    }
-
-    public boolean validate() {
-        return validator.validate();
-    }
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java b/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java
deleted file mode 100644
index fe96cbc..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-package org.apache.hupa.client.ui;

-

-import java.util.ArrayList;

-import java.util.Iterator;

-

-<<<<<<< HEAD
-import net.customware.gwt.dispatch.client.DispatchAsync;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.evo.HupaEvoCallback;

-<<<<<<< HEAD
-=======
-import org.apache.hupa.client.HupaEvoCallback;

->>>>>>> Change to new mvp framework - first step
-=======
-import org.apache.hupa.client.evo.HupaEvoCallback;

->>>>>>> Make the evo more clear.
-import org.apache.hupa.shared.data.IMAPFolder;

-=======
-import org.apache.hupa.shared.data.ImapFolderImpl;

-<<<<<<< HEAD
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-import org.apache.hupa.shared.data.Message;

-=======
->>>>>>> try to change fetch messages to use RF
-=======
-import org.apache.hupa.client.rf.FetchMessagesRequest;

-import org.apache.hupa.client.rf.HupaRequestFactory;

-import org.apache.hupa.shared.data.ImapFolderImpl;

-import org.apache.hupa.shared.domain.FetchMessagesAction;

-import org.apache.hupa.shared.domain.FetchMessagesResult;

->>>>>>> try to fetch messages, yet can not fire the login event in ModelTable such that just get a NullPointerException in it.
-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.Message;

-import org.apache.hupa.shared.domain.User;

-import org.apache.hupa.shared.events.FolderSelectionEvent;

-import org.apache.hupa.shared.events.FolderSelectionEventHandler;

-import org.apache.hupa.shared.events.LoadMessagesEvent;

-import org.apache.hupa.shared.events.LoadMessagesEventHandler;

-import org.apache.hupa.shared.events.LoginEvent;

-import org.apache.hupa.shared.events.LoginEventHandler;

-import org.apache.hupa.shared.events.LogoutEvent;

-import org.apache.hupa.shared.events.LogoutEventHandler;

-import org.apache.hupa.shared.events.MessagesReceivedEvent;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
->>>>>>> Change to new mvp framework - first step
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.shared.rpc.FetchMessages;

-import org.apache.hupa.shared.rpc.FetchMessagesResult;

-=======
->>>>>>> try to fetch messages, yet can not fire the login event in ModelTable such that just get a NullPointerException in it.
-

-import com.google.gwt.event.shared.EventBus;

-import com.google.gwt.gen2.table.client.MutableTableModel;

-import com.google.gwt.gen2.table.client.TableModelHelper;

-import com.google.gwt.gen2.table.client.TableModelHelper.Request;

-import com.google.inject.Inject;

-import com.google.web.bindery.requestfactory.shared.Receiver;

-import com.google.web.bindery.requestfactory.shared.ServerFailure;

-

-/**

- * TableModel which retrieve the messages for the user

- * 

- */

-public class MessageTableModel extends MutableTableModel<Message> {

-

-<<<<<<< HEAD
-    private EventBus eventBus;

-    private User user;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;

-=======
-    private IMAPFolder folder;

->>>>>>> Change to new mvp framework - first step
-=======
-    private IMAPFolderProxy folder;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private String searchValue;

-

-    @Inject

-    public MessageTableModel(EventBus eventBus){

-        

-        this.eventBus = eventBus;

-//        this.dispatcher = dispatcher;

-

-        // bind some Events 

-        eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {

-            

-            public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {

-                user = loadMessagesEvent.getUser();

-                folder = loadMessagesEvent.getFolder();

-                searchValue = loadMessagesEvent.getSearchValue();

-            }

-        });

-        eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {

-            

-            public void onFolderSelectionEvent(FolderSelectionEvent event) {

-                user = event.getUser();

-                folder = event.getFolder();

-                searchValue = null;

-            }

-        });

-        eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {

-            

-            public void onLogin(LoginEvent event) {

-                user = event.getUser();

-<<<<<<< HEAD
-<<<<<<< HEAD
-//                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());

-=======
-                folder = new IMAPFolder(user.getSettings().getInboxFolderName());

->>>>>>> Change to new mvp framework - first step
-=======
-//                folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-                searchValue = null;

-            }

-        });

-        eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {

-            

-            public void onLogout(LogoutEvent logoutEvent) {

-                user = null;

-                folder = null;

-                searchValue = null;

-            }

-        });

-        

-        

-    }

-

-    @Override 

-    public void requestRows(

-            final Request request,

-            final com.google.gwt.gen2.table.client.TableModel.Callback<Message> callback) {

-        

-        // if the given user or folder is null, its safe to return an empty list

-        if (user == null || folder == null) {

-            callback.onRowsReady(request, new TableModelHelper.Response<Message>() {

-

-                @Override

-                public Iterator<Message> getRowValues() {

-                    return new ArrayList<Message>().iterator();

-                }

-                

-            });

-        }

-        

-//        dispatcher.execute(new FetchMessages(folder, request.getStartRow(), request.getNumRows(), searchValue),new HupaEvoCallback<FetchMessagesResult>(dispatcher, eventBus) {

-//            public void callback(final FetchMessagesResult result) {

-//                // Update folder information before notifying presenter

-//                folder.setMessageCount(result.getRealCount());

-//                folder.setUnseenMessageCount(result.getRealUnreadCount());

-//                

-//                setRowCount(result.getRealCount());

-//                callback.onRowsReady(request, new TableModelHelper.Response<Message>() {

-//                    @Override

-//                    public Iterator<Message> getRowValues() {

-//                        if (result != null && result.getMessages() != null) {

-//                            return result.getMessages().iterator();

-//                        } else {

-//                            return new ArrayList<Message>().iterator();

-//                        }

-//                    }

-//                });

-//                

-//                // Notify presenter to update folder tree view

-//                eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages()));

-//            }

-//        }); 

-    }

-

-    @Override

-    protected boolean onRowInserted(int beforeRow) {

-        return true;

-    }

-

-    @Override

-    protected boolean onRowRemoved(int row) {    

-        return true;

-    }

-

-    @Override

-    protected boolean onSetRowValue(int row, Message rowValue) {

-        return true;

-    }

-=======
-	private EventBus eventBus;

-	private User user;

-	private ImapFolder folder;

-	private String searchValue;

-	private HupaRequestFactory requestFactory;

-

-	@Inject

-	public MessageTableModel(EventBus eventBus, HupaRequestFactory requestFactory) {

-

-		this.eventBus = eventBus;

-		this.requestFactory = requestFactory;

-

-		// bind some Events

-		eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {

-

-			public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {

-				user = loadMessagesEvent.getUser();

-				folder = loadMessagesEvent.getFolder();

-				searchValue = loadMessagesEvent.getSearchValue();

-			}

-		});

-		eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {

-

-			public void onFolderSelectionEvent(FolderSelectionEvent event) {

-				user = event.getUser();

-				folder = event.getFolder();

-				searchValue = null;

-			}

-		});

-		eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {

-

-			public void onLogin(LoginEvent event) {

-				user = event.getUser();

-				folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());

-				searchValue = null;

-			}

-		});

-		eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {

-

-			public void onLogout(LogoutEvent logoutEvent) {

-				user = null;

-				folder = null;

-				searchValue = null;

-			}

-		});

-

-	}

-

-	@Override

-	public void requestRows(final Request request,

-	        final com.google.gwt.gen2.table.client.TableModel.Callback<Message> callback) {

-

-		// if the given user or folder is null, its safe to return an empty list

-		if (user == null || folder == null) {

-			callback.onRowsReady(request, new TableModelHelper.Response<Message>() {

-				@Override

-				public Iterator<Message> getRowValues() {

-					return new ArrayList<Message>().iterator();

-				}

-			});

-			return;

-		}

-		FetchMessagesRequest messagesRequest = requestFactory.messagesRequest();

-		final FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class);

-		final ImapFolder folder1 = messagesRequest.create(ImapFolder.class);

-		// FIXME cannot put setFolder to the first place

-		folder1.setChildren(this.folder.getChildren());

-		folder1.setDelimiter(this.folder.getDelimiter());

-		folder1.setFullName(this.folder.getFullName());

-		folder1.setMessageCount(this.folder.getMessageCount());

-		folder1.setName(this.folder.getName());

-		folder1.setSubscribed(this.folder.getSubscribed());

-		folder1.setUnseenMessageCount(this.folder.getUnseenMessageCount());

-		action.setOffset(request.getNumRows());

-		action.setFolder(folder1);

-		action.setSearchString(searchValue);

-		action.setStart(request.getStartRow());

-		messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {

-

-			@Override

-			public void onFailure(ServerFailure error) {

-				if (error.isFatal()) {

-					throw new RuntimeException(error.getMessage());

-				}

-			}

-			@Override

-			public void onSuccess(final FetchMessagesResult result) {

-				assert result != null;

-				folder.setMessageCount(result.getRealCount());

-				folder.setUnseenMessageCount(result.getRealUnreadCount());

-				setRowCount(result.getRealCount());

-				callback.onRowsReady(request, new TableModelHelper.Response<Message>() {

-					@Override

-					public Iterator<Message> getRowValues() {

-						if (result != null && result.getMessages() != null) {

-							return result.getMessages().iterator();

-						} else {

-							return new ArrayList<Message>().iterator();

-						}

-					}

-				});

-

-				// Notify presenter to update folder tree view

-				eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages()));

-			}

-		});

-

-		// dispatcher.execute(new FetchMessages(folder, request.getStartRow(),

-		// request.getNumRows(), searchValue),new

-		// HupaEvoCallback<FetchMessagesResult>(dispatcher, eventBus) {

-		// public void callback(final FetchMessagesResult result) {

-		// // Update folder information before notifying presenter

-		// folder.setMessageCount(result.getRealCount());

-		// folder.setUnseenMessageCount(result.getRealUnreadCount());

-		//

-		// setRowCount(result.getRealCount());

-		// callback.onRowsReady(request, new

-		// TableModelHelper.Response<Message>() {

-		// @Override

-		// public Iterator<Message> getRowValues() {

-		// if (result != null && result.getMessages() != null) {

-		// return result.getMessages().iterator();

-		// } else {

-		// return new ArrayList<Message>().iterator();

-		// }

-		// }

-		// });

-		//

-		// // Notify presenter to update folder tree view

-		// eventBus.fireEvent(new MessagesReceivedEvent(folder,

-		// result.getMessages()));

-		// }

-		// });

-	}

-

-	@Override

-	protected boolean onRowInserted(int beforeRow) {

-		return true;

-	}

-

-	@Override

-	protected boolean onRowRemoved(int row) {

-		return true;

-	}

-

-	@Override

-	protected boolean onSetRowValue(int row, Message rowValue) {

-		return true;

-	}

->>>>>>> try to fetch messages, yet can not fire the login event in ModelTable such that just get a NullPointerException in it.
-}

diff --git a/client/src/main/java/org/apache/hupa/client/ui/SettingEcsPanel.java b/client/src/main/java/org/apache/hupa/client/ui/SettingEcsPanel.java
deleted file mode 100644
index a43bbc1..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/SettingEcsPanel.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.ui;
-
-import org.apache.hupa.client.activity.StatusActivity;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.SimpleLayoutPanel;
-
-public class SettingEcsPanel extends Composite implements StatusActivity.Displayable {
-
-	public SettingEcsPanel() {
-		initWidget(binder.createAndBindUi(this));
-	}
-
-	interface Binder extends UiBinder<SimpleLayoutPanel, SettingEcsPanel> {
-	}
-
-	private static Binder binder = GWT.create(Binder.class);
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/SettingEcsPanel.ui.xml b/client/src/main/java/org/apache/hupa/client/ui/SettingEcsPanel.ui.xml
deleted file mode 100644
index ef3ebec..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/SettingEcsPanel.ui.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
-	license agreements. See the NOTICE file distributed with this work for additional 
-	information regarding copyright ownership. The ASF licenses this file to 
-	you under the Apache License, Version 2.0 (the "License"); you may not use 
-	this file except in compliance with the License. You may obtain a copy of 
-	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
-	by applicable law or agreed to in writing, software distributed under the 
-	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
-	OF ANY KIND, either express or implied. See the License for the specific 
-	language governing permissions and limitations under the License. -->
-
-<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
-	xmlns:g='urn:import:com.google.gwt.user.client.ui'>
-
-	<ui:style src="res/CssSplitLayoutPanel.css">
-		.uibox {
-			border: 1px solid #a3a3a3;
-			border-radius: 4px;
-			overflow: hidden;
-			box-shadow: 0 0 2px #999;
-			-o-box-shadow: 0 0 2px #999;
-			-webkit-box-shadow: 0 0 2px #999;
-			-moz-box-shadow: 0 0 2px #999;
-			background: #fff;
-		}
-		
-		.listbox {
-			background: #d9ecf4;
-			overflow: hidden;
-		}
-		
-		.listbox .scroller {
-			position: absolute;
-			top: 0;
-			left: 0;
-			width: 100%;
-			bottom: 0;
-			overflow-x: hidden;
-			overflow-y: auto;
-		}
-		
-		.listbox .scroller.withfooter {
-			bottom: 42px;
-		}
-		
-		.listbox .boxtitle+.scroller {
-			top: 34px;
-		}
-		
-		.boxtitle,.uibox .listing thead td {
-			font-size: 12px;
-			font-weight: bold;
-			padding: 10px 8px 3px 8px;
-			height: 20px; /* doesn't affect table-cells in FF */
-			margin: 0;
-			text-shadow: 0px 1px 1px #fff;
-			border-bottom: 1px solid #bbd3da;
-			white-space: nowrap;
-		}
-		
-		.uibox .boxtitle,.uibox .listing thead td {
-			background: #b0ccd7;
-			color: #004458;
-			border-radius: 4px 4px 0 0;
-		}
-		
-		.contentbox .boxtitle {
-			color: #777;
-			background: #eee;
-			background: -moz-linear-gradient(top, #eee 0%, #dfdfdf 100%);
-			background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eee),
-				color-stop(100%, #dfdfdf) );
-			background: -o-linear-gradient(top, #eee 0%, #dfdfdf 100%);
-			background: -ms-linear-gradient(top, #eee 0%, #dfdfdf 100%);
-			background: linear-gradient(top, #eee 0%, #dfdfdf 100%);
-			border-bottom: 1px solid #ccc;
-		}
-		
-		.contentbox .scroller {
-			position: absolute;
-			top: 34px;
-			left: 0;
-			right: 0;
-			bottom: 28px;
-			overflow: auto;
-		}
-		
-		body.iframe .boxtitle {
-			position: fixed;
-			top: 0;
-			left: 0;
-			width: 100%;
-			z-index: 100;
-		}
-		
-		.boxcontent {
-			padding: 10px;
-		}
-	</ui:style>
-	<g:SimpleLayoutPanel addStyleNames="{style.uibox} {style.contentbox}">
-		<g:HTMLPanel>
-			<h2 class="{style.boxtitle}">Envelope-Content Splitting(ECS)</h2>
-			<g:FlowPanel addStyleNames="{style.boxcontent}">
-				<g:SimplePanel ui:field="ecsSettingContainer" />
-			</g:FlowPanel>
-			<div class="{style.statusbar}" />
-		</g:HTMLPanel>
-	</g:SimpleLayoutPanel>
-</ui:UiBinder>
\ No newline at end of file
diff --git a/client/src/main/java/org/apache/hupa/client/ui/SettingLabelPanel.java b/client/src/main/java/org/apache/hupa/client/ui/SettingLabelPanel.java
deleted file mode 100644
index 70d4da2..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/SettingLabelPanel.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.client.ui;
-
-import org.apache.hupa.client.activity.StatusActivity;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.ui.AcceptsOneWidget;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.SimpleLayoutPanel;
-import com.google.gwt.user.client.ui.SimplePanel;
-import com.google.gwt.user.client.ui.SplitLayoutPanel;
-import com.google.gwt.user.client.ui.Widget;
-
-public class SettingLabelPanel extends Composite implements StatusActivity.Displayable {
-
-
-	@UiField SimpleLayoutPanel labelListContainer;
-	@UiField SimplePanel labelPropertiesContainer;
-	public SettingLabelPanel() {
-		initWidget(binder.createAndBindUi(this));
-	}
-
-	public AcceptsOneWidget getLabelListView() {
-		return new AcceptsOneWidget() {
-			@Override
-			public void setWidget(IsWidget w) {
-				labelListContainer.setWidget(Widget.asWidgetOrNull(w));
-			}
-		};
-	}
-
-	public AcceptsOneWidget getLabelPropertiesView() {
-		return new AcceptsOneWidget() {
-			@Override
-			public void setWidget(IsWidget w) {
-				labelPropertiesContainer.setWidget(Widget.asWidgetOrNull(w));
-			}
-		};
-	}
-
-	interface Binder extends UiBinder<SplitLayoutPanel, SettingLabelPanel> {
-	}
-
-	private static Binder binder = GWT.create(Binder.class);
-
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/SettingLabelPanel.ui.xml b/client/src/main/java/org/apache/hupa/client/ui/SettingLabelPanel.ui.xml
deleted file mode 100644
index dc7ea30..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/SettingLabelPanel.ui.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
-	license agreements. See the NOTICE file distributed with this work for additional 
-	information regarding copyright ownership. The ASF licenses this file to 
-	you under the Apache License, Version 2.0 (the "License"); you may not use 
-	this file except in compliance with the License. You may obtain a copy of 
-	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
-	by applicable law or agreed to in writing, software distributed under the 
-	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
-	OF ANY KIND, either express or implied. See the License for the specific 
-	language governing permissions and limitations under the License. -->
-
-<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
-	xmlns:g='urn:import:com.google.gwt.user.client.ui'>
-	
-    <ui:style src="res/CssSplitLayoutPanel.css">
-            .uibox {
-                border: 1px solid #a3a3a3;
-                border-radius: 4px;
-                overflow: hidden;
-                box-shadow: 0 0 2px #999;
-                -o-box-shadow: 0 0 2px #999;
-                -webkit-box-shadow: 0 0 2px #999;
-                -moz-box-shadow: 0 0 2px #999;
-                background: #fff;
-            }
-            
-            .listbox {
-                background: #d9ecf4;
-                overflow: hidden;
-            }
-            
-            .listbox .scroller {
-                position: absolute;
-                top: 0;
-                left: 0;
-                width: 100%;
-                bottom: 0;
-                overflow-x: hidden;
-                overflow-y: auto;
-            }
-            
-            .listbox .scroller.withfooter {
-                bottom: 42px;
-            }
-            
-            .listbox .boxtitle+.scroller {
-                top: 34px;
-            }
-            
-            .boxtitle,.uibox .listing thead td {
-                font-size: 12px;
-                font-weight: bold;
-                padding: 10px 8px 3px 8px;
-                height: 20px; /* doesn't affect table-cells in FF */
-                margin: 0;
-                text-shadow: 0px 1px 1px #fff;
-                border-bottom: 1px solid #bbd3da;
-                white-space: nowrap;
-            }
-            
-            .uibox .boxtitle,.uibox .listing thead td {
-                background: #b0ccd7;
-                color: #004458;
-                border-radius: 4px 4px 0 0;
-            }
-            
-            .contentbox .boxtitle {
-                color: #777;
-                background: #eee;
-                background: -moz-linear-gradient(top, #eee 0%, #dfdfdf 100%);
-                background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eee),
-                    color-stop(100%, #dfdfdf) );
-                background: -o-linear-gradient(top, #eee 0%, #dfdfdf 100%);
-                background: -ms-linear-gradient(top, #eee 0%, #dfdfdf 100%);
-                background: linear-gradient(top, #eee 0%, #dfdfdf 100%);
-                border-bottom: 1px solid #ccc;
-            }
-            
-            .contentbox .scroller {
-                position: absolute;
-                top: 34px;
-                left: 0;
-                right: 0;
-                bottom: 28px;
-                overflow: auto;
-            }
-            
-            body.iframe .boxtitle {
-                position: fixed;
-                top: 0;
-                left: 0;
-                width: 100%;
-                z-index: 100;
-            }
-            
-            .boxcontent {
-                padding: 10px;
-            }
-        </ui:style>
-	<g:SplitLayoutPanel ui:field="thisPanel">
-		<g:west size="260">
-			<g:DockLayoutPanel addStyleNames="{style.listbox} {style.uibox}">
-				<g:north size="34">
-					<g:HTML>
-						<h2 class="{style.boxtitle}">Folders</h2>
-					</g:HTML>
-				</g:north>
-				<g:center>
-					<g:SimpleLayoutPanel ui:field="labelListContainer" />
-				</g:center>
-			</g:DockLayoutPanel>
-		</g:west>
-		<g:center>
-			<g:SimpleLayoutPanel addStyleNames="{style.uibox} {style.contentbox}">
-				<g:HTMLPanel>
-					<h2 class="{style.boxtitle}">Folder properties</h2>
-					<g:FlowPanel addStyleNames="{style.boxcontent}">
-						<g:SimplePanel ui:field="labelPropertiesContainer"></g:SimplePanel>
-					</g:FlowPanel>
-					<div class="{style.statusbar}" />
-				</g:HTMLPanel>
-			</g:SimpleLayoutPanel>
-		</g:center>
-	</g:SplitLayoutPanel>
-</ui:UiBinder>
\ No newline at end of file
diff --git a/client/src/main/java/org/apache/hupa/client/ui/TopView.java b/client/src/main/java/org/apache/hupa/client/ui/TopView.java
deleted file mode 100644
index f857e30..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/TopView.java
+++ /dev/null
@@ -1,405 +0,0 @@
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-<<<<<<< HEAD
-package org.apache.hupa.client.ui;
-
-import org.apache.hupa.client.HupaCSS;
-import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.activity.TopActivity;
-import org.apache.hupa.shared.events.ServerStatusEvent.ServerStatus;
-import org.apache.hupa.widgets.ui.RndPanel;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.ui.Anchor;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.google.inject.Inject;
-
-public class TopView extends Composite implements TopActivity.Displayable {
-	@UiField HorizontalPanel buttonContainer;
-	@UiField HorizontalPanel infoContainer;
-	@UiField HorizontalPanel loginInfoPanel;
-	private Label loginLabel = new Label();
-	@UiField Label loginUserLabel;
-	@UiField Anchor mainButton;
-	private Anchor contactsButton;
-	@UiField Anchor logoutButton;
-	@UiField Label appnameLabel;
-
-	private RndPanel flashContainer = new RndPanel();
-	private Label flashLabel = new Label();
-	@UiField Label extraLabel;
-
-	@Inject
-	public TopView(HupaConstants constants) {
-		initWidget(binder.createAndBindUi(this));
-		mainButton.setText(constants.mailTab());
-		contactsButton = new Anchor(constants.contactsTab());
-		logoutButton.setText(constants.logoutButton());
-		loginLabel.addStyleName(HupaCSS.C_login_info_label);
-		logoutButton.addStyleName(HupaCSS.C_menu_button);
-		appnameLabel.addStyleName(HupaCSS.C_header);
-		flashContainer.addStyleName(HupaCSS.C_flash);
-		loginLabel.setText(constants.loginAs() + ": ");
-		appnameLabel.setText(constants.productName());
-		infoContainer.add(appnameLabel);
-		infoContainer.add(extraLabel);
-		flashContainer.add(flashLabel);
-		showTopNavigation(false);
-	}
-
-	@Override
-	public HasClickHandlers getLogoutClick() {
-		return logoutButton;
-	}
-
-	@Override
-	public HasClickHandlers getContactsClick() {
-		return contactsButton;
-	}
-
-	@Override
-	public HasClickHandlers getMainClick() {
-		return mainButton;
-	}
-
-	@Override
-	public void showTopNavigation(boolean show) {
-		buttonContainer.setVisible(show);
-	}
-
-	@Override
-	public void showContactsButton() {
-		mainButton.setVisible(false);
-		contactsButton.setVisible(true);
-	}
-
-	@Override
-	public void showMainButton() {
-		mainButton.setVisible(true);
-		contactsButton.setVisible(false);
-	}
-
-	@Override
-	public HasText getUserText() {
-		return loginUserLabel;
-	}
-
-	@Override
-	public void setServerStatus(ServerStatus status) {
-		if (status == ServerStatus.Available)
-			showMessage("Server available.", 20000);
-		else
-			showMessage("Server unavailable", 0);
-	}
-
-	@Override
-	public void showMessage(String message, int millisecs) {
-		flashLabel.setText(message);
-		flashContainer.setVisible(true);
-		if (millisecs > 0)
-			hideMessage.schedule(millisecs);
-	}
-
-	private final Timer hideMessage = new Timer() {
-		public void run() {
-			flashContainer.setVisible(false);
-			flashLabel.setText("");
-		}
-	};
-=======
-=======
->>>>>>> remove both of gwt-representer and gwt-dispatch dependencies, add license headers to all new files
-package org.apache.hupa.client.ui;
-
-import org.apache.hupa.client.HupaCSS;
-import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.activity.TopActivity;
-import org.apache.hupa.shared.events.ServerStatusEvent.ServerStatus;
-import org.apache.hupa.widgets.ui.RndPanel;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.ui.Anchor;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.google.inject.Inject;
-
-<<<<<<< HEAD
-public class TopView extends Composite implements IsWidget {
->>>>>>> decorate the theme
-=======
-public class TopView extends Composite implements TopActivity.Displayable {
->>>>>>> introduce the top activity
-=======
-package org.apache.hupa.client.ui;
-
-import org.apache.hupa.client.HupaCSS;
-import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.activity.TopActivity;
-import org.apache.hupa.shared.events.ServerStatusEvent.ServerStatus;
-import org.apache.hupa.widgets.ui.RndPanel;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiConstructor;
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Hyperlink;
-import com.google.gwt.user.client.ui.Label;
-import com.google.inject.Inject;
-
-<<<<<<< HEAD
-public class TopView extends Composite implements IsWidget {
->>>>>>> decorate the theme
-=======
-public class TopView extends Composite implements TopActivity.Displayable {
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-
-	interface TopViewUiBinder extends UiBinder<FlowPanel, TopView> {
-	}
-
-	private static TopViewUiBinder binder = GWT.create(TopViewUiBinder.class);
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-	public TopView() {
-		FlowPanel panel = binder.createAndBindUi(this);
-=======
-=======
->>>>>>> introduce the top activity
-	FlowPanel panel = binder.createAndBindUi(this);
-	private HorizontalPanel buttonContainer = new HorizontalPanel();
-	private HorizontalPanel infoContainer = new HorizontalPanel();
-
-
-	private HorizontalPanel loginInfoPanel = new HorizontalPanel();
-=======
-	@UiField HorizontalPanel buttonContainer;
-	@UiField HorizontalPanel infoContainer;
-	@UiField HorizontalPanel loginInfoPanel;
->>>>>>> replace with uibinder
-	private Label loginLabel = new Label();
-	@UiField Label loginUserLabel;
-	@UiField Anchor mainButton;
-	private Anchor contactsButton;
-	@UiField Anchor logoutButton;
-	@UiField Label appnameLabel;
-
-	private RndPanel flashContainer = new RndPanel();
-	private Label flashLabel = new Label();
-	@UiField Label extraLabel;
-
-	@Inject
-	public TopView(HupaConstants constants) {
-		initWidget(binder.createAndBindUi(this));
-		mainButton.setText(constants.mailTab());
-		contactsButton = new Anchor(constants.contactsTab());
-		logoutButton.setText(constants.logoutButton());
-		loginLabel.addStyleName(HupaCSS.C_login_info_label);
-		logoutButton.addStyleName(HupaCSS.C_menu_button);
-		appnameLabel.addStyleName(HupaCSS.C_header);
-		flashContainer.addStyleName(HupaCSS.C_flash);
-		loginLabel.setText(constants.loginAs() + ": ");
-		appnameLabel.setText(constants.productName());
-		infoContainer.add(appnameLabel);
-		infoContainer.add(extraLabel);
-		flashContainer.add(flashLabel);
-<<<<<<< HEAD
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-		initWidget(panel);
-		showTopNavigation(false);
-	}
-
-	@Override
-	public HasClickHandlers getLogoutClick() {
-		return logoutButton;
-	}
-
-	@Override
-	public HasClickHandlers getContactsClick() {
-		return contactsButton;
-	}
-
-	@Override
-	public HasClickHandlers getMainClick() {
-		return mainButton;
-	}
-
-<<<<<<< HEAD
->>>>>>> decorate the theme
-=======
-	@Override
-	public void showTopNavigation(boolean show) {
-		buttonContainer.setVisible(show);
-	}
-
-	@Override
-	public void showContactsButton() {
-		mainButton.setVisible(false);
-		contactsButton.setVisible(true);
-	}
-
-	@Override
-	public void showMainButton() {
-		mainButton.setVisible(true);
-		contactsButton.setVisible(false);
-	}
-
-	@Override
-	public HasText getUserText() {
-		return loginUserLabel;
-	}
-
-	@Override
-	public void setServerStatus(ServerStatus status) {
-		if (status == ServerStatus.Available)
-			showMessage("Server available.", 20000);
-		else
-			showMessage("Server unavailable", 0);
-	}
-
-	@Override
-	public void showMessage(String message, int millisecs) {
-		flashLabel.setText(message);
-		flashContainer.setVisible(true);
-		if (millisecs > 0)
-			hideMessage.schedule(millisecs);
-	}
-
-	private final Timer hideMessage = new Timer() {
-		public void run() {
-			flashContainer.setVisible(false);
-			flashLabel.setText("");
-		}
-	};
-
->>>>>>> introduce the top activity
-=======
-	public TopView() {
-		FlowPanel panel = binder.createAndBindUi(this);
-=======
->>>>>>> introduce the top activity
-		initWidget(panel);
-=======
->>>>>>> replace with uibinder
-		showTopNavigation(false);
-	}
-
-	@Override
-	public HasClickHandlers getLogoutClick() {
-		return logoutButton;
-	}
-
-	@Override
-	public HasClickHandlers getContactsClick() {
-		return contactsButton;
-	}
-
-	@Override
-	public HasClickHandlers getMainClick() {
-		return mainButton;
-	}
-
-<<<<<<< HEAD
->>>>>>> decorate the theme
-=======
-	@Override
-	public void showTopNavigation(boolean show) {
-		buttonContainer.setVisible(show);
-	}
-
-	@Override
-	public void showContactsButton() {
-		mainButton.setVisible(false);
-		contactsButton.setVisible(true);
-	}
-
-	@Override
-	public void showMainButton() {
-		mainButton.setVisible(true);
-		contactsButton.setVisible(false);
-	}
-
-	@Override
-	public HasText getUserText() {
-		return loginUserLabel;
-	}
-
-	@Override
-	public void setServerStatus(ServerStatus status) {
-		if (status == ServerStatus.Available)
-			showMessage("Server available.", 20000);
-		else
-			showMessage("Server unavailable", 0);
-	}
-
-	@Override
-	public void showMessage(String message, int millisecs) {
-		flashLabel.setText(message);
-		flashContainer.setVisible(true);
-		if (millisecs > 0)
-			hideMessage.schedule(millisecs);
-	}
-
-	private final Timer hideMessage = new Timer() {
-		public void run() {
-			flashContainer.setVisible(false);
-			flashLabel.setText("");
-		}
-	};
-
-<<<<<<< HEAD
->>>>>>> introduce the top activity
-=======
-	interface TopViewUiBinder extends UiBinder<FlowPanel, TopView> {
-	}
-
-	private static TopViewUiBinder binder = GWT.create(TopViewUiBinder.class);
-
->>>>>>> replace with uibinder
-}
diff --git a/client/src/main/java/org/apache/hupa/client/ui/WestView.java b/client/src/main/java/org/apache/hupa/client/ui/WestView.java
deleted file mode 100644
index 665004d..0000000
--- a/client/src/main/java/org/apache/hupa/client/ui/WestView.java
+++ /dev/null
@@ -1,816 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.client.ui;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.client.activity.WestActivity;

-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.User;

-import org.apache.hupa.shared.events.LoadMessagesEvent;

-

-import com.google.gwt.core.client.GWT;

-import com.google.gwt.event.shared.EventBus;

-import com.google.gwt.user.cellview.client.CellTree;

-import com.google.gwt.user.client.ui.Composite;

-import com.google.gwt.user.client.ui.Widget;

-import com.google.gwt.view.client.ProvidesKey;

-import com.google.gwt.view.client.SelectionChangeEvent;

-import com.google.gwt.view.client.SingleSelectionModel;

-import com.google.inject.Inject;

-

-/**

- * MainView acts like a container of other widgets which will get displayed

- * after the user successfully logged in

- * 

- * 

- */

-public class WestView extends Composite implements WestActivity.Displayable {

-

-	protected User user;

-	private CellTree cellTree;

-<<<<<<< HEAD
-

-	@Inject

-	public WestView(final EventBus eventBus) {

-		selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {

-			@SuppressWarnings("unchecked")

-			@Override

-			public void onSelectionChange(SelectionChangeEvent event) {

-				SingleSelectionModel<ImapFolder> selectionModel = (SingleSelectionModel<ImapFolder>) event.getSource();

-				eventBus.fireEvent(new LoadMessagesEvent(user, selectionModel.getSelectedObject()));

-			}

-		});

-//		viewModel.setSelectionModel(selectionModel);

-

-		CellTree.Resources res = GWT.create(CellTree.BasicResources.class);

-		cellTree = new CellTree(null, res);

-		cellTree.setAnimationEnabled(true);

-		initWidget(cellTree);

-

-	}

-

-	private final SingleSelectionModel<ImapFolder> selectionModel = new SingleSelectionModel<ImapFolder>(

-	        new ProvidesKey<ImapFolder>() {

-		        @Override

-		        public Object getKey(ImapFolder item) {

-			        return item == null ? null : item.getFullName();

-		        }

-	        });

-

-	public Widget asWidget() {

-		return this;

-=======
-=======
->>>>>>> Change to new mvp framework - first step
-import java.util.ArrayList;

-import java.util.List;

-

-import org.apache.hupa.client.HupaCSS;

-import org.apache.hupa.client.HupaConstants;

-import org.apache.hupa.client.HupaMessages;

-=======
->>>>>>> refactoring.
-import org.apache.hupa.client.activity.WestActivity;

-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.User;

-import org.apache.hupa.shared.events.LoadMessagesEvent;

-<<<<<<< HEAD
-import org.apache.hupa.shared.events.LoginEvent;

-import org.apache.hupa.shared.events.LoginEventHandler;

-import org.apache.hupa.shared.events.LogoutEvent;

-import org.apache.hupa.shared.events.LogoutEventHandler;

-import org.apache.hupa.shared.events.MoveMessageEvent;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
->>>>>>> Change to new mvp framework - first step
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
->>>>>>> Allow client can use the domain entity interface.
-import org.apache.hupa.widgets.event.EditEvent;

-import org.apache.hupa.widgets.event.EditHandler;

-import org.apache.hupa.widgets.ui.EnableHyperlink;

-import org.apache.hupa.widgets.ui.HasEditable;

-import org.apache.hupa.widgets.ui.HasEnable;

-import org.apache.hupa.widgets.ui.Loading;

-import org.apache.hupa.widgets.ui.RndPanel;

-=======
->>>>>>> refactoring.
-

-import com.google.gwt.core.client.GWT;

-import com.google.gwt.event.shared.EventBus;

-import com.google.gwt.user.cellview.client.CellTree;

-import com.google.gwt.user.client.ui.Composite;

-import com.google.gwt.user.client.ui.Widget;

-import com.google.gwt.view.client.ProvidesKey;

-import com.google.gwt.view.client.SelectionChangeEvent;

-import com.google.gwt.view.client.SingleSelectionModel;

-import com.google.inject.Inject;

-

-/**

- * MainView acts like a container of other widgets which will get displayed

- * after the user successfully logged in

- * 

- * 

- */

-public class WestView extends Composite implements WestActivity.Displayable {

-

-<<<<<<< HEAD
-    private DockPanel dockPanel;

-    private VerticalPanel north;

-    private HupaConstants constants;

-<<<<<<< HEAD
-<<<<<<< HEAD
-    private VerticalPanel west;

-=======
-    private RndPanel west;

->>>>>>> Change to new mvp framework - first step
-=======
-    private VerticalPanel west;

->>>>>>> decorate the theme
-    private IMAPTreeImages tImages = GWT.create(IMAPTreeImages.class);

-    private Tree folderTree = new Tree(tImages, true);

-  

-    private Widget centerWidget;

-    private RndPanel center;

-    private IMAPMessageListView mListView;

-    private HupaMessages messages;

-    private VerticalPanel folderPanel = new VerticalPanel();

-    private Panel westPanel = new HorizontalPanel();

-    private HorizontalPanel folderButtonBar = new HorizontalPanel();

-    private EnableHyperlink newFolderButton;

-    private EnableHyperlink renameFolderButton;

-    private EnableHyperlink deleteFolderButton;

-    private ConfirmDialogBox confirmFolderDeleteBox = new ConfirmDialogBox();

-    private Loading loader;

-    private Loading messageLoader = new Loading();

-    private List<DropController> dropControllerList = new ArrayList<DropController>();

-    private EventBus bus;

-    private PagingScrollTableRowDragController controller;

-    protected User user;

-    private TreeViewModel viewModel;

-    

-    @Inject

-    public WestView(FolderTreeViewModel viewModel, final EventBus eventBus, PagingScrollTableRowDragController controllerProvider, HupaConstants constants, HupaMessages messages) {

-    	this.viewModel = viewModel;

-    	selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {

-=======
-	protected User user;

-	private FoldersCellTree cellTree;

->>>>>>> refactoring.
-=======
->>>>>>> make folder list panel work as expected
-

-	@Inject

-	public WestView(final EventBus eventBus) {

-		selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {

-			@SuppressWarnings("unchecked")

-			@Override

-			public void onSelectionChange(SelectionChangeEvent event) {

-				SingleSelectionModel<ImapFolder> selectionModel = (SingleSelectionModel<ImapFolder>) event.getSource();

-				eventBus.fireEvent(new LoadMessagesEvent(user, selectionModel.getSelectedObject()));

-<<<<<<< HEAD
-	            

-            }});

-    	viewModel.setSelectionModel(selectionModel);

-        this.constants = constants;

-        this.messages = messages;

-        this.controller = controllerProvider;

-        this.bus = eventBus;

-        loader = new Loading(constants.loading());

-<<<<<<< HEAD
-<<<<<<< HEAD
-        newFolderButton = new EnableHyperlink(constants.newFolder(), null);

-        renameFolderButton = new EnableHyperlink(constants.renameFolder(), null);

-        deleteFolderButton = new EnableHyperlink(constants.deleteFolder(), null);

-=======
-        newFolderButton = new EnableHyperlink(constants.newFolder(), "");

-        renameFolderButton = new EnableHyperlink(constants.renameFolder(), "");

-        deleteFolderButton = new EnableHyperlink(constants.deleteFolder(), "");

->>>>>>> Change to new mvp framework - first step
-=======
-        newFolderButton = new EnableHyperlink(constants.newFolder(), null);

-        renameFolderButton = new EnableHyperlink(constants.renameFolder(), null);

-        deleteFolderButton = new EnableHyperlink(constants.deleteFolder(), null);

->>>>>>> 
-        

-        dockPanel = new DockPanel();

-

-        dockPanel.setSpacing(10);

-        dockPanel.setWidth("100%");

-

-        // Not used so far

-        // createNorth();

-        // dockPanel.add(north, DockPanel.NORTH);

-        // dockPanel.setCellHorizontalAlignment(north, DockPanel.ALIGN_RIGHT);

-        

-        createWest();

-        dockPanel.add(west, DockPanel.WEST);

-        dockPanel.setCellWidth(west, "160px");

-

-        createCenter();

-        dockPanel.add(center, DockPanel.CENTER);

-        dockPanel.setCellHorizontalAlignment(center, DockPanel.ALIGN_LEFT);

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-        west.setWidth("100%");

-=======
->>>>>>> Change to new mvp framework - first step
-=======
-        west.setWidth("100%");

-<<<<<<< HEAD
->>>>>>> decorate the theme
-        initWidget(west);

-    }

-

-    private void createWest() {

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-//        initWidget(west);

-        cellTree = new FolderTree(viewModel, null, res);

-        putCellTree();

-        

-    }

-

-	public final ProvidesKey<ImapFolder> KEY_PROVIDER = new ProvidesKey<ImapFolder>() {

-		@Override

-		public Object getKey(ImapFolder item) {

-			return item == null ? null : item.getFullName();

-		}

-	};

-    CellTree.Resources res = GWT.create(CellTree.BasicResources.class);

-    final SingleSelectionModel<ImapFolder> selectionModel =

-    	      new SingleSelectionModel<ImapFolder>(KEY_PROVIDER);

-    CellTree cellTree;

-    FlowPanel panel = new FlowPanel();

-    private void putCellTree() {

-

-//        TreeNode rootNode = cellTree.getRootTreeNode();

-//        TreeNode firstPlaylist = rootNode.setChildOpen(0, true);

-//        firstPlaylist.setChildOpen(0, true);

-    	initWidget(cellTree);

-    	cellTree.setAnimationEnabled(true);

-    	

-    }

-

-	private void createWest() {

->>>>>>> Fix issue #15.
-        west = new VerticalPanel();

-<<<<<<< HEAD
-=======
-        west = new RndPanel();

->>>>>>> Change to new mvp framework - first step
-=======
-        west = new VerticalPanel();

->>>>>>> decorate the theme
-=======
-//        folderTree.clear();

->>>>>>> fix bugs, including 1)folders appending on west panel; 2)unread email folder's been frozen exception; 3)back, logout, ...buttons wired behavior.
-        west.add(folderTree);

-        west.addStyleName(HupaCSS.C_tree_container);

-

-        folderTree.setAnimationEnabled(true);

-        folderPanel.setSpacing(5);

-

-        folderButtonBar.setSpacing(3);

-        folderButtonBar.add(newFolderButton);

-        folderButtonBar.add(renameFolderButton);

-        folderButtonBar.add(deleteFolderButton);

-        folderPanel.add(folderButtonBar);

-        folderPanel.add(folderTree);

-        westPanel.add(loader);

-        confirmFolderDeleteBox.setText(messages.confirmDeleteFolder());

-        bus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {

-

-            public void onLogin(LoginEvent event) {

-                user = event.getUser();

-            }

-

-        });

-        bus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {

-

-            public void onLogout(LogoutEvent event) {

-                user = null;

-            }

-

-        });

-        west.add(westPanel);

-    }

-

-    @SuppressWarnings("unused")

-    private void createNorth() {

-        north = new VerticalPanel();

-        north.setWidth("100%");

-    }

-

-    private void createCenter() {

-        center = new RndPanel();

-        center.setWidth("100%");

-        // FIXME: 

-        if (mListView != null)

-            center.add(mListView);

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#bindTreeItems(java.util.ArrayList)

-     */

-    public void bindTreeItems(List<IMAPTreeItem> treeList) {

-        folderTree.clear();

-        for (DropController dropController : dropControllerList) {

-            controller.unregisterDropController(dropController);

-        }

-

-        for (IMAPTreeItem iTreeItem : treeList) {

-            bindDropController(iTreeItem);

-            folderTree.addItem(iTreeItem);

-

-            if (((ImapFolder) iTreeItem.getUserObject()).getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {

-                folderTree.setSelectedItem(iTreeItem, false);

-            }

-

-        }

-    }

-

-    /**

-     * Bind a IMAPFolderDropController to the given Item and all its childs

-     * 

-     * @param item

-     */

-    private void bindDropController(IMAPTreeItem item) {

-        IMAPFolderDropController dropController = new IMAPFolderDropController(item);

-        controller.registerDropController(dropController);

-        dropControllerList.add(dropController);

-

-        if (item.getChildCount() > 0) {

-            for (int i = 0; i < item.getChildCount(); i++) {

-                bindDropController((IMAPTreeItem) item.getChild(i));

-            }

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getTree()

-     */

-    public HasSelectionHandlers<TreeItem> getTree() {

-        return folderTree;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()

-     */

-    public Widget asWidget() {

-        return this;

-    }

-

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#setLoadingFolders(boolean)

-     */

-    public void setLoadingFolders(boolean load) {

-        if (load) {

-            loader.show();

-            westPanel.clear();

-            westPanel.add(loader);

-        } else {

-            westPanel.clear();

-            westPanel.add(folderPanel);

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#setLoadingMessage(boolean)

-     */

-    public void setLoadingMessage(boolean load) {

-        if (load) {

-            messageLoader.show();

-        } else {

-            messageLoader.hide();

-        }

-    }

-

-    /**

-     * Drop controller which handle drop on TreeItems

-     * 

-     * 

-     */

-    private class IMAPFolderDropController extends SimpleDropController {

-        private IMAPTreeItem item;

-

-        public IMAPFolderDropController(IMAPTreeItem item) {

-            super(item.getWidget());

-            this.item = item;

-        }

-

-        /**

-         * Veto the Drop if the folder is the same

-         */

-        @Override

-        public void onPreviewDrop(DragContext context) throws VetoDragException {

-            if (item.equals(folderTree.getSelectedItem())) {

-                throw new VetoDragException();

-            }

-        }

-

-        /**

-         * Set the right unseen count on the folders and fire an event

-         */

-        @Override

-        public void onDrop(DragContext context) {

-            IMAPTreeItem oldTreeItem = (IMAPTreeItem) folderTree.getSelectedItem();

-            Message message = (Message) controller.getDragValue();

-            if (message.getFlags().contains(IMAPFlag.SEEN) == false) {

-                oldTreeItem.decreaseUnseenMessageCount();

-                item.increaseUnseenMessageCount();

-            }

-            bus.fireEvent(new MoveMessageEvent(user, (ImapFolder) oldTreeItem.getUserObject(), (ImapFolder) item.getUserObject(), message));

-        }

-

-        /**

-         * Update the proxy widget to show its valid to drop it

-         * 

-         */

-        @Override

-        public void onEnter(DragContext context) {

-            if (item.equals(folderTree.getSelectedItem()) == false) {

-                controller.getCurrentProxy().setIsValid(true);

-            }

-            super.onEnter(context);

-        }

-

-        /**

-         * Update the proxy widget to show its invalid to drop it

-         */

-        @Override

-        public void onLeave(DragContext context) {

-            controller.getCurrentProxy().setIsValid(false);

-            super.onLeave(context);

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getRenameClick()

-     */

-    public HasClickHandlers getRenameClick() {

-        return renameFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteEnable()

-     */

-    public HasEnable getDeleteEnable() {

-        return deleteFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getNewEnable()

-     */

-    public HasEnable getNewEnable() {

-        return newFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getRenameEnable()

-     */

-    public HasEnable getRenameEnable() {

-        return renameFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteClick()

-     */

-    public HasClickHandlers getDeleteClick() {

-        return deleteFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getNewClick()

-     */

-    public HasClickHandlers getNewClick() {

-        return newFolderButton;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteConfirmDialog

-     * ()

-     */

-    public HasDialog getDeleteConfirmDialog() {

-        return confirmFolderDeleteBox;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#getDeleteConfirmClick

-     * ()

-     */

-    public HasClickHandlers getDeleteConfirmClick() {

-        return confirmFolderDeleteBox;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#deleteSelectedFolder

-     * ()

-     */

-    public void deleteSelectedFolder() {

-        folderTree.getSelectedItem().remove();

-

-        // Select the INBOX after delete folder

-        for (int i = 0; i < folderTree.getItemCount(); i++) {

-            IMAPTreeItem item = (IMAPTreeItem) folderTree.getItem(i);

-            if (((ImapFolder) item.getUserObject()).getFullName().equalsIgnoreCase(user.getSettings().getInboxFolderName())) {

-                folderTree.setSelectedItem(item, true);

-                break;

-            }

-        }

-

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see

-     * org.apache.hupa.client.mvp.IMAPFolderPresenter.Display#createFolder(org

-     * .apache.hupa.client.widgets.EditHandler)

-     */

-    public HasEditable createFolder(EditHandler handler) {

-        final IMAPTreeItem selected = (IMAPTreeItem) folderTree.getSelectedItem();

-        

-        if (selected.isEdit())

-            return null;

-        

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        IMAPFolderProxy oldFolder = (IMAPFolderProxy) selected.getUserObject();

-

-        // Generate a new folder with a whitespace as name, this is needed as

-        // workaround

-        IMAPFolderProxy folder = (IMAPFolderProxy)new IMAPFolder(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

-=======
-        IMAPFolder oldFolder = (IMAPFolder) selected.getUserObject();

-

-        // Generate a new folder with a whitespace as name, this is needed as

-        // workaround

-        IMAPFolder folder = new IMAPFolder(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

->>>>>>> Change to new mvp framework - first step
-=======
-        IMAPFolderProxy oldFolder = (IMAPFolderProxy) selected.getUserObject();

-

-        // Generate a new folder with a whitespace as name, this is needed as

-        // workaround

-        IMAPFolderProxy folder = (IMAPFolderProxy)new IMAPFolder(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        ImapFolder oldFolder = (ImapFolder) selected.getUserObject();

-

-        // Generate a new folder with a whitespace as name, this is needed as

-        // workaround

-        ImapFolder folder = (ImapFolder)new ImapFolderImpl(oldFolder.getFullName() + oldFolder.getDelimiter() + " ");

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        folder.setDelimiter(oldFolder.getDelimiter());

-

-        final IMAPTreeItem newItem = new IMAPTreeItem(folder);

-

-        // add the new item as child

-        folderTree.getSelectedItem().addItem(newItem);

-        newItem.addEditHandler(handler);

-        newItem.addEditHandler(new EditHandler() {

-

-            public void onEditEvent(EditEvent event) {

-                if (event.getEventType().equals(EditEvent.EventType.Cancel)) {

-                    // remove the folder

-                    newItem.remove();

-                    folderTree.setSelectedItem(selected, false);

-                } else if (event.getEventType().equals(EditEvent.EventType.Stop)) {

-                    // add the new item to dnd controller 

-                    bindDropController(newItem);

-                    // Select the parent folder to avoid an issue in gmail, because

-                    // the new folder takes a while until it is available

-                    folderTree.setSelectedItem(selected, false);

-                }

-            }

-

-        });

-        // Expand the parent

-        folderTree.getSelectedItem().setState(true, false);

-

-        // Select the new folder and start editing it

-        folderTree.setSelectedItem(newItem, false);

-        newItem.startEdit();

-

-        // reset the text of the new item (remove the whitespace)

-        newItem.setText("");

-        

-        return newItem;

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @seeorg.apache.hupa.client.mvp.IMAPFolderPresenter.Display#

-     * decreaseUnseenMessageCount(org.apache.hupa.shared.data.IMAPFolder, int)

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

-=======
-    public void decreaseUnseenMessageCount(IMAPFolder folder, int amount) {

->>>>>>> Change to new mvp framework - first step
-=======
-    public void decreaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void decreaseUnseenMessageCount(ImapFolder folder, int amount) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        int count = folderTree.getItemCount();

-        for (int i = 0; i < count; i++) {

-            IMAPTreeItem item = findTreeItemForFolder((IMAPTreeItem) folderTree.getItem(i), folder);

-            if (item != null) {

-                item.descreaseUnseenMessageCount(amount);

-                break;

-            }

-

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @seeorg.apache.hupa.client.mvp.IMAPFolderPresenter.Display#

-     * increaseUnseenMessageCount(org.apache.hupa.shared.data.IMAPFolder, int)

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

-=======
-    public void increaseUnseenMessageCount(IMAPFolder folder, int amount) {

->>>>>>> Change to new mvp framework - first step
-=======
-    public void increaseUnseenMessageCount(IMAPFolderProxy folder, int amount) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void increaseUnseenMessageCount(ImapFolder folder, int amount) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        int count = folderTree.getItemCount();

-        for (int i = 0; i < count; i++) {

-            IMAPTreeItem item = findTreeItemForFolder((IMAPTreeItem) folderTree.getItem(i), folder);

-            if (item != null) {

-                item.increaseUnseenMessageCount(amount);

-                break;

-            }

-

-        }

-    }

-

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, IMAPFolderProxy folder) {

-=======
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, IMAPFolder folder) {

->>>>>>> Change to new mvp framework - first step
-=======
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, IMAPFolderProxy folder) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-        if (folder.getFullName().equalsIgnoreCase(((IMAPFolder) item.getUserObject()).getFullName())) {

-=======
-    private IMAPTreeItem findTreeItemForFolder(IMAPTreeItem item, ImapFolder folder) {

-        if (folder.getFullName().equalsIgnoreCase(((ImapFolder) item.getUserObject()).getFullName())) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            return item;

-        }

-        for (int i = 0; i < item.getChildCount(); i++) {

-            IMAPTreeItem tItem = findTreeItemForFolder((IMAPTreeItem) item.getChild(i), folder);

-            if (tItem != null) {

-                return tItem;

-            }

-        }

-        return null;

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.client.mvp.MainPresenter.Display#updateTreeItem(org.apache.hupa.shared.data.IMAPFolder)

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public void updateTreeItem(IMAPFolderProxy folder) {

-=======
-    public void updateTreeItem(IMAPFolder folder) {

->>>>>>> Change to new mvp framework - first step
-=======
-    public void updateTreeItem(IMAPFolderProxy folder) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public void updateTreeItem(ImapFolder folder) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        int count = folderTree.getItemCount();

-        for (int i = 0; i < count; i++) {

-            IMAPTreeItem item = findTreeItemForFolder((IMAPTreeItem) folderTree.getItem(i), folder);

-            if (item != null) {

-                item.setUserObject(folder);

-                break;

-            }

-        }

-    }

-=======
-			}

-		});

-//		viewModel.setSelectionModel(selectionModel);

-

-		CellTree.Resources res = GWT.create(CellTree.BasicResources.class);

-		cellTree = new CellTree(null, res);

-		cellTree.setAnimationEnabled(true);

-		initWidget(cellTree);

->>>>>>> refactoring.
-

-	}

-

-	private final SingleSelectionModel<ImapFolder> selectionModel = new SingleSelectionModel<ImapFolder>(

-	        new ProvidesKey<ImapFolder>() {

-		        @Override

-		        public Object getKey(ImapFolder item) {

-			        return item == null ? null : item.getFullName();

-		        }

-	        });

-

-<<<<<<< HEAD
-	@Override

-	public void setUser(User user) {

-		this.user = user;

-		

-<<<<<<< HEAD
->>>>>>> Change to new mvp framework - first step
-=======
->>>>>>> Change to new mvp framework - first step
-=======
-	public Widget asWidget() {

-		return this;

->>>>>>> refactoring.
-	}

-}

diff --git a/server/src/main/java/com/chiaramail/hupa/helper/Account.java b/server/src/main/java/com/chiaramail/hupa/helper/Account.java
deleted file mode 100644
index 7643a14..0000000
--- a/server/src/main/java/com/chiaramail/hupa/helper/Account.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.chiaramail.hupa.helper;
-
-import java.util.Date;
-
-public class Account {
-    
-    public static final int LICENSE_UNKNOWN = 0;
-    public static final int LICENSE_ACTIVE = 1;
-    public static final int LICENSE_EXPIRED = 2;
-    
-    private int license = LICENSE_UNKNOWN;
-    private long time = System.currentTimeMillis() + (24*60*60*1000);
-    public String email;
-    public String password;
-    public String name;
-    public String serverName = "www.chiaramail.com";
-    public String serverPort = "443";
-
-    public String getEmail() {
-        return email;
-    }
-    public String getName() {
-        return name;
-    }
-    public void setLicenseStatus(int licenseActive) {
-        license = licenseActive;
-    }
-    public int getLicenseStatus() {
-        return license;
-    }
-    public void setLicenseCheckDate(long time) {
-        this.time = time;
-    }
-    public int getLicenseCheckDate() {
-        return (int)time;
-    }
-    public String getPassword() {
-        return password;
-    }
-    public String getContentServerName() {
-        return serverName;
-    }
-    public String getContentServerPort() {
-        return serverPort;
-    }
-
-}
diff --git a/server/src/main/java/com/chiaramail/hupa/helper/Utility.java b/server/src/main/java/com/chiaramail/hupa/helper/Utility.java
deleted file mode 100644
index e4b570e..0000000
--- a/server/src/main/java/com/chiaramail/hupa/helper/Utility.java
+++ /dev/null
@@ -1,1476 +0,0 @@
-package com.chiaramail.hupa.helper;
-
- import static com.chiaramail.hupa.helper.Account.LICENSE_ACTIVE;
-import static com.chiaramail.hupa.helper.Account.LICENSE_EXPIRED;
-import static com.chiaramail.hupa.helper.Account.LICENSE_UNKNOWN;
-
-import java.awt.Cursor;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.RandomAccessFile;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.security.Security;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Random;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-import javax.mail.Address;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.net.ssl.HttpsURLConnection;
-
-import org.apache.commons.codec.binary.Base64;
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
-
-public class Utility {
-    /**
-     * Regular expression that represents characters we won't allow in file
-     * names.
-     * 
-     * <p>
-     * Allowed are:
-     * <ul>
-     * <li>word characters (letters, digits, and underscores): {@code \w}</li>
-     * <li>spaces: {@code " "}</li>
-     * <li>special characters: {@code !}, {@code #}, {@code $}, {@code %},
-     * {@code &}, {@code '}, {@code (}, {@code )}, {@code -}, {@code @},
-     * {@code ^}, {@code `}, <code>&#123;</code>, <code>&#125;</code>, {@code ~}, {@code .}, {@code ,}</li>
-     * </ul>
-     * </p>
-     * 
-     * @see #sanitizeFilename(String)
-     */
-    private static final String INVALID_CHARACTERS = "[^\\w !#$%&'()\\-@\\^`{}~.,]+";
-
-    /**
-     * Invalid characters in a file name are replaced by this character.
-     * 
-     * @see #sanitizeFilename(String)
-     */
-    private static final String REPLACEMENT_CHARACTER = "_";
-
-    // \u00A0 (non-breaking space) happens to be used by French MUA
-
-    // Note: no longer using the ^ beginning character combined with (...)+
-    // repetition matching as we might want to strip ML tags. Ex:
-    // Re: [foo] Re: RE : [foo] blah blah blah
-    private static final Pattern RESPONSE_PATTERN = Pattern.compile(
-            "((Re|Fw|Fwd|Aw|R\\u00E9f\\.)(\\[\\d+\\])?[\\u00A0 ]?: *)+",
-            Pattern.CASE_INSENSITIVE);
-
-    /**
-     * Mailing-list tag pattern to match strings like "[foobar] "
-     */
-    private static final Pattern TAG_PATTERN = Pattern.compile(
-            "\\[[-_a-z0-9]+\\] ", Pattern.CASE_INSENSITIVE);
-    public static final String CONTENT_SERVER_APP = "/DynamicContentServer/ContentServer";
-    public static final String RECEIVE_CONTENT = "RECEIVE CONTENT ";
-    public static final String UPDATE_CONTENT = "UPDATE CONTENT ";
-    public static final String FETCH_CONTENT = "FETCH CONTENT ";
-    public static final String DELETE_CONTENT = "DELETE CONTENT ";
-    public static final String DELETE_DATA = "DELETE DATA ";
-    public static final String REMOVE_RECIPIENT = "REMOVE RECIPIENT ";
-    public static final String GET_DATA = "GET DATA ";
-    public static final String USER_REGISTERED = "USER REGISTERED ";
-    public static final String SERVER_LICENSED = "SERVER LICENSED ";
-    // private static final int MAX_SIZE = 32768;
-    // private static final int MAX_SIZE = 7844;
-    // private static final int MAX_SIZE = 128;
-    private static final int MAX_SIZE = 76;
-    private static final int DECODED_SIZE = 57;
-    private static final int NEXT_DAY = 24 * 60 * 60 * 1000; // Number of msec
-                                                             // in a day
-
-    public static final String BLANK = " ";
-    public static final String CONTENT_SERVER_NAME = "X-ChiaraMail-Content-Server-Name";
-    public static final String CONTENT_SERVER_PORT = "X-ChiaraMail-Content-Server-Port";
-    public static final String CONTENT_POINTER = "X-ChiaraMail-Content-Pointer";
-    public static final String ENCRYPTION_KEY = "X-ChiaraMail-Content-Key2";
-    public static final String CONTENT_DURATION = "X-ChiaraMail-Content-Duration";
-    public static final String DEFAULT_CONTENT_SERVER_NAME = "www.chiaramail.com";
-    public static final String DEFAULT_CONTENT_SERVER_PORT = "443";
-
-    public static final String GREEN = "#00a000";
-    public static final String RED = "#ff0000";
-    public static final String BLACK = "#000000";
-
-    public static Vector ValidECSMessages = new Vector();
-    public static Vector BogusECSMessages = new Vector();
-
-    public static boolean arrayContains(Object[] a, Object o) {
-        for (Object element : a) {
-            if (element.equals(o)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static boolean arrayContainsAny(Object[] a, Object... o) {
-        for (Object element : a) {
-            if (arrayContains(o, element)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Combines the given array of Objects into a single String using each
-     * Object's toString() method and the separator character between each part.
-     * 
-     * @param parts
-     * @param separator
-     * @return new String
-     */
-    public static String combine(Object[] parts, char separator) {
-        if (parts == null) {
-            return null;
-        } else if (parts.length == 0) {
-            return "";
-        } else if (parts.length == 1) {
-            return parts[0].toString();
-        }
-        StringBuilder sb = new StringBuilder();
-        sb.append(parts[0]);
-        for (int i = 1; i < parts.length; ++i) {
-            sb.append(separator);
-            sb.append(parts[i]);
-        }
-        return sb.toString();
-    }
-
-    public static String base64Decode(String encoded) {
-        if (encoded == null) {
-            return null;
-        }
-        byte[] decoded = new Base64().decode(encoded.getBytes());
-        return new String(decoded);
-    }
-
-    public static byte[] base64DecodeToBytes(String encoded) {
-        if (encoded == null) {
-            return null;
-        }
-        byte[] decoded = new Base64().decode(encoded.getBytes());
-        return decoded;
-    }
-
-    public static String base64Encode(String s) {
-        if (s == null) {
-            return s;
-        }
-        byte[] encoded = new Base64().encode(s.getBytes());
-        return new String(encoded);
-    }
-
-    public static boolean domainFieldValid(String s) {
-        if (s != null) {
-            if (s.matches("^([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)*[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?$")
-                    && s.length() <= 253) {
-                return true;
-            }
-            if (s.matches("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$")) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private static final Pattern ATOM = Pattern
-            .compile("^(?:[a-zA-Z0-9!#$%&'*+\\-/=?^_`{|}~]|\\s)+$");
-
-    /**
-     * Quote a string, if necessary, based upon the definition of an "atom," as
-     * defined by RFC2822 (http://tools.ietf.org/html/rfc2822#section-3.2.4).
-     * Strings that consist purely of atoms are left unquoted; anything else is
-     * returned as a quoted string.
-     * 
-     * @param text
-     *            String to quote.
-     * @return Possibly quoted string.
-     */
-    public static String quoteAtoms(final String text) {
-        if (ATOM.matcher(text).matches()) {
-            return text;
-        } else {
-            return quoteString(text);
-        }
-    }
-
-    /**
-     * Ensures that the given string starts and ends with the double quote
-     * character. The string is not modified in any way except to add the double
-     * quote character to start and end if it's not already there. sample ->
-     * "sample" "sample" -> "sample" ""sample"" -> "sample"
-     * "sample"" -> "sample" sa"mp"le -> "sa"mp"le" "sa"mp"le" -> "sa"mp"le"
-     * (empty string) -> "" " -> ""
-     * 
-     * @param s
-     * @return
-     */
-    public static String quoteString(String s) {
-        if (s == null) {
-            return null;
-        }
-        if (!s.matches("^\".*\"$")) {
-            return "\"" + s + "\"";
-        } else {
-            return s;
-        }
-    }
-
-    /**
-     * A fast version of URLDecoder.decode() that works only with UTF-8 and does
-     * only two allocations. This version is around 3x as fast as the standard
-     * one and I'm using it hundreds of times in places that slow down the UI,
-     * so it helps.
-     */
-    public static String fastUrlDecode(String s) {
-        try {
-            byte[] bytes = s.getBytes("UTF-8");
-            byte ch;
-            int length = 0;
-            for (int i = 0, count = bytes.length; i < count; i++) {
-                ch = bytes[i];
-                if (ch == '%') {
-                    int h = (bytes[i + 1] - '0');
-                    int l = (bytes[i + 2] - '0');
-                    if (h > 9) {
-                        h -= 7;
-                    }
-                    if (l > 9) {
-                        l -= 7;
-                    }
-                    bytes[length] = (byte) ((h << 4) | l);
-                    i += 2;
-                } else if (ch == '+') {
-                    bytes[length] = ' ';
-                } else {
-                    bytes[length] = bytes[i];
-                }
-                length++;
-            }
-            return new String(bytes, 0, length, "UTF-8");
-        } catch (UnsupportedEncodingException uee) {
-            return null;
-        }
-    }
-
-    /**
-     * <p>
-     * Wraps a multiline string of text, identifying words by <code>' '</code>.
-     * </p>
-     * 
-     * <p>
-     * New lines will be separated by the system property line separator. Very
-     * long words, such as URLs will <i>not</i> be wrapped.
-     * </p>
-     * 
-     * <p>
-     * Leading spaces on a new line are stripped. Trailing spaces are not
-     * stripped.
-     * </p>
-     * 
-     * <pre>
-     * WordUtils.wrap(null, *) = null
-     * WordUtils.wrap("", *) = ""
-     * </pre>
-     * 
-     * Adapted from the Apache Commons Lang library.
-     * http://svn.apache.org/viewvc/commons/proper/lang
-     * /trunk/src/main/java/org/apache/commons/lang3/text/WordUtils.java SVN
-     * Revision 925967, Mon Mar 22 06:16:49 2010 UTC
-     * 
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements. See the NOTICE file distributed with this
-     * work for additional information regarding copyright ownership. The ASF
-     * licenses this file to You under the Apache License, Version 2.0 (the
-     * "License"); you may not use this file except in compliance with the
-     * License. You may obtain a copy of the License at
-     * 
-     * http://www.apache.org/licenses/LICENSE-2.0
-     * 
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-     * License for the specific language governing permissions and limitations
-     * under the License.
-     * 
-     * @param str
-     *            the String to be word wrapped, may be null
-     * @param wrapLength
-     *            the column to wrap the words at, less than 1 is treated as 1
-     * @return a line with newlines inserted, <code>null</code> if null input
-     */
-    private static final String NEWLINE_REGEX = "(?:\\r?\\n)";
-
-    public static String wrap(String str, int wrapLength) {
-        StringBuilder result = new StringBuilder();
-        for (String piece : str.split(NEWLINE_REGEX)) {
-            result.append(wrap(piece, wrapLength, null, false));
-            result.append("\n");
-        }
-        return result.toString();
-    }
-
-    /**
-     * <p>
-     * Wraps a single line of text, identifying words by <code>' '</code>.
-     * </p>
-     * 
-     * <p>
-     * Leading spaces on a new line are stripped. Trailing spaces are not
-     * stripped.
-     * </p>
-     * 
-     * <pre>
-     * WordUtils.wrap(null, *, *, *) = null
-     * WordUtils.wrap("", *, *, *) = ""
-     * </pre>
-     * 
-     * This is from the Apache Commons Lang library.
-     * http://svn.apache.org/viewvc/commons/proper/lang
-     * /trunk/src/main/java/org/apache/commons/lang3/text/WordUtils.java SVN
-     * Revision 925967, Mon Mar 22 06:16:49 2010 UTC
-     * 
-     * Licensed to the Apache Software Foundation (ASF) under one or more
-     * contributor license agreements. See the NOTICE file distributed with this
-     * work for additional information regarding copyright ownership. The ASF
-     * licenses this file to You under the Apache License, Version 2.0 (the
-     * "License"); you may not use this file except in compliance with the
-     * License. You may obtain a copy of the License at
-     * 
-     * http://www.apache.org/licenses/LICENSE-2.0
-     * 
-     * Unless required by applicable law or agreed to in writing, software
-     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-     * License for the specific language governing permissions and limitations
-     * under the License.
-     * 
-     * @param str
-     *            the String to be word wrapped, may be null
-     * @param wrapLength
-     *            the column to wrap the words at, less than 1 is treated as 1
-     * @param newLineStr
-     *            the string to insert for a new line, <code>null</code> uses
-     *            the system property line separator
-     * @param wrapLongWords
-     *            true if long words (such as URLs) should be wrapped
-     * @return a line with newlines inserted, <code>null</code> if null input
-     */
-    public static String wrap(String str, int wrapLength, String newLineStr,
-            boolean wrapLongWords) {
-        if (str == null) {
-            return null;
-        }
-        if (newLineStr == null) {
-            newLineStr = "\n";
-        }
-        if (wrapLength < 1) {
-            wrapLength = 1;
-        }
-        int inputLineLength = str.length();
-        int offset = 0;
-        StringBuilder wrappedLine = new StringBuilder(inputLineLength + 32);
-
-        while ((inputLineLength - offset) > wrapLength) {
-            if (str.charAt(offset) == ' ') {
-                offset++;
-                continue;
-            }
-            int spaceToWrapAt = str.lastIndexOf(' ', wrapLength + offset);
-
-            if (spaceToWrapAt >= offset) {
-                // normal case
-                wrappedLine.append(str.substring(offset, spaceToWrapAt));
-                wrappedLine.append(newLineStr);
-                offset = spaceToWrapAt + 1;
-            } else {
-                // really long word or URL
-                if (wrapLongWords) {
-                    // wrap really long word one line at a time
-                    wrappedLine.append(str.substring(offset, wrapLength
-                            + offset));
-                    wrappedLine.append(newLineStr);
-                    offset += wrapLength;
-                } else {
-                    // do not wrap really long word, just extend beyond limit
-                    spaceToWrapAt = str.indexOf(' ', wrapLength + offset);
-                    if (spaceToWrapAt >= 0) {
-                        wrappedLine
-                                .append(str.substring(offset, spaceToWrapAt));
-                        wrappedLine.append(newLineStr);
-                        offset = spaceToWrapAt + 1;
-                    } else {
-                        wrappedLine.append(str.substring(offset));
-                        offset = inputLineLength;
-                    }
-                }
-            }
-        }
-
-        // Whatever is left in line is short enough to just pass through
-        wrappedLine.append(str.substring(offset));
-
-        return wrappedLine.toString();
-    }
-
-    /**
-     * Extract the 'original' subject value, by ignoring leading
-     * response/forward marker and '[XX]' formatted tags (as many mailing-list
-     * softwares do).
-     * 
-     * <p>
-     * Result is also trimmed.
-     * </p>
-     * 
-     * @param subject
-     *            Never <code>null</code>.
-     * @return Never <code>null</code>.
-     */
-    public static String stripSubject(final String subject) {
-        int lastPrefix = 0;
-
-        final Matcher tagMatcher = TAG_PATTERN.matcher(subject);
-        String tag = null;
-        // whether tag stripping logic should be active
-        boolean tagPresent = false;
-        // whether the last action stripped a tag
-        boolean tagStripped = false;
-        if (tagMatcher.find(0)) {
-            tagPresent = true;
-            if (tagMatcher.start() == 0) {
-                // found at beginning of subject, considering it an actual tag
-                tag = tagMatcher.group();
-
-                // now need to find response marker after that tag
-                lastPrefix = tagMatcher.end();
-                tagStripped = true;
-            }
-        }
-
-        final Matcher matcher = RESPONSE_PATTERN.matcher(subject);
-
-        // while:
-        // - lastPrefix is within the bounds
-        // - response marker found at lastPrefix position
-        // (to make sure we don't catch response markers that are part of
-        // the actual subject)
-
-        while (lastPrefix < subject.length() - 1
-                && matcher.find(lastPrefix)
-                && matcher.start() == lastPrefix
-                && (!tagPresent || tag == null || subject.regionMatches(
-                        matcher.end(), tag, 0, tag.length()))) {
-            lastPrefix = matcher.end();
-
-            if (tagPresent) {
-                tagStripped = false;
-                if (tag == null) {
-                    // attempt to find tag
-                    if (tagMatcher.start() == lastPrefix) {
-                        tag = tagMatcher.group();
-                        lastPrefix += tag.length();
-                        tagStripped = true;
-                    }
-                } else if (lastPrefix < subject.length() - 1
-                        && subject.startsWith(tag, lastPrefix)) {
-                    // Re: [foo] Re: [foo] blah blah blah
-                    // ^ ^
-                    // ^ ^
-                    // ^ new position
-                    // ^
-                    // initial position
-                    lastPrefix += tag.length();
-                    tagStripped = true;
-                }
-            }
-        }
-        // Null pointer check is to make the static analysis component of
-        // Eclipse happy.
-        if (tagStripped && (tag != null)) {
-            // restore the last tag
-            lastPrefix -= tag.length();
-        }
-        if (lastPrefix > -1 && lastPrefix < subject.length() - 1) {
-            return subject.substring(lastPrefix).trim();
-        } else {
-            return subject.trim();
-        }
-    }
-
-    /**
-     * @param parentDir
-     * @param name
-     *            Never <code>null</code>.
-     */
-    public static void touchFile(final File parentDir, final String name) {
-        final File file = new File(parentDir, name);
-        try {
-            if (!file.exists()) {
-                file.createNewFile();
-            } else {
-                file.setLastModified(System.currentTimeMillis());
-            }
-        } catch (Exception e) {
-            System.out.println("Unable to touch file: "
-                    + file.getAbsolutePath() + " " + e.getMessage());
-        }
-    }
-
-    /**
-     * Creates a unique file in the given directory by appending a hyphen and a
-     * number to the given filename.
-     * 
-     * @param directory
-     * @param filename
-     * @return
-     */
-    public static File createUniqueFile(File directory, String filename) {
-        File file = new File(directory, filename);
-        if (!file.exists()) {
-            return file;
-        }
-        // Get the extension of the file, if any.
-        int index = filename.lastIndexOf('.');
-        String format;
-        if (index != -1) {
-            String name = filename.substring(0, index);
-            String extension = filename.substring(index);
-            format = name + "-%d" + extension;
-        } else {
-            format = filename + "-%d";
-        }
-        for (int i = 2; i < Integer.MAX_VALUE; i++) {
-            file = new File(directory, String.format(format, i));
-            if (!file.exists()) {
-                return file;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @param from
-     * @param to
-     * @return
-     */
-    public static boolean move(final File from, final File to) {
-        if (to.exists()) {
-            to.delete();
-        }
-        to.getParentFile().mkdirs();
-
-        try {
-            FileInputStream in = new FileInputStream(from);
-            try {
-                FileOutputStream out = new FileOutputStream(to);
-                try {
-                    byte[] buffer = new byte[1024];
-                    int count = -1;
-                    while ((count = in.read(buffer)) > 0) {
-                        out.write(buffer, 0, count);
-                    }
-                } finally {
-                    out.close();
-                }
-            } finally {
-                try {
-                    in.close();
-                } catch (Throwable ignore) {
-                }
-            }
-            from.delete();
-            return true;
-        } catch (Exception e) {
-            System.out.println("cannot move " + from.getAbsolutePath() + " to "
-                    + to.getAbsolutePath() + " " + e.getMessage());
-            return false;
-        }
-
-    }
-
-    /**
-     * @param fromDir
-     * @param toDir
-     */
-    public static void moveRecursive(final File fromDir, final File toDir) {
-        if (!fromDir.exists()) {
-            return;
-        }
-        if (!fromDir.isDirectory()) {
-            if (toDir.exists()) {
-                if (!toDir.delete()) {
-                    System.out
-                            .println("cannot delete already existing file/directory "
-                                    + toDir.getAbsolutePath());
-                }
-            }
-            if (!fromDir.renameTo(toDir)) {
-                System.out.println("cannot rename " + fromDir.getAbsolutePath()
-                        + " to " + toDir.getAbsolutePath()
-                        + " - moving instead");
-                move(fromDir, toDir);
-            }
-            return;
-        }
-        if (!toDir.exists() || !toDir.isDirectory()) {
-            if (toDir.exists()) {
-                toDir.delete();
-            }
-            if (!toDir.mkdirs()) {
-                System.out.println("cannot create directory "
-                        + toDir.getAbsolutePath());
-            }
-        }
-        File[] files = fromDir.listFiles();
-        for (File file : files) {
-            if (file.isDirectory()) {
-                moveRecursive(file, new File(toDir, file.getName()));
-                file.delete();
-            } else {
-                File target = new File(toDir, file.getName());
-                if (!file.renameTo(target)) {
-                    System.out.println("cannot rename "
-                            + file.getAbsolutePath() + " to "
-                            + target.getAbsolutePath() + " - moving instead");
-                    move(file, target);
-                }
-            }
-        }
-        if (!fromDir.delete()) {
-            System.out.println("cannot delete " + fromDir.getAbsolutePath());
-        }
-    }
-
-    private static final String IMG_SRC_REGEX = "(?is:<img[^>]+src\\s*=\\s*['\"]?([a-z]+)\\:)";
-    private static final Pattern IMG_PATTERN = Pattern.compile(IMG_SRC_REGEX);
-
-    /**
-     * Figure out if this part has images. TODO: should only return true if
-     * we're an html part
-     * 
-     * @param message
-     *            Content to evaluate
-     * @return True if it has external images; false otherwise.
-     */
-    public static boolean hasExternalImages(final String message) {
-        Matcher imgMatches = IMG_PATTERN.matcher(message);
-        while (imgMatches.find()) {
-            if (!imgMatches.group(1).equals("content")) {
-                System.out.println("External images found");
-                return true;
-            }
-        }
-        System.out.println("No external images.");
-        return false;
-    }
-
-    /**
-     * Unconditionally close a Cursor. Equivalent to {@link Cursor#close()}, if
-     * cursor is non-null. This is typically used in finally blocks.
-     * 
-     * @param cursor
-     *            cursor to close
-     */
-    public static void closeQuietly(final Cursor cursor) {
-        if (cursor != null) {
-            // cursor.close();
-        }
-    }
-
-    private static class BlockData {
-        int blockSize;
-        int bytesRead;
-        String msgBlock;
-        String msgChunk;
-    }
-
-    private static BlockData getNextBlock(BufferedReader rdr, char[] buf)
-            throws IOException {
-        BlockData blockData = new BlockData();
-        String msgChunk = "";
-        String msgBlock = "";
-        int blockSize = 0, bytesRead = 0;
-
-        while (blockSize < MAX_SIZE) {
-            bytesRead = rdr.read(buf, 0, MAX_SIZE - bytesRead);
-            if (bytesRead == -1)
-                return null;
-            msgChunk = new String(buf, 0, bytesRead);
-            msgBlock += msgChunk;
-            blockSize += bytesRead;
-        }
-        blockData.blockSize = blockSize;
-        blockData.bytesRead = bytesRead;
-        blockData.msgBlock = msgBlock;
-        blockData.msgChunk = msgChunk;
-        return blockData;
-    }
-
-    public static String fetchBodyContent(Message message, Account account,
-            String[] contentPointers, String contentServerName,
-            String contentServerPort, String encryptionKey) {
-        try {
-            String from = message.getFrom()[0].toString().replaceFirst("^.*<(.*)>.*$", "$1");
-            String[] reply = doFetchContent(account,
-                    from + BLANK
-                            + contentPointers[0], "https://"
-                            + contentServerName + ":" + contentServerPort,
-                    account.getEmail(),
-                    base64Encode(account.getPassword()),
-                    false, null,
-                    null);
-            if (reply[0].equals("3")) {
-                // Indicate to MessageList to set message Subject field color to
-                // green in the message list.
-                if (!ValidECSMessages
-                        .contains(message.getHeader("Message-ID")[0]))
-                    ValidECSMessages
-                            .addElement(message.getHeader("Message-ID")[0]);
-                String[] encryptionHeader = message.getHeader(ENCRYPTION_KEY);
-                if (encryptionHeader != null) {
-                    return new String(decrypt(encryptionKey.getBytes(),
-                            base64DecodeToBytes(reply[1].substring(reply[1]
-                                    .toUpperCase().indexOf("CONTENT = ")
-                                    + "CONTENT = ".length()))));
-                }
-                return base64Decode(reply[1].substring(reply[1].toUpperCase()
-                        .indexOf("CONTENT = ") + "CONTENT = ".length()));
-            } else {
-                // Indicate to MessageList to set message Subject field color to
-                // red in the message list; the fetch had problems, so this
-                // message may be bogus. Better safe than sorry.
-                if (!BogusECSMessages
-                        .contains(message.getHeader("Message-ID")[0]))
-                    BogusECSMessages
-                            .addElement(message.getHeader("Message-ID")[0]);
-                // Toast.makeText(getContext(),
-                // getContext().getString(R.string.message_read_error_fetching_content)
-                // + reply[1], Toast.LENGTH_LONG).show();
-                return null;
-            }
-        } catch (Exception e) {
-            System.out.println("Exception when fetching message content: "
-                    + " " + e.getMessage());
-            e.printStackTrace();
-            // Toast.makeText(this.getContext(),
-            // getContext().getString(R.string.message_fetch_exception) + e,
-            // Toast.LENGTH_LONG).show();
-            return null;
-        }
-    }
-
-    /****************************************************************************/
-    /* The askServer() method sends an HTTP request to a server. */
-    /****************************************************************************/
-    public static String[] askServer(String url_str, String command,
-            String email_addr, String password, boolean isAttachment,
-            String filename, String key) throws Exception {
-        
-//        System.out.println("AskServer: " + url_str + " cmd:" + command + " email:" + email_addr + " pass:" + password + " att:" + isAttachment + " file:" + filename + " key:" + key);
-        String tmp = "", parms;
-
-        HttpURLConnection connection;
-
-        InputStream is;
-
-        BufferedWriter writer;
-
-        BufferedReader rdr;
-
-        String[] srvr_rsp = null;
-
-        URL url;
-
-        int index;
-
-        srvr_rsp = new String[2];
-
-        try {
-            url = new URL(url_str);
-            if (command.startsWith(SERVER_LICENSED)) {
-                // Since the request isn't going to the ChiaraMail content
-                // server, make sure the private server has an active license.
-                connection = (HttpsURLConnection) new URL("https://"
-                        + DEFAULT_CONTENT_SERVER_NAME + ":"
-                        + DEFAULT_CONTENT_SERVER_PORT + CONTENT_SERVER_APP)
-                        .openConnection();
-                connection.setDoOutput(true);
-                writer = new BufferedWriter(new OutputStreamWriter(
-                        connection.getOutputStream()));
-                writer.write("email_addr="
-                        + URLEncoder.encode(email_addr, "UTF-8")
-                        + "&"
-                        + "passwd="
-                        + URLEncoder.encode(password, "UTF-8")
-                        + "&"
-                        + "cmd="
-                        + SERVER_LICENSED
-                        + "&"
-                        + "parms="
-                        + URLEncoder.encode(
-                                url_str.substring(0,
-                                        url_str.indexOf(CONTENT_SERVER_APP)),
-                                "UTF-8"));
-                writer.close();
-                is = connection.getInputStream();
-
-                rdr = new BufferedReader(new InputStreamReader(is));
-                tmp = rdr.readLine();
-                if ((index = tmp.indexOf(BLANK)) != -1) {
-                    srvr_rsp[0] = tmp.substring(0, tmp.indexOf(BLANK));
-                    srvr_rsp[1] = tmp.substring(tmp.indexOf(BLANK) + 1);
-                } else {
-                    srvr_rsp[0] = tmp;
-                    srvr_rsp[1] = "";
-                }
-                rdr.close();
-                is.close();
-                return srvr_rsp;
-                // if (!srvr_rsp[0].equals("10")) return srvr_rsp;
-            }
-
-            if (url_str.startsWith("https")) {
-                connection = (HttpsURLConnection) url.openConnection();
-            } else {
-                connection = (HttpURLConnection) url.openConnection();
-            }
-            connection.setDoOutput(true);
-
-            index = command.indexOf(BLANK);
-            tmp = "";
-            tmp += command.substring(0, index + 1);
-            command = command.substring(index).trim();
-            index = command.indexOf(BLANK);
-            if (index == -1) {
-                tmp += command;
-                parms = "";
-            } else {
-                tmp += command.substring(0, index);
-                parms = command.substring(index).trim();
-            }
-            writer = new BufferedWriter(new OutputStreamWriter(
-                    connection.getOutputStream()));
-            writer.write("email_addr=" + URLEncoder.encode(email_addr, "UTF-8")
-                    + "&" + "passwd=" + URLEncoder.encode(password, "UTF-8")
-                    + "&" + "cmd=" + tmp + "&" + "parms="
-                    + URLEncoder.encode(parms, "UTF-8"));
-            writer.close();
-
-            is = connection.getInputStream();
-            rdr = new BufferedReader(new InputStreamReader(is));
-
-            if (isAttachment) {
-                char[] buf = new char[MAX_SIZE + 29]; // Include room for
-                                                      // response from content
-                                                      // server plus 76 bytes of
-                                                      // Base64 encoded content
-                byte[] blockArray = new byte[16 * DECODED_SIZE];
-                byte[] decodedChunk;
-                int bytesRead = 0;
-                int totalBlockLen = 0;
-                String msgBlock = "";
-
-                File file = new File(System.getProperty("java.io.tmpdir") + File.separatorChar + filename);
-                if (file.exists())
-                    file.delete();
-
-                System.out.println("Creating attachment file: " + file.getAbsolutePath());
-                
-                RandomAccessFile attachmentFile = new RandomAccessFile(file,
-                        "rw");
-                bytesRead = rdr.read(buf);
-                /**
-                 * if (bytesRead < MAX_SIZE + 29) { // Should never happen
-                 * attachmentFile.close(); rdr.close(); is.close(); return null;
-                 * }
-                 **/
-                String tmp2 = new String(buf, 0, 29);
-                if (!tmp2.startsWith("3 ")) {
-                    tmp = new String(buf, 0, buf.length);
-                    if ((index = tmp.indexOf(BLANK)) != -1) {
-                        srvr_rsp[0] = tmp.substring(0, tmp.indexOf(BLANK));
-                        srvr_rsp[1] = tmp.substring(tmp.indexOf(BLANK) + 1);
-                    } else {
-                        srvr_rsp[0] = tmp;
-                        srvr_rsp[1] = "";
-                    }
-                    return srvr_rsp;
-                }
-                int startContentIndex = tmp2.toUpperCase()
-                        .indexOf("CONTENT = ") + "CONTENT = ".length();
-                tmp = tmp2.substring(0, startContentIndex);
-                if (tmp.startsWith("3 ")) {
-                    msgBlock = new String(buf).substring(startContentIndex);
-                    decodedChunk = base64DecodeToBytes(msgBlock);
-                    if (key != null) {
-                        for (int i = 0; i < decodedChunk.length; i++) {
-                            blockArray[i] = decodedChunk[i];
-                        }
-                        totalBlockLen = decodedChunk.length;
-                    } else {
-                        attachmentFile.write(decodedChunk);
-                    }
-                    buf = new char[MAX_SIZE];
-                    bytesRead = 0;
-                    while (bytesRead >= 0) {
-                        if (key != null) {
-                            /*
-                             * The following code reads 76-byte data blocks from
-                             * the content server, decodes them and concatenates
-                             * them into a block whose lengths is divisible by
-                             * 16, which is needed for decryption. Then result
-                             * is decrypted prior to saving to disk.
-                             */
-                            do {
-                                BlockData blockData = getNextBlock(rdr, buf);
-                                if (blockData != null) {
-                                    bytesRead = blockData.bytesRead;
-                                    decodedChunk = base64DecodeToBytes(blockData.msgBlock);
-                                    for (int i = 0; i < decodedChunk.length; i++) {
-                                        blockArray[i + totalBlockLen] = decodedChunk[i];
-                                    }
-                                    totalBlockLen += decodedChunk.length;
-                                    if (totalBlockLen % 16 == 0)
-                                        break; // Read the next block from the
-                                               // server
-                                } else { // EOF, bytesRead == -1
-                                    bytesRead = -1;
-                                    break;
-                                }
-                            } while (totalBlockLen % 16 != 0);
-                            if (totalBlockLen == 0)
-                                break;
-                            byte[] tmpArray = decrypt(key.getBytes(),
-                                    blockArray);
-                            blockArray = Arrays.copyOf(tmpArray, totalBlockLen);
-
-                            attachmentFile.write(blockArray);
-                            blockArray = new byte[16 * DECODED_SIZE];
-                            totalBlockLen = 0;
-                        } else {
-                            BlockData blockData = getNextBlock(rdr, buf);
-                            if (blockData == null)
-                                break;
-                            bytesRead = blockData.bytesRead;
-                            decodedChunk = base64DecodeToBytes(blockData.msgBlock);
-                            attachmentFile.write(decodedChunk);
-                        }
-                    }
-                }
-                attachmentFile.close();
-            } else {
-                tmp = rdr.readLine();
-            }
-
-            rdr.close();
-            is.close();
-
-            if ((index = tmp.indexOf(BLANK)) != -1) {
-                srvr_rsp[0] = tmp.substring(0, tmp.indexOf(BLANK));
-                srvr_rsp[1] = tmp.substring(tmp.indexOf(BLANK) + 1);
-            } else {
-                srvr_rsp[0] = tmp;
-                srvr_rsp[1] = "";
-            }
-        } catch (MalformedURLException e) {
-            srvr_rsp[0] = "-1";
-            srvr_rsp[1] = e.getMessage();
-            System.out
-                    .println("MalformedURLException when sending content to server: "
-                            + " " + e.getMessage());
-            e.printStackTrace();
-        } catch (IOException e) {
-            srvr_rsp[0] = "-1";
-            srvr_rsp[1] = e.getMessage();
-            System.out.println("IOException when sending content to server: "
-                    + " " + e.getMessage());
-            e.printStackTrace();
-        }
-        return srvr_rsp;
-    }
-
-    /****************************************************************************/
-    /* The registerServlet() method sends an HTTP request to the Register */
-    /* servlet. */
-    /****************************************************************************/
-    public static void registerServlet(Account account, String addr)
-            throws Exception {
-        HttpURLConnection connection;
-
-        BufferedWriter writer;
-
-        URL url;
-
-        try {
-            url = new URL("https://www.chiaramail.com/Register");
-            connection = (HttpsURLConnection) url.openConnection();
-            connection.setDoOutput(true);
-
-            writer = new BufferedWriter(new OutputStreamWriter(
-                    connection.getOutputStream()));
-            writer.write("email_addr="
-                    + URLEncoder.encode(account.getEmail(), "UTF-8") + "&addr="
-                    + URLEncoder.encode("!FGw38;_&hIoPDC6887", "UTF-8")
-                    + "&username="
-                    + URLEncoder.encode(account.getName(), "UTF-8") + "&city="
-                    + "&zipcode=00000" + "&country="
-                    + URLEncoder.encode("United States of America", "UTF-8"));
-            writer.close();
-
-            connection.getResponseCode();
-        } catch (MalformedURLException e) {
-            System.out
-                    .println("MalformedURLException when sending registration request to server: "
-                            + " " + e.getMessage());
-        } catch (IOException e) {
-            System.out
-                    .println("IOException when sending registration request to server: "
-                            + " " + e.getMessage());
-        }
-
-        return;
-    }
-
-    /****************************************************************************/
-    /* doUpdateContent() sends updated content to the ContentServer. */
-    /****************************************************************************/
-    public static String[] doUpdateContent(String parms, String url_str,
-            String email_addr, String password) throws Exception {
-        String[] rsp;
-
-        rsp = askServer(url_str + CONTENT_SERVER_APP, UPDATE_CONTENT + parms,
-                email_addr, password, false, null, null);
-
-        return rsp;
-    }
-
-    /****************************************************************************/
-    /* doFetchContent() fetches content from the ContentServer. */
-    /****************************************************************************/
-    public static String[] doFetchContent(Account account, String parms,
-            String url_str, String email_addr, String password,
-            boolean isAttachment, String filename, String encryption_key)
-            throws Exception {
-        String[] rsp;
-
-        if (!url_str.toLowerCase().startsWith(
-                "https://" + DEFAULT_CONTENT_SERVER_NAME + ":"
-                        + DEFAULT_CONTENT_SERVER_PORT)
-                && (account.getLicenseStatus() == LICENSE_UNKNOWN || account
-                        .getLicenseCheckDate() + NEXT_DAY < getCurrentDate())) {
-            rsp = askServer(url_str + CONTENT_SERVER_APP, SERVER_LICENSED
-                    + parms, email_addr, password, false, null, null);
-            if (rsp[0].equals("10")) {
-                account.setLicenseStatus(LICENSE_ACTIVE);
-                account.setLicenseCheckDate(new Date().getTime());
-                rsp = askServer(url_str + CONTENT_SERVER_APP, FETCH_CONTENT
-                        + parms, email_addr, password, isAttachment, filename,
-                        encryption_key);
-            } else {
-                account.setLicenseStatus(LICENSE_EXPIRED);
-            }
-        } else {
-            rsp = askServer(url_str + CONTENT_SERVER_APP,
-                    FETCH_CONTENT + parms, email_addr, password, isAttachment,
-                    filename, encryption_key);
-        }
-
-        return rsp;
-    }
-
-    /****************************************************************************/
-    /* doReceiveContent() requests the ContentServer to store content. */
-    /****************************************************************************/
-    public static String[] doReceiveContent(Account account, String parms,
-            String url_str, String email_addr, String password)
-            throws Exception {
-        String[] rsp;
-
-        if (!url_str.toLowerCase().startsWith(
-                "https://" + DEFAULT_CONTENT_SERVER_NAME + ":"
-                        + DEFAULT_CONTENT_SERVER_PORT)
-                && (account.getLicenseStatus() == LICENSE_UNKNOWN || account
-                        .getLicenseCheckDate() + NEXT_DAY < getCurrentDate())) {
-            rsp = askServer(url_str + CONTENT_SERVER_APP, SERVER_LICENSED
-                    + parms, email_addr, password, false, null, null);
-            if (rsp[0].equals("10")) {
-                account.setLicenseStatus(LICENSE_ACTIVE);
-                account.setLicenseCheckDate(new Date().getTime());
-                rsp = askServer(url_str + CONTENT_SERVER_APP, RECEIVE_CONTENT
-                        + parms, email_addr, password, false, null, null);
-            } else {
-                account.setLicenseStatus(LICENSE_EXPIRED);
-            }
-        } else {
-            rsp = askServer(url_str + CONTENT_SERVER_APP, RECEIVE_CONTENT
-                    + parms, email_addr, password, false, null, null);
-        }
-
-        return rsp;
-    }
-
-    /****************************************************************************/
-    /* doRemoveRecipient() requests the ContentServer to remove the recipient */
-    /* from the access list of the named message. */
-    /****************************************************************************/
-    public static String[] doRemoveRecipient(String parms, String url_str,
-            String email_addr, String password) throws Exception {
-        String[] rsp;
-
-        rsp = askServer(url_str + CONTENT_SERVER_APP, REMOVE_RECIPIENT + parms,
-                email_addr, password, false, null, null);
-
-        return rsp;
-    }
-
-    /****************************************************************************/
-    /* doDeleteContent() requests the ContentServer to delete content and */
-    /* content pointer entries in the content_indexes database table. */
-    /****************************************************************************/
-    public static String[] doDeleteContent(String parms, String url_str,
-            String email_addr, String password) throws Exception {
-        String[] rsp;
-
-        rsp = askServer(url_str + CONTENT_SERVER_APP, DELETE_CONTENT + parms,
-                email_addr, password, false, null, null);
-
-        return rsp;
-    }
-
-    /****************************************************************************/
-    /* doDeleteData() requests the ContentServer to delete content only. */
-    /****************************************************************************/
-    public static String[] doDeleteData(String parms, String url_str,
-            String email_addr, String password) throws Exception {
-        String[] rsp;
-
-        rsp = askServer(url_str + CONTENT_SERVER_APP, DELETE_DATA + parms,
-                email_addr, password, false, null, null);
-
-        return rsp;
-    }
-
-    /****************************************************************************/
-    /* doGetData() requests the ContentServer to return the amount of space */
-    /* the user has left. */
-    /****************************************************************************/
-    public static String[] doGetData(String url_str, String email_addr,
-            String password) throws Exception {
-        String[] rsp;
-
-        rsp = askServer(url_str + CONTENT_SERVER_APP, GET_DATA, email_addr,
-                password, false, null, null);
-
-        return rsp;
-    }
-
-    /****************************************************************************/
-    /* isUserRegistered() requests the ContentServer to report if the given */
-    /* account exists. */
-    /****************************************************************************/
-    public static String isUserRegistered(Account account, String address) {
-        try {
-            String[] reply = askServer(
-                    "https://" + account.getContentServerName() + ":"
-                            + account.getContentServerPort()
-                            + CONTENT_SERVER_APP, USER_REGISTERED + address,
-                    account.getEmail(),
-                    base64Encode(account.getPassword()), false,
-                    null, null);
-            if (reply[0].equals("7")) {
-                String rsp = reply[1].substring(reply[1].lastIndexOf("= ") + 2);
-                return rsp.substring(0, rsp.length() - 1);
-            } else {
-                System.out.println(reply[1]);
-                return "";
-            }
-        } catch (Exception e) {
-            System.out
-                    .println("Exception when fetching content server response: "
-                            + " " + e.getMessage());
-            return "";
-        }
-    }
-
-    /****************************************************************************/
-    /* doRegisterUser() registers the user for content service. */
-    /****************************************************************************/
-    public static void doRegisterUser(Account account, String addr)
-            throws Exception {
-        String[] rsp;
-
-        registerServlet(account, addr);
-
-        return;
-    }
-
-    /****************************************************************************/
-    /* getCurrentDate() fetches the current date and is used when validating */
-    /* licenses. */
-    /****************************************************************************/
-    private static long getCurrentDate() {
-        Date date = new Date();
-        return date.getTime();
-    }
-
-    /**
-     * Replace characters we don't allow in file names with a replacement
-     * character.
-     * 
-     * @param filename
-     *            The original file name.
-     * 
-     * @return The sanitized file name containing only allowed characters.
-     */
-    public static String sanitizeFilename(String filename) {
-        return filename.replaceAll(INVALID_CHARACTERS, REPLACEMENT_CHARACTER);
-    }
-
-    /**
-     * Check to see if we have network connectivity.
-     * 
-     * @param app
-     *            Current application (Hint: see if your base class has a
-     *            getApplication() method.)
-     * @return true if we have connectivity, false otherwise.
-     */
-    public static boolean hasConnectivity(final Object app) {
-        return true;
-    }
-
-    private static final Pattern MESSAGE_ID = Pattern.compile("<" + "(?:"
-            + "[a-zA-Z0-9!#$%&'*+\\-/=?^_`{|}~]+"
-            + "(?:\\.[a-zA-Z0-9!#$%&'*+\\-/=?^_`{|}~]+)*" + "|"
-            + "\"(?:[^\\\\\"]|\\\\.)*\"" + ")" + "@" + "(?:"
-            + "[a-zA-Z0-9!#$%&'*+\\-/=?^_`{|}~]+"
-            + "(?:\\.[a-zA-Z0-9!#$%&'*+\\-/=?^_`{|}~]+)*" + "|"
-            + "\\[(?:[^\\\\\\]]|\\\\.)*\\]" + ")" + ">");
-
-    public static List<String> extractMessageIds(final String text) {
-        List<String> messageIds = new ArrayList<String>();
-        Matcher matcher = MESSAGE_ID.matcher(text);
-
-        int start = 0;
-        while (matcher.find(start)) {
-            String messageId = text.substring(matcher.start(), matcher.end());
-            messageIds.add(messageId);
-            start = matcher.end();
-        }
-
-        return messageIds;
-    }
-
-    public static String extractMessageId(final String text) {
-        Matcher matcher = MESSAGE_ID.matcher(text);
-
-        if (matcher.find()) {
-            return text.substring(matcher.start(), matcher.end());
-        }
-
-        return null;
-    }
-
-    public static String[] copyOf(String[] original, int newLength) {
-        return Arrays.copyOf(original, newLength);
-    }
-
-    public static String extractAddresses(Address[] toAddrs, Address[] ccAddrs,
-            Address[] bccAddrs) {
-        String tmp = "", tmp1 = "", tmp2 = "", tmp3 = "";
-
-        StringTokenizer st;
-
-        for (int i = 0; i < toAddrs.length; i++) {
-            st = new StringTokenizer(toAddrs[i].toString(), " ,");
-            for (int j = 0; st.hasMoreTokens(); j++) {
-                tmp1 += st.nextToken() + ",";
-            }
-        }
-
-        for (int i = 0; i < ccAddrs.length; i++) {
-            st = new StringTokenizer(ccAddrs[i].toString(), " ,");
-
-            for (int j = 0; st.hasMoreTokens(); j++) {
-                tmp2 += st.nextToken() + ",";
-            }
-        }
-
-        for (int i = 0; i < bccAddrs.length; i++) {
-            st = new StringTokenizer(bccAddrs[i].toString(), " ,");
-
-            while (st.hasMoreTokens()) {
-                tmp3 += st.nextToken() + ",";
-            }
-        }
-        if (tmp1.length() > 0) {
-            tmp += tmp1;
-            if (tmp2.length() > 0) {
-                tmp += "," + tmp2;
-                if (tmp3.length() > 0) {
-                    tmp += "," + tmp3;
-                    return tmp;
-                }
-                return tmp;
-            } else {
-                if (tmp3.length() > 0) {
-                    tmp += "," + tmp3;
-                    return tmp;
-                }
-                return tmp;
-            }
-        } else {
-            if (tmp2.length() > 0) {
-                tmp += tmp2;
-                if (tmp3.length() > 0) {
-                    tmp += "," + tmp3;
-                    return tmp;
-                }
-                return tmp;
-            } else {
-                if (tmp3.length() > 0) {
-                    return tmp3;
-                }
-            }
-        }
-        return tmp;
-    }
-
-    public static String generateEncryptionKey() {
-        Random random = new Random();
-        return (String.valueOf(random.nextLong()) + "01234567890123456789012345678901")
-                .substring(0, 32); // Pad out to 32 bytes
-    }
-    
-    public static byte[] doFinal(int mode, byte[] key, byte[] data) throws Exception {
-        Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
-        SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
-        Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding");
-        try {
-            cipher.init(mode, skeySpec);
-        } catch (Exception e) {
-            System.err.println("Error initializing Cipher: " + e.getMessage());
-            System.err.println("Your java version is : " + System.getProperty("java.version") + " installed in: " + System.getProperty("java.home"));
-            System.err.println("If you are using sun/oracle version, be sure you have installed 'Java Cryptography Extension (JCE)'");
-            throw e;
-        }
-        return cipher.doFinal(data);
-    }
-
-    public static String encrypt(byte[] raw, byte[] clear) throws Exception {
-        return new String(Base64.encodeBase64(doFinal(Cipher.ENCRYPT_MODE, raw, clear)));
-    }
-
-    public static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
-        return doFinal(Cipher.DECRYPT_MODE, raw, encrypted);
-    }
-
-    // MCM
-    public static int getSpinnerIndex() {
-        return -1;
-    }
-
-    public static boolean validateHeaders(Message message) {
-        String contentServerName[] = null;
-        String contentServerPort[] = null;
-        String contentPointers[] = null;
-
-        int port = 0, pointer = 0;
-
-        try {
-            if ((contentServerName = message.getHeader(CONTENT_SERVER_NAME)) == null
-                    || (contentServerPort = message
-                            .getHeader(CONTENT_SERVER_PORT)) == null
-                    || (contentPointers = message.getHeader(CONTENT_POINTER)) == null)
-                return false;
-
-            if (contentServerName.length == 0) {
-                // Toast.makeText(this.getContext(),
-                // this.getContext().getString(R.string.message_compose_error_missing_content_server_name),
-                // Toast.LENGTH_LONG).show();
-                return false;
-            }
-
-            if (contentServerPort.length == 0) {
-                // Toast.makeText(this.getContext(),
-                // this.getContext().getString(R.string.message_compose_error_missing_content_server_port),
-                // Toast.LENGTH_LONG).show();
-                return false;
-            } else {
-                try {
-                    port = Integer.parseInt(contentServerPort[0]);
-                } catch (Exception e) {
-                    // Toast.makeText(this.getContext(),
-                    // this.getContext().getString(R.string.message_compose_error_bogus_content_server_port)
-                    // + port, Toast.LENGTH_LONG).show();
-                    return false;
-                }
-                if (port < 0) {
-                    // Toast.makeText(this.getContext(),
-                    // this.getContext().getString(R.string.message_compose_error_rangerr_content_server_port)
-                    // + contentServerPort, Toast.LENGTH_LONG).show();
-                    return false;
-                }
-            }
-
-            if (contentPointers.length == 0) {
-                // Toast.makeText(this.getContext(),
-                // this.getContext().getString(R.string.message_compose_error_missing_content_pointers),
-                // Toast.LENGTH_LONG).show();
-                return false;
-            } else {
-                StringTokenizer st = new StringTokenizer(contentPointers[0]);
-                for (; st.hasMoreTokens();) {
-                    try {
-                        pointer = Integer.parseInt(st.nextToken());
-                    } catch (Exception e) {
-                        // Toast.makeText(this.getContext(),
-                        // this.getContext().getString(R.string.message_compose_error_bogus_content_pointer)
-                        // + pointer, Toast.LENGTH_LONG).show();
-                        return false;
-                    }
-                    if (pointer < 0 || pointer % 8 != 0) {
-                        // Toast.makeText(this.getContext(),
-                        // this.getContext().getString(R.string.message_compose_error_bogus_content_pointer)
-                        // + pointer, Toast.LENGTH_LONG).show();
-                        return false;
-                    }
-                }
-            }
-        } catch (MessagingException e) {
-            return false;
-        }
-        return true;
-    }
-
-    public static long getCurrentFreeMemoryBytes() {
-        long heapSize = Runtime.getRuntime().totalMemory();
-        long heapRemaining = Runtime.getRuntime().freeMemory();
-        long nativeUsage = 0; // Debug.getNativeHeapAllocatedSize();
-
-        return Runtime.getRuntime().maxMemory() - (heapSize - heapRemaining)
-                - nativeUsage;
-    }
-}
\ No newline at end of file
diff --git a/server/src/main/java/org/apache/hupa/server/guice/GuiceServletConfig.java b/server/src/main/java/org/apache/hupa/server/guice/GuiceServletConfig.java
deleted file mode 100644
index ea78a27..0000000
--- a/server/src/main/java/org/apache/hupa/server/guice/GuiceServletConfig.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.server.guice;

-

-

-import java.util.ArrayList;

-import java.util.List;

-import java.util.Properties;

-

-import javax.servlet.ServletContextEvent;

-

-import net.customware.gwt.dispatch.server.guice.ActionHandlerModule;

-

-import org.apache.commons.logging.Log;

-import org.apache.hupa.server.guice.demo.DemoGuiceServerModule;

-import org.apache.hupa.server.utils.ConfigurationProperties;

-

-import com.google.inject.Guice;

-import com.google.inject.Injector;

-import com.google.inject.servlet.GuiceServletContextListener;

-

-/**

- * Simple GuiceServletContextListener which just create the injector

- * 

- */

-public class GuiceServletConfig extends GuiceServletContextListener{

-

-    public static final String SYS_PROP_CONFIG_FILE = "hupa.config.file";

-    public static final String CONFIG_FILE_NAME = "config.properties";

-    public static final String CONFIG_DIR_IN_WAR = "WEB-INF/conf/";

-    

-    private String servletContextRealPath = "";

-    

-    private Properties demoProperties = null;

-    private String demoHostName = null;

-    

-    @Override

-    public void contextInitialized(ServletContextEvent servletContextEvent) {

-        servletContextRealPath = servletContextEvent.getServletContext().getRealPath("/");

-        

-        // We get the mock classes using reflection, so as we can package Hupa without mock stuff.

-        try {

-            Class<?> mockConstants = Class.forName("org.apache.hupa.server.mock.MockConstants");

-            demoProperties = (Properties)mockConstants.getField("mockProperties").get(null);

-            demoHostName = demoProperties.getProperty("IMAPServerAddress");

-        } catch (Exception noDemoAvailable) {

-        }

-        

-        super.contextInitialized(servletContextEvent);

-    }

-    

-    @Override

-    protected Injector getInjector() {

-    	Properties prop = loadProperties();

-        ConfigurationProperties.validateProperties(prop);

-

-        boolean demo = prop.getProperty("IMAPServerAddress").equals(demoHostName);

-

-        ActionHandlerModule module = demo ? new DemoGuiceServerModule(prop) : new GuiceServerModule(prop);

-        Injector injector =  Guice.createInjector(module, new DispatchServletModule());

-        

-        String msg = ">> Started HUPA ";

-        if (demo) {

-        	msg += "in DEMO-MODE";

-        } else {

-        	msg += "with configuration -> " + prop;

-        }

-        injector.getInstance(Log.class).info(msg);

-        

-        return injector;

-    }

- 

-    /**

-     * Loads the first available configuration file.

-     * 

-     * The preference order for the file is:

-     *   1.- file specified in a system property (-Dhupa.config.file=full_path_to_file)

-     *   2.- file in the user's home: $HOME/.hupa/config.properties

-     *   3.- global configuration in the os: /etc/default/hupa

-     *   4.- file provided in the .war distribution: "WEB-INF/conf/config.properties

-     *   5.- mock properties file which makes the Hupa work in demo mode.

-     *  

-     * If the system property "mock-host" has been defined, and Hupa has been packaged

-     * with the mock stuff, we always return the demo-mode configuration.

-     *    

-     */

-    public Properties loadProperties() {

-        Properties properties = null;

-        if (demoHostName == null || System.getProperty(demoHostName) == null) {

-        	List<String> configurationList = new ArrayList<String>();

-            configurationList.add(System.getProperty(SYS_PROP_CONFIG_FILE));

-<<<<<<< HEAD
-<<<<<<< HEAD
-            configurationList.add(System.getenv("HOME") + "/.hupa/" + CONFIG_FILE_NAME);

-=======
-            configurationList.add(System.getProperty(System.getenv("HOME") + "/.hupa/" + CONFIG_FILE_NAME));

->>>>>>> first commit
-=======
-            configurationList.add(System.getenv("HOME") + "/.hupa/" + CONFIG_FILE_NAME);

->>>>>>> constantly changed by manolo
-            configurationList.add("/etc/default/hupa");

-            configurationList.add(servletContextRealPath + "/" + CONFIG_DIR_IN_WAR + CONFIG_FILE_NAME);

-

-            for (String name : configurationList) {

-                properties = ConfigurationProperties.loadProperties(name);

-                if (properties != null) {

-                    break;

-                }

-            }

-        }

-        return properties == null ? demoProperties : properties;

-    }

-}

diff --git a/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java b/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java
deleted file mode 100644
index aa0079f..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/AbstractDeleteMessageHandler.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.handler;
-
-import javax.mail.Flags;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.servlet.http.HttpSession;
-
-import net.customware.gwt.dispatch.server.ExecutionContext;
-import net.customware.gwt.dispatch.shared.ActionException;
-
-import org.apache.commons.logging.Log;
-import org.apache.hupa.server.IMAPStoreCache;
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.rpc.DeleteMessage;
-import org.apache.hupa.shared.rpc.DeleteMessageResult;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.sun.mail.imap.IMAPStore;
-
-/**
- * Abstract class which should get extended by all handlers which needs to handle message deletion
- *
- * @param <Action>
- */
-public abstract class AbstractDeleteMessageHandler<Action extends DeleteMessage>
-        extends AbstractSessionHandler<Action, DeleteMessageResult> {
-
-    @Inject
-    public AbstractDeleteMessageHandler(IMAPStoreCache cache, Log logger,
-            Provider<HttpSession> sessionProvider) {
-        super(cache, logger, sessionProvider);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
-     */
-    public DeleteMessageResult executeInternal(Action action,
-            ExecutionContext context) throws ActionException {
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    	IMAPFolderProxy folder = action.getFolder();
-=======
-        org.apache.hupa.shared.data.IMAPFolder folder = action.getFolder();
->>>>>>> first commit
-=======
-    	IMAPFolderProxy folder = action.getFolder();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    	ImapFolder folder = action.getFolder();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        User user = getUser();
-        try {
-            IMAPStore store = cache.get(user);
-            com.sun.mail.imap.IMAPFolder f = (com.sun.mail.imap.IMAPFolder) store
-                    .getFolder(folder.getFullName());
-            // check if the folder is open, if not open it "rw"
-            if (f.isOpen() == false) {
-                f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
-            }
-
-            Message[] mArray = getMessagesToDelete(action);
-            
-            // check if the delete was triggered not in the trash folder
-            if (folder.getFullName().equalsIgnoreCase(
-                    user.getSettings().getTrashFolderName()) == false) {
-                com.sun.mail.imap.IMAPFolder trashFolder = (com.sun.mail.imap.IMAPFolder) store
-                        .getFolder(user.getSettings().getTrashFolderName());
-
-                boolean trashFound = false;
-                // if the trash folder does not exist we create it
-                if (trashFolder.exists() == false) {
-                    trashFound = trashFolder
-                            .create(com.sun.mail.imap.IMAPFolder.READ_WRITE);
-                } else {
-                    trashFound = true;
-                }
-
-                // Check if we are able to copy the messages to the trash folder
-                if (trashFound) {
-                    // copy the messages to the trashfolder
-                    f.copyMessages(mArray, trashFolder);
-                }
-            }
-
-            
-            // delete the messages from the folder
-            f.setFlags(mArray, new Flags(Flags.Flag.DELETED), true);
-            
-            try {
-                f.expunge(mArray);
-                f.close(false);
-            } catch (MessagingException e) {
-                // prolly UID expunge is not supported
-                f.close(true);
-            }
-            return new DeleteMessageResult(user, folder, mArray.length);
-
-        } catch (MessagingException e) {
-            logger.error("Error while deleting messages for user " + user
-                    + " in folder" + action.getFolder(), e);
-            throw new ActionException("Error while deleting messages");
-        }
-    }
-
-    /**
-     * Return an array holding all messages which should get deleted by the given action
-     * 
-     * @param action
-     * @return messages
-     * @throws ActionException
-     */
-    protected abstract Message[] getMessagesToDelete(Action action) throws ActionException;
-}
diff --git a/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java b/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
deleted file mode 100644
index 853dcdc..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
+++ /dev/null
@@ -1,460 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.server.handler;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-import java.io.IOException;

-import java.util.ArrayList;

-

-import javax.mail.Address;

-import javax.mail.FetchProfile;

-import javax.mail.Message;

-import javax.mail.MessagingException;

-import javax.mail.Multipart;

-import javax.mail.Part;

-import javax.mail.UIDFolder;

-import javax.mail.internet.MimeMessage.RecipientType;

-import javax.servlet.http.HttpSession;

-=======
-import com.google.inject.Provider;

-

-import com.sun.mail.imap.IMAPStore;

->>>>>>> first commit
-=======
-import java.io.IOException;

-import java.util.ArrayList;

-

-import javax.mail.Address;

-import javax.mail.FetchProfile;

-import javax.mail.Message;

-import javax.mail.MessagingException;

-import javax.mail.Multipart;

-import javax.mail.Part;

-import javax.mail.UIDFolder;

-import javax.mail.internet.MimeMessage.RecipientType;

-import javax.servlet.http.HttpSession;

->>>>>>> constantly changed by manolo
-

-import net.customware.gwt.dispatch.server.ExecutionContext;

-import net.customware.gwt.dispatch.shared.ActionException;

-

-import org.apache.commons.logging.Log;

-import org.apache.hupa.server.IMAPStoreCache;

-import org.apache.hupa.server.preferences.UserPreferencesStorage;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.server.utils.MessageUtils;

-import org.apache.hupa.shared.data.ImapFolderImpl;

-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;

-import org.apache.hupa.shared.data.TagImpl;

-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.Tag;

-import org.apache.hupa.shared.domain.User;

-import org.apache.hupa.shared.rpc.FetchMessages;

-import org.apache.hupa.shared.rpc.FetchMessagesResult;

-

-import com.google.inject.Provider;

-import com.sun.mail.imap.IMAPStore;

-=======
-=======
-import org.apache.hupa.server.utils.MessageUtils;

->>>>>>> constantly changed by manolo
-import org.apache.hupa.shared.data.IMAPFolder;

-import org.apache.hupa.shared.data.Message.IMAPFlag;

-import org.apache.hupa.shared.data.Tag;

-import org.apache.hupa.shared.data.User;

-import org.apache.hupa.shared.rpc.FetchMessages;

-import org.apache.hupa.shared.rpc.FetchMessagesResult;

-

-<<<<<<< HEAD
-import java.io.IOException;

-import java.io.UnsupportedEncodingException;

-import java.util.ArrayList;

-

-import javax.mail.Address;

-import javax.mail.FetchProfile;

-import javax.mail.Message;

-import javax.mail.MessagingException;

-import javax.mail.Multipart;

-import javax.mail.Part;

-import javax.mail.UIDFolder;

-import javax.mail.internet.MimeUtility;

-import javax.mail.internet.MimeMessage.RecipientType;

-import javax.servlet.http.HttpSession;

->>>>>>> first commit
-=======
-import com.google.inject.Provider;

-import com.sun.mail.imap.IMAPStore;

->>>>>>> constantly changed by manolo
-

-public abstract class AbstractFetchMessagesHandler <A extends FetchMessages> extends AbstractSessionHandler<A, FetchMessagesResult>{

-

-    UserPreferencesStorage userPreferences;

-    

-    public AbstractFetchMessagesHandler(IMAPStoreCache cache, Log logger, Provider<HttpSession> sessionProvider, UserPreferencesStorage preferences) {

-        super(cache, logger, sessionProvider);

-        this.userPreferences = preferences;

-    }

-

-    @Override

-    protected FetchMessagesResult executeInternal(A action,

-            ExecutionContext context) throws ActionException {

-        User user = getUser();

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        IMAPFolderProxy folder = action.getFolder();

-        if (folder == null) {

-            folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());

-=======
-        IMAPFolder folder = action.getFolder();

-        if (folder == null) {

-            folder = new IMAPFolder(user.getSettings().getInboxFolderName());

->>>>>>> first commit
-=======
-        IMAPFolderProxy folder = action.getFolder();

-        if (folder == null) {

-            folder = (IMAPFolderProxy)new IMAPFolder(user.getSettings().getInboxFolderName());

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        ImapFolder folder = action.getFolder();

-        if (folder == null) {

-            folder = (ImapFolder)new ImapFolderImpl(user.getSettings().getInboxFolderName());

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        }

-        com.sun.mail.imap.IMAPFolder f = null;

-        int start = action.getStart();

-        int offset = action.getOffset();

-        try {

-            IMAPStore store = cache.get(user);

-            

-            f =  (com.sun.mail.imap.IMAPFolder)store.getFolder(folder.getFullName());

-

-             // check if the folder is open, if not open it read only

-            if (f.isOpen() == false) {

-                f.open(com.sun.mail.imap.IMAPFolder.READ_ONLY);

-            }

-

-            // if the folder is empty we have no need to process 

-            int exists = f.getMessageCount();

-            if (exists == 0) {

-                 return new FetchMessagesResult(new ArrayList<org.apache.hupa.shared.domain.Message>(), start, offset, 0, 0);

-            }        

-            

-            MessageConvertArray convArray = getMessagesToConvert(f,action);

-            return new FetchMessagesResult(convert(offset, f, convArray.getMesssages()),start, offset,convArray.getRealCount(),f.getUnreadMessageCount());

-        } catch (MessagingException e) {

-            logger.info("Error fetching messages in folder: " + folder.getFullName() + " " + e.getMessage());

-            // Folder can not contain messages

-            return new FetchMessagesResult(new ArrayList<org.apache.hupa.shared.domain.Message>(), start, offset, 0, 0);

-        } catch (Exception e) {

-            e.printStackTrace();

-            logger.error("Error while fetching headers for user " + user.getName() + " in folder " + folder,e);

-            throw new ActionException(

-                    "Error while fetching headers for user " + user.getName() + " in folder " + folder);

-        

-        } finally {

-            if (f != null && f.isOpen()) {

-                try {

-                    f.close(false);

-                } catch (MessagingException e) {

-                    // we don't care to much about an exception on close here...

-                }

-            }

-        }

-    }

-    

-    protected abstract MessageConvertArray getMessagesToConvert(com.sun.mail.imap.IMAPFolder f, A action) throws MessagingException, ActionException;

-    

-    protected ArrayList<org.apache.hupa.shared.domain.Message> convert(int offset, com.sun.mail.imap.IMAPFolder folder, Message[] messages) throws MessagingException {

-        ArrayList<org.apache.hupa.shared.domain.Message> mList = new ArrayList<org.apache.hupa.shared.domain.Message>();

-        // Setup fetchprofile to limit the stuff which is fetched 

-        FetchProfile fp = new FetchProfile();

-        fp.add(FetchProfile.Item.ENVELOPE);

-        fp.add(FetchProfile.Item.FLAGS);

-        fp.add(FetchProfile.Item.CONTENT_INFO);

-<<<<<<< HEAD
-<<<<<<< HEAD
-        fp.add(UIDFolder.FetchProfileItem.UID);

-=======
->>>>>>> first commit
-=======
-        fp.add(UIDFolder.FetchProfileItem.UID);

->>>>>>> constantly changed by manolo
-        folder.fetch(messages, fp);

-        

-        // loop over the fetched messages

-        for (int i = 0; i < messages.length && i < offset; i++) {

-            org.apache.hupa.shared.domain.Message msg = new org.apache.hupa.shared.data.MessageImpl();

-            Message m = messages[i];                

-            String from = null;

-            if (m.getFrom() != null && m.getFrom().length >0 ) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                from = MessageUtils.decodeText(m.getFrom()[0].toString());

-=======
-                from = m.getFrom()[0].toString().trim();

-                try {

-                    from = MimeUtility.decodeText(from);

-                    userPreferences.addContact(from);

-                } catch (UnsupportedEncodingException e) {

-                    logger.debug("Unable to decode from " + from + " " + e.getMessage());

-                }

->>>>>>> first commit
-=======
-                from = decodeText(m.getFrom()[0].toString());

->>>>>>> constant changed by manolo
-=======
-                from = MessageUtils.decodeText(m.getFrom()[0].toString());

->>>>>>> constantly changed by manolo
-            }

-            msg.setFrom(from);

-

-            String replyto = null;

-            if (m.getReplyTo() != null && m.getReplyTo().length >0 ) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                replyto = MessageUtils.decodeText(m.getReplyTo()[0].toString());

-=======
-                replyto = m.getReplyTo()[0].toString().trim();

-                try {

-                    replyto = MimeUtility.decodeText(replyto);

-                    userPreferences.addContact(replyto);

-                } catch (UnsupportedEncodingException e) {

-                    logger.debug("Unable to decode replyto " + replyto + " " + e.getMessage());

-                }

->>>>>>> first commit
-=======
-                replyto = decodeText(m.getReplyTo()[0].toString());

->>>>>>> constant changed by manolo
-=======
-                replyto = MessageUtils.decodeText(m.getReplyTo()[0].toString());

->>>>>>> constantly changed by manolo
-            }

-            msg.setReplyto(replyto);

-            

-            ArrayList<String> to = new ArrayList<String>();

-            // Add to addresses

-            Address[] toArray = m.getRecipients(RecipientType.TO);

-            if (toArray != null) {

-                for (Address addr : toArray) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                    String mailTo = MessageUtils.decodeText(addr.toString());

-                    to.add(mailTo);

-=======
-                    String mailTo = null;

-                    try {

-                        mailTo = MimeUtility.decodeText(addr.toString());

-                        userPreferences.addContact(mailTo);

-                    } catch (UnsupportedEncodingException e) {

-                        logger.debug("Unable to decode mailTo " + mailTo + " " + e.getMessage());

-                    }

-                    if (mailTo != null)

-                        to.add(mailTo);

->>>>>>> first commit
-=======
-                    String mailTo = decodeText(addr.toString());

-=======
-                    String mailTo = MessageUtils.decodeText(addr.toString());

->>>>>>> constantly changed by manolo
-                    to.add(mailTo);

->>>>>>> constant changed by manolo
-                }

-            }

-            msg.setTo(to);

-            

-            // Check if a subject exist and if so decode it

-            String subject = m.getSubject();

-            if (subject != null) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                subject = MessageUtils.decodeText(subject);

-=======
-                try {

-                    subject = MimeUtility.decodeText(subject);

-                } catch (UnsupportedEncodingException e) {

-                    logger.debug("Unable to decode subject " + subject + " " + e.getMessage());

-                }

->>>>>>> first commit
-=======
-                subject = decodeText(subject);

->>>>>>> constant changed by manolo
-=======
-                subject = MessageUtils.decodeText(subject);

->>>>>>> constantly changed by manolo
-            }

-            msg.setSubject(subject);

-            

-            // Add cc addresses

-            Address[] ccArray = m.getRecipients(RecipientType.CC);

-            ArrayList<String> cc = new ArrayList<String>();

-            if (ccArray != null) {

-                for (Address addr : ccArray) {

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-                    String mailCc = MessageUtils.decodeText(addr.toString());

-                    cc.add(mailCc);

-=======
-                    String mailCc = null;

-                    try {

-                    	mailCc = MimeUtility.decodeText(addr.toString());

-                        userPreferences.addContact(mailCc);

-                    } catch (UnsupportedEncodingException e) {

-                        logger.debug("Unable to decode mailTo " + mailCc + " " + e.getMessage());

-                    }

-                    if (mailCc != null)

-                        cc.add(mailCc);

->>>>>>> first commit
-=======
-                    String mailCc = decodeText(addr.toString());

-=======
-                    String mailCc = MessageUtils.decodeText(addr.toString());

->>>>>>> constantly changed by manolo
-                    cc.add(mailCc);

->>>>>>> constant changed by manolo
-                }            	

-            }

-            msg.setCc(cc);

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constant changed by manolo
-            userPreferences.addContact(from);

-            userPreferences.addContact(to);

-            userPreferences.addContact(replyto);

-            userPreferences.addContact(cc);

-

-<<<<<<< HEAD
-=======
->>>>>>> first commit
-=======
->>>>>>> constant changed by manolo
-            // Using sentDate since received date is not useful in the view when using fetchmail

-            msg.setReceivedDate(m.getSentDate());

-

-            // Add flags

-            ArrayList<IMAPFlag> iFlags = JavamailUtil.convert(m.getFlags());

-          

-            ArrayList<Tag> tags = new ArrayList<Tag>();

-            for (String flag : m.getFlags().getUserFlags()) {

-                if (flag.startsWith(TagImpl.PREFIX)) {

-                    tags.add(new TagImpl(flag.substring(TagImpl.PREFIX.length())));

-                }

-            }

-            

-            msg.setUid(folder.getUID(m));

-            msg.setFlags(iFlags);

-            msg.setTags(tags);

-            try {

-                msg.setHasAttachments(hasAttachment(m));

-            } catch (MessagingException e) {

-                logger.debug("Unable to identify attachments in message UID:" + msg.getUid() + " subject:" + msg.getSubject() + " cause:" + e.getMessage());

-                logger.info("");

-            }

-            mList.add(0, msg);

-            

-        }

-        return mList;

-    }

-

-    private boolean hasAttachment(Message message) throws MessagingException {

-        if (message.getContentType().startsWith("multipart/")) {

-            try {

-                Object content;

-

-                content = message.getContent();

-

-                if (content instanceof Multipart) {

-                    Multipart mp = (Multipart) content;

-                    if (mp.getCount() > 1) {

-                        for (int i = 0; i < mp.getCount(); i++) {

-                            String disp = mp.getBodyPart(i).getDisposition();

-                            if (disp != null

-                                    && disp.equalsIgnoreCase(Part.ATTACHMENT)) {

-                                return true;

-                            }

-                        }

-                    }

-

-                }

-            } catch (IOException e) {

-                logger.error("Error while get content of message " + message.getMessageNumber());

-            }

-            

-        }

-        return false;

-    }

-    

-    

-    protected final class MessageConvertArray {

-        private Message[] messages;

-        private int realCount;

-

-        public MessageConvertArray(int realCount, Message[] messages) {

-            this.messages = messages;

-            this.realCount = realCount;

-        }

-        

-        public int getRealCount() {

-            return realCount;

-        }

-        

-        public Message[] getMesssages() {

-            return messages;

-        }

-    }

-<<<<<<< HEAD
-<<<<<<< HEAD
-

-

-=======
->>>>>>> first commit
-=======
-

-<<<<<<< HEAD
-    /**

-     * Decode iso-xxxx strings present in subjects and emails like:

-     * 

-     * =?ISO-8859-1?Q?No=20hay=20ma=F1ana?= <hello@hupa.org> 

-     */

-    private String decodeText(String s) {

-    	String ret = s;

-    	try {

-    		ret = MimeUtility.decodeText(s);

-        } catch (UnsupportedEncodingException e) {

-            logger.debug("Unable to decode text " + s + " " + e.getMessage());

-        }

-        // Remove quotes around names in email addresses

-        ret =  ret.replaceFirst("^[\"' ]+([^\"]*)[\"' ]+<", "$1 <");

-        return ret;

-    }

->>>>>>> constant changed by manolo
-=======
-

->>>>>>> constantly changed by manolo
-}

diff --git a/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java b/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
deleted file mode 100644
index 454e85c..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
+++ /dev/null
@@ -1,458 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.server.handler;

-

-import java.io.File;

-import java.io.IOException;

-import java.io.InputStream;

-import java.io.OutputStream;

-import java.util.ArrayList;

-import java.util.List;

-

-import javax.activation.DataSource;

-import javax.mail.Address;

-import javax.mail.AuthenticationFailedException;

-import javax.mail.BodyPart;

-import javax.mail.Flags.Flag;

-import javax.mail.Folder;

-import javax.mail.Message;

-import javax.mail.MessagingException;

-import javax.mail.Multipart;

-import javax.mail.Session;

-import javax.mail.Transport;

-import javax.mail.internet.AddressException;

-import javax.mail.internet.InternetAddress;

-import javax.mail.internet.MimeBodyPart;

-import javax.mail.internet.MimeMessage;

-import javax.mail.internet.MimeMessage.RecipientType;

-import javax.mail.internet.MimeMultipart;

-import javax.servlet.http.HttpSession;

-

-import net.customware.gwt.dispatch.server.ExecutionContext;

-import net.customware.gwt.dispatch.shared.ActionException;

-

-import org.apache.commons.fileupload.FileItem;

-import org.apache.commons.logging.Log;

-import org.apache.hupa.server.FileItemRegistry;

-import org.apache.hupa.server.IMAPStoreCache;

-import org.apache.hupa.server.preferences.UserPreferencesStorage;

-import org.apache.hupa.server.utils.MessageUtils;

-import org.apache.hupa.server.utils.RegexPatterns;

-import org.apache.hupa.server.utils.SessionUtils;

-import org.apache.hupa.shared.SConsts;

-import org.apache.hupa.shared.domain.MessageAttachment;

-import org.apache.hupa.shared.domain.SmtpMessage;

-import org.apache.hupa.shared.domain.User;

-import org.apache.hupa.shared.rpc.GenericResult;

-import org.apache.hupa.shared.rpc.SendMessage;

-

-import com.google.inject.Inject;

-import com.google.inject.Provider;

-import com.google.inject.name.Named;

-import com.sun.mail.imap.IMAPFolder;

-import com.sun.mail.imap.IMAPStore;

-

-/**

- * Handle sending of email messages

- * 

- */

-public abstract class AbstractSendMessageHandler<A extends SendMessage> extends AbstractSessionHandler<A,GenericResult> {

-

-    private final boolean auth;

-    private final String address;

-    private final int port;

-    private boolean useSSL = false;

-    UserPreferencesStorage userPreferences;

-    Session session;

-

-    @Inject

-    public AbstractSendMessageHandler(Log logger, IMAPStoreCache store, Provider<HttpSession> provider, UserPreferencesStorage preferences, @Named("SMTPServerAddress") String address, @Named("SMTPServerPort") int port, @Named("SMTPAuth") boolean auth, @Named("SMTPS") boolean useSSL) {

-        super(store,logger,provider);

-        this.auth = auth;

-        this.address = address;

-        this.port = port;

-        this.useSSL  = useSSL;

-        this.userPreferences = preferences;

-        this.session = store.getMailSession();

-        session.getProperties().put("mail.smtp.auth", auth);

-    }

-

-    @Override

-    protected GenericResult executeInternal(A action, ExecutionContext context)

-            throws ActionException {

-        GenericResult result = new GenericResult();

-        try {

-

-            Message message = createMessage(session, action);

-            message = fillBody(message,action);

-

-            sendMessage(getUser(), message);

-            saveSentMessage(getUser(), message);

-        

-            resetAttachments(action);

-        

-            // TODO: notify the user more accurately where the error is

-            // if the message was sent and the storage in the sent folder failed, etc.

-        } catch (AddressException e) {

-            result.setError("Error while parsing recipient: " + e.getMessage());

-            logger.error("Error while parsing recipient", e);

-        } catch (AuthenticationFailedException e) {

-            result.setError("Error while sending message: SMTP Authentication error.");

-            logger.error("SMTP Authentication error", e);

-        } catch (MessagingException e) {

-            result.setError("Error while sending message: " + e.getMessage());

-            logger.error("Error while sending message", e);

-        } catch (Exception e) {

-            result.setError("Unexpected exception while sendig message: " + e.getMessage());

-            logger.error("Unexpected exception while sendig message: ", e);

-        }

-        return result;

-    }

-    

-    /**

-     * Create basic Message which contains all headers. No body is filled

-     * 

-     * @param session the Session

-     * @param action the action

-     * @return message

-     * @throws AddressException

-     * @throws MessagingException

-     * @throws ActionException

-     */

-    protected Message createMessage(Session session, A action) throws AddressException, MessagingException {

-        MimeMessage message = new MimeMessage(session);

-        SmtpMessage m = action.getMessage();

-        message.setFrom(new InternetAddress(m.getFrom()));

-

-        userPreferences.addContact(m.getTo());

-        userPreferences.addContact(m.getCc());

-        userPreferences.addContact(m.getBcc());

-

-        message.setRecipients(RecipientType.TO, MessageUtils.getRecipients(m.getTo()));

-        message.setRecipients(RecipientType.CC, MessageUtils.getRecipients(m.getCc()));

-        message.setRecipients(RecipientType.BCC, MessageUtils.getRecipients(m.getBcc()));

-<<<<<<< HEAD
-<<<<<<< HEAD
-        message.setSubject(MessageUtils.encodeTexts(m.getSubject()));

-<<<<<<< HEAD
-=======
-        message.setSubject(m.getSubject());

->>>>>>> first commit
-=======
-        message.setSubject(MessageUtils.encodeTexts(m.getSubject()));

->>>>>>> constantly changed by manolo
-=======
-        updateHeaders(message, action);

->>>>>>> Fixes HUPA-96 : pass reference ids when replying. Patch by Zsombor Gegesy
-        message.saveChanges();

-        return message;

-    }

-    

-    protected void updateHeaders(MimeMessage message, A action) {

-        if (action.getInReplyTo() != null) {

-            try {

-                message.addHeader(SConsts.HEADER_IN_REPLY_TO, action.getInReplyTo());

-            } catch (MessagingException e) {

-                logger.error("Error while setting header:" + e.getMessage(), e);

-            }

-        }

-        if (action.getReferences() != null) {

-            try {

-                message.addHeader(SConsts.HEADER_REFERENCES, action.getReferences());

-            } catch (MessagingException e) {

-                logger.error("Error while setting header:" + e.getMessage(), e);

-            }

-        }

-    }

-

-	/**

-     * Fill the body of the given message with data which the given action contain

-     * 

-     * @param message the message

-     * @param action the action

-     * @return filledMessage

-     * @throws MessagingException

-     * @throws ActionException

-     * @throws IOException 

-     */

-    protected Message fillBody(Message message, A action) throws MessagingException, ActionException, IOException {

-

-        String html = restoreInlineLinks(action.getMessage().getText());

-        

-        // TODO: client sends the message as a html document right now, 

-        // the idea is that it should be sent in both formats because

-        // it is easier to handle html in the browser. 

-        String text = htmlToText(html);

-        

-        @SuppressWarnings("rawtypes")

-        List items = getAttachments(action);

-        

-        return composeMessage(message, text, html, items);

-    }

-

-    protected String restoreInlineLinks(String s) {

-        return RegexPatterns.replaceAll(s, RegexPatterns.regex_revertInlineImg, RegexPatterns.repl_revertInlineImg);

-    }

-    

-    // TODO: just temporary stuff because it has to be done in the client side

-    protected String htmlToText(String s){

-        s=s.replaceAll("\n", " ");

-        s=s.replaceAll("(?si)<br\\s*?/?>", "\n");

-        s=s.replaceAll("(?si)</div\\s*?>", "\n");

-        s=s.replaceAll("(\\w)<.*?>(\\w)", "$1 $2");

-        s=s.replaceAll("<.*?>", "");

-        s=s.replaceAll("[ \t]+", " ");

-        return s;

-    }

-    

-    /**

-     * Get the attachments stored in the registry.

-     * 

-     * @param action

-     * @return A list of stored attachments

-     */

-    @SuppressWarnings("rawtypes")

-    protected List getAttachments(A action) throws MessagingException, ActionException {

-        FileItemRegistry registry = SessionUtils.getSessionRegistry(logger, httpSessionProvider.get());

-        List<MessageAttachment> attachments = action.getMessage().getMessageAttachments();

-        

-        ArrayList<FileItem> items = new ArrayList<FileItem>();

-        if (attachments != null && attachments.size() > 0) {

-            for (MessageAttachment attachment: attachments) {

-                FileItem fItem = registry.get(attachment.getName());

-                if (fItem != null)

-                    items.add(fItem);

-            }

-            logger.debug("Found " + items.size() + " attachmets in the registry.");

-        }

-        return items;

-    }

-    

-    /**

-     * Remove attachments from the registry

-     *  

-     * @param action

-     * @throws MessagingException

-     * @throws ActionException

-     */

-    protected void resetAttachments(A action) throws MessagingException, ActionException {

-        SmtpMessage msg = action.getMessage();

-        List<MessageAttachment> attachments = msg.getMessageAttachments();

-        if (attachments != null && ! attachments.isEmpty()) {

-            for(MessageAttachment attach : attachments) 

-                SessionUtils.getSessionRegistry(logger, httpSessionProvider.get()).remove(attach.getName());

-        }

-    }

-    

-    /**

-     * Send the message using SMTP, if the configuration uses authenticated SMTP, it uses

-     * the user stored in session to get the given login and password.

-     * 

-     * @param user

-     * @param session

-     * @param message

-     * @throws MessagingException

-     */

-    protected void sendMessage(User user, Message message) throws MessagingException {

-        

-        Transport transport = cache.getMailTransport(useSSL);

-    

-        if (auth) {

-            logger.debug("Use auth for smtp connection");

-            transport.connect(address,port,user.getName(), user.getPassword());

-        } else {

-            transport.connect(address, port, null,null);

-        }

-        

-        Address[] recips = message.getAllRecipients();

-        StringBuffer sb = new StringBuffer();

-        for (int i = 0; i < recips.length; i++) {

-            sb.append(recips[i]);

-            if (i != recips.length -1) {

-                sb.append(", ");

-            }

-        }

-        logger.info("Send message from " + message.getFrom()[0].toString()+ " to " + sb.toString());

-        transport.sendMessage(message, recips);

-    }

-

-    /**

-     * Save the message in the sent folder

-     * 

-     * @param user

-     * @param message

-     * @throws MessagingException

-     * @throws IOException 

-     */

-    protected void saveSentMessage(User user, Message message) throws MessagingException, IOException {

-        IMAPStore iStore = cache.get(user);

-        IMAPFolder folder = (IMAPFolder) iStore.getFolder(user.getSettings().getSentFolderName());

-        

-        if (folder.exists() || folder.create(IMAPFolder.READ_WRITE)) {

-            if (folder.isOpen() == false) {

-                folder.open(Folder.READ_WRITE);

-            }

-

-            // It is necessary to copy the message, before putting it

-            // in the sent folder. If not, it is not guaranteed that it is 

-            // stored in ascii and is not possible to get the attachments

-            // size. message.saveChanges() doesn't fix the problem.

-            // There are tests which demonstrate this.

-            message = new MimeMessage((MimeMessage)message);

-

-            message.setFlag(Flag.SEEN, true);

-            folder.appendMessages(new Message[] {message});

-            

-            try {

-                folder.close(false);

-            } catch (MessagingException e) {

-                // we don't care on close

-            }

-        }

-    }

-

-    /**

-     * Fill the body of a message already created.

-     * The result message depends on the information given. 

-     * 

-     * @param message

-     * @param text

-     * @param html

-     * @param parts

-     * @return The composed message

-     * @throws MessagingException

-     * @throws IOException

-     */

-    @SuppressWarnings("rawtypes")

-    public static Message composeMessage (Message message, String text, String html, List parts) throws MessagingException, IOException {

-

-        MimeBodyPart txtPart = null;

-        MimeBodyPart htmlPart = null;

-        MimeMultipart mimeMultipart = null;

-

-        if (text == null && html == null) {

-           text = ""; 

-        }

-        if (text != null) {

-            txtPart = new MimeBodyPart();

-            txtPart.setContent(text, "text/plain");

-        }

-        if (html != null) {

-            htmlPart = new MimeBodyPart();

-            htmlPart.setContent(html, "text/html");

-        }

-        if (html != null && text != null) {

-            mimeMultipart = new MimeMultipart();

-            mimeMultipart.setSubType("alternative");

-            mimeMultipart.addBodyPart(txtPart);

-            mimeMultipart.addBodyPart(htmlPart);

-        }

-

-        if (parts == null || parts.isEmpty()) {

-            if (mimeMultipart != null) {

-                message.setContent(mimeMultipart);

-            } else if (html != null) {

-                message.setText(html);

-                message.setHeader("Content-type", "text/html");

-            } else if (text != null) {

-                message.setText(text);

-            }

-        } else {

-            MimeBodyPart bodyPart = new MimeBodyPart();

-            if (mimeMultipart != null) {

-                bodyPart.setContent(mimeMultipart);

-            } else if (html != null) {

-                bodyPart.setText(html);

-                bodyPart.setHeader("Content-type", "text/html");

-            } else if (text != null) {

-                bodyPart.setText(text);

-            }

-            Multipart multipart = new MimeMultipart();

-            multipart.addBodyPart(bodyPart);

-            for (Object attachment: parts) {

-                if (attachment instanceof FileItem) {

-                    multipart.addBodyPart(MessageUtils.fileitemToBodypart((FileItem)attachment));

-                } else {

-                    multipart.addBodyPart((BodyPart)attachment);

-                }

-            }

-            message.setContent(multipart);

-        }

-

-        message.saveChanges();

-        return message;

-

-    }

-    

-    /**

-     * DataStore which wrap a FileItem

-     * 

-     */

-    public static class FileItemDataStore implements DataSource {

-

-        private FileItem item;

-

-        public FileItemDataStore(FileItem item) {

-            this.item = item;

-        }

-

-        /*

-         * (non-Javadoc)

-         * @see javax.activation.DataSource#getContentType()

-         */

-        public String getContentType() {

-            return item.getContentType();

-        }

-

-        /*

-         * (non-Javadoc)

-         * @see javax.activation.DataSource#getInputStream()

-         */

-        public InputStream getInputStream() throws IOException {

-            return item.getInputStream();

-        }

-

-        /*

-         * (non-Javadoc)

-         * @see javax.activation.DataSource#getName()

-         */

-        public String getName() {

-            String fullName = item.getName();

-            

-            // Strip path from file

-            int index = fullName.lastIndexOf(File.separator);

-            if (index == -1) {

-                return fullName;

-            } else {

-                return fullName.substring(index +1 ,fullName.length());

-            }

-        }

-

-        /*

-         * (non-Javadoc)

-         * @see javax.activation.DataSource#getOutputStream()

-         */

-        public OutputStream getOutputStream() throws IOException {

-            return null;

-        }

-

-    }

-

-}

diff --git a/server/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java b/server/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java
deleted file mode 100644
index ef5884d..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/DeleteFolderHandler.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.server.handler;

-

-import javax.mail.Folder;

-import javax.servlet.http.HttpSession;

-

-import net.customware.gwt.dispatch.server.ExecutionContext;

-import net.customware.gwt.dispatch.shared.ActionException;

-

-import org.apache.commons.logging.Log;

-import org.apache.hupa.server.IMAPStoreCache;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
-import org.apache.hupa.shared.data.IMAPFolder;

-import org.apache.hupa.shared.data.User;

->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.User;

-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.User;

->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.rpc.DeleteFolder;

-import org.apache.hupa.shared.rpc.GenericResult;

-

-import com.google.inject.Inject;

-import com.google.inject.Provider;

-import com.sun.mail.imap.IMAPStore;

-

-/**

- * Handle delete requests for a folder

- * 

- *

- */

-public class DeleteFolderHandler extends AbstractSessionHandler<DeleteFolder, GenericResult>{

-

-    @Inject

-    public DeleteFolderHandler(IMAPStoreCache cache, Log logger,

-            Provider<HttpSession> sessionProvider) {

-        super(cache, logger, sessionProvider);

-    }

-

-    @Override

-    protected GenericResult executeInternal(DeleteFolder action,

-            ExecutionContext context) throws ActionException {

-        User user = getUser();

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        IMAPFolderProxy folder = action.getFolder();

-=======
-        IMAPFolder folder = action.getFolder();

->>>>>>> first commit
-=======
-        IMAPFolderProxy folder = action.getFolder();

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        ImapFolder folder = action.getFolder();

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        try {

-            IMAPStore store = cache.get(user);

-            

-            Folder f = store.getFolder(folder.getFullName());

-            

-            // close the folder if its open

-            if (f.isOpen()) {

-                f.close(false);

-            }

-            

-            // recursive delete the folder

-            if (f.delete(true)) {

-                logger.info("Successfully delete folder " + folder + " for user " + user);

-                return new GenericResult();

-            } else {

-                throw new ActionException("Unable to delete folder " + folder + " for user " + user);

-            }

-        } catch (Exception e) {

-            logger.error("Error while deleting folder " + folder + " for user " + user,e);

-            throw new ActionException("Error while deleting folder " + folder + " for user " + user,e);

-        }

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()

-     */

-    public Class<DeleteFolder> getActionType() {

-        return DeleteFolder.class;

-    }

-

-}

diff --git a/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageByUidHandler.java b/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageByUidHandler.java
deleted file mode 100644
index 266cfbe..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageByUidHandler.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.handler;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.servlet.http.HttpSession;
-
-import net.customware.gwt.dispatch.shared.ActionException;
-
-import org.apache.commons.logging.Log;
-import org.apache.hupa.server.IMAPStoreCache;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.User;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.rpc.DeleteMessageByUid;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.sun.mail.imap.IMAPStore;
-
-/**
- * Handler which take care of deleting messages
- * 
- */
-public class DeleteMessageByUidHandler extends
-        AbstractDeleteMessageHandler<DeleteMessageByUid> {
-
-    @Inject
-    public DeleteMessageByUidHandler(IMAPStoreCache cache, Log logger,
-            Provider<HttpSession> provider) {
-        super(cache, logger, provider);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
-     */
-    public Class<DeleteMessageByUid> getActionType() {
-        return DeleteMessageByUid.class;
-    }
-
-    @Override
-    protected Message[] getMessagesToDelete(DeleteMessageByUid action)
-            throws ActionException {
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    	IMAPFolderProxy folder = action.getFolder();
-=======
-        IMAPFolder folder = action.getFolder();
->>>>>>> first commit
-=======
-    	IMAPFolderProxy folder = action.getFolder();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    	ImapFolder folder = action.getFolder();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        ArrayList<Long> uids = action.getMessageUids();
-        User user = getUser();
-
-        logger.info("Deleting messages with uids " + action.getMessageUids()
-                + " for user " + user + " in folder " + action.getFolder());
-        try {
-            IMAPStore store = cache.get(user);
-            com.sun.mail.imap.IMAPFolder f = (com.sun.mail.imap.IMAPFolder) store
-                    .getFolder(folder.getFullName());
-            // check if the folder is open, if not open it "rw"
-            if (f.isOpen() == false) {
-                f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
-            }
-            // build up the list of messages to delete
-            List<Message> messages = new ArrayList<Message>();
-            for (Long uid : uids) {
-                messages.add(f.getMessageByUID(uid));
-            }
-            Message[] mArray = messages.toArray(new Message[messages.size()]);
-            return mArray;
-        } catch (MessagingException e) {
-            logger.error("Error while deleting messages with uids "
-                    + action.getMessageUids() + " for user " + user
-                    + " in folder" + action.getFolder(), e);
-            throw new ActionException("Error while deleting messages", e);
-        }
-
-    }
-
-}
diff --git a/server/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java b/server/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
deleted file mode 100644
index 76dfcc1..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.server.handler;

-

-import java.util.ArrayList;

-import java.util.List;

-

-import javax.mail.Folder;

-import javax.mail.MessagingException;

-import javax.servlet.http.HttpSession;

-

-import net.customware.gwt.dispatch.server.ExecutionContext;

-import net.customware.gwt.dispatch.shared.ActionException;

-

-import org.apache.commons.logging.Log;

-import org.apache.hupa.server.IMAPStoreCache;

-import org.apache.hupa.shared.data.ImapFolderImpl;

-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

-import org.apache.hupa.shared.domain.User;

->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.rpc.FetchFolders;

-import org.apache.hupa.shared.rpc.FetchFoldersResult;

-

-import com.google.inject.Inject;

-import com.google.inject.Provider;

-import com.sun.mail.imap.IMAPStore;

-

-/**

- * Handler which fetch all Folders for an user

- * 

- */

-public class FetchFoldersHandler extends AbstractSessionHandler<FetchFolders, FetchFoldersResult>{

-

-    @Inject

-    public FetchFoldersHandler(IMAPStoreCache cache, Log logger,Provider<HttpSession> provider) {

-        super(cache,logger,provider);

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)

-     */

-    public FetchFoldersResult executeInternal(FetchFolders action, ExecutionContext arg1)

-    throws ActionException {

-        User user = getUser();

-        try {

-

-            // get the store for the user

-            IMAPStore store = cache.get(user);

-            com.sun.mail.imap.IMAPFolder folder = (com.sun.mail.imap.IMAPFolder) store.getDefaultFolder();

-            

-            // List of mail 'root' imap folders

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-            List<IMAPFolderProxy> imapFolders = new ArrayList<IMAPFolderProxy>();

-

-            // Create IMAPFolder tree list

-            for (Folder f : folder.list()) {

-            	IMAPFolderProxy imapFolder = createIMAPFolder(f);

-=======
-            List<IMAPFolder> imapFolders = new ArrayList<IMAPFolder>();

-

-            // Create IMAPFolder tree list

-            for (Folder f : folder.list()) {

-                IMAPFolder imapFolder = createIMAPFolder(f);

->>>>>>> first commit
-=======
-            List<IMAPFolderProxy> imapFolders = new ArrayList<IMAPFolderProxy>();

-

-            // Create IMAPFolder tree list

-            for (Folder f : folder.list()) {

-            	IMAPFolderProxy imapFolder = createIMAPFolder(f);

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-            List<ImapFolder> imapFolders = new ArrayList<ImapFolder>();

-

-            // Create IMAPFolder tree list

-            for (Folder f : folder.list()) {

-            	ImapFolder imapFolder = createIMAPFolder(f);

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                imapFolders.add(imapFolder);

-                walkFolders(f, imapFolder);

-            }

-            

-            // Create the tree and return the result

-            FetchFoldersResult fetchFolderResult = new FetchFoldersResult(imapFolders);

-            logger.debug("Fetching folders for user: " + user + " returns:\n" + fetchFolderResult.toString());

-

-            return fetchFolderResult;

-        } catch (Exception e) {

-            e.printStackTrace();

-            logger.error("Unable to get folders for User " + user,e);

-            throw new ActionException("Unable to get folders for User "

-                    + user);

-        }

-    }

-

-    /**

-     * Walk through the folder's sub-folders and add sub-folders to current imapFolder

-     *   

-     * @param folder Folder to walk

-     * @param imapFolder Current IMAPFolder

-     * @throws ActionException If an error occurs

-     * @throws MessagingException If an error occurs

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private void walkFolders(Folder folder, IMAPFolderProxy imapFolder) throws ActionException, MessagingException{

-        for (Folder f : folder.list()) {

-        	IMAPFolderProxy iFolder = createIMAPFolder(f);

-=======
-    private void walkFolders(Folder folder, IMAPFolder imapFolder) throws ActionException, MessagingException{

-        for (Folder f : folder.list()) {

-            IMAPFolder iFolder = createIMAPFolder(f);

->>>>>>> first commit
-=======
-    private void walkFolders(Folder folder, IMAPFolderProxy imapFolder) throws ActionException, MessagingException{

-        for (Folder f : folder.list()) {

-        	IMAPFolderProxy iFolder = createIMAPFolder(f);

-<<<<<<< HEAD
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-            imapFolder.getChildIMAPFolders().add(iFolder);

-=======
-=======
-    private void walkFolders(Folder folder, ImapFolder imapFolder) throws ActionException, MessagingException{

-        for (Folder f : folder.list()) {

-        	ImapFolder iFolder = createIMAPFolder(f);

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            imapFolder.getChildren().add(iFolder);

->>>>>>> 
-            walkFolders(f, iFolder);

-        }

-    }

-    /*

-     * (non-Javadoc)

-     * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()

-     */

-    public Class<FetchFolders> getActionType() {

-        return FetchFolders.class;

-    }

-

-    /**

-     * Create a new IMAPFolder from the given Folder

-     * 

-     * @param folder Current folder

-     * @return imapFolder Created IMAPFolder

-     * @throws ActionException If an error occurs

-     * @throws MessagingException If an error occurs

-     */

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy createIMAPFolder(Folder folder) throws ActionException {

-

-        String fullName = folder.getFullName();

-        String delimiter;

-        IMAPFolderProxy iFolder = null;

-=======
-    private IMAPFolder createIMAPFolder(Folder folder) throws ActionException {

-

-        String fullName = folder.getFullName();

-        String delimiter;

-        IMAPFolder iFolder = null;

->>>>>>> first commit
-=======
-    private IMAPFolderProxy createIMAPFolder(Folder folder) throws ActionException {

-

-        String fullName = folder.getFullName();

-        String delimiter;

-        IMAPFolderProxy iFolder = null;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder createIMAPFolder(Folder folder) throws ActionException {

-

-        String fullName = folder.getFullName();

-        String delimiter;

-        ImapFolder iFolder = null;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        

-        try {

-            logger.debug("Creating folder: " + fullName + " for user: " + getUser());

-            delimiter = String.valueOf(folder.getSeparator());

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-            iFolder = (IMAPFolderProxy)new IMAPFolder(fullName);

-=======
-            iFolder = new IMAPFolder(fullName);

->>>>>>> first commit
-=======
-            iFolder = (IMAPFolderProxy)new IMAPFolder(fullName);

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-            iFolder = (ImapFolder)new ImapFolderImpl(fullName);

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            iFolder.setDelimiter(delimiter);

-            if("[Gmail]".equals(folder.getFullName()))

-                return iFolder;

-            iFolder.setMessageCount(folder.getMessageCount());

-            iFolder.setSubscribed(folder.isSubscribed());

-            iFolder.setUnseenMessageCount(folder.getUnreadMessageCount());

-        } catch (MessagingException e) {

-            logger.error("Unable to construct folder " + folder.getFullName(),e);

-        }

-        

-        return iFolder;

-    }

-

-}

diff --git a/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java b/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
deleted file mode 100644
index 20944e8..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.server.handler;

-

-import java.util.ArrayList;

-import java.util.List;

-

-import javax.mail.Message;

-import javax.mail.MessagingException;

-import javax.mail.search.BodyTerm;

-import javax.mail.search.FromStringTerm;

-import javax.mail.search.OrTerm;

-import javax.mail.search.SearchTerm;

-import javax.mail.search.SubjectTerm;

-import javax.servlet.http.HttpSession;

-

-import org.apache.commons.logging.Log;

-import org.apache.hupa.server.IMAPStoreCache;

-import org.apache.hupa.server.preferences.UserPreferencesStorage;

-import org.apache.hupa.shared.rpc.FetchMessages;

-

-import com.google.inject.Inject;

-import com.google.inject.Provider;

-

-import net.customware.gwt.dispatch.shared.ActionException;

-

-/**

- * Fetch Messages for a user. The Messages don't contain any body, just some

- * fields of the headers are fetched for perfomance reasons

- * 

- */

-public class FetchMessagesHandler extends

-        AbstractFetchMessagesHandler<FetchMessages> {

-    

-

-    @Inject

-    public FetchMessagesHandler(IMAPStoreCache cache, Log logger,

-            Provider<HttpSession> provider, UserPreferencesStorage preferences) {

-        super(cache, logger, provider, preferences);

-    }

-

-    /*

-     * (non-Javadoc)

-     * 

-     * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()

-     */

-    public Class<FetchMessages> getActionType() {

-        return FetchMessages.class;

-    }

-

-    @Override

-    protected MessageConvertArray getMessagesToConvert(com.sun.mail.imap.IMAPFolder f,

-            FetchMessages action) throws MessagingException, ActionException {

-        String searchString = action.getSearchString();

-        int start = action.getStart();

-        int offset = action.getOffset();

-        int end = start + offset;

-        Message[] messages;

-        int exists;

-        // check if a searchString was given, and if so use it

-        if (searchString == null) {

-            exists = f.getMessageCount();

-

-            if (end > exists) {

-                end = exists;

-            }

-

-            int firstIndex = exists - end + 1;

-            if (firstIndex < 1) {

-                firstIndex = 1;

-            }

-            int lastIndex = exists - start;

-            

-            messages = f.getMessages(firstIndex, lastIndex);

-        } else {

-            SearchTerm subjectTerm = new SubjectTerm(searchString);

-            SearchTerm fromTerm = new FromStringTerm(searchString);

-            SearchTerm bodyTerm = new BodyTerm(searchString);

-            SearchTerm orTerm = new OrTerm(new SearchTerm[] { subjectTerm,

-                    fromTerm, bodyTerm });

-            Message[] tmpMessages = f.search(orTerm);

-            if (end > tmpMessages.length) {

-                end = tmpMessages.length;

-            }

-            exists = tmpMessages.length;

-

-            int firstIndex = exists - end;        

-            

-            if (tmpMessages.length > firstIndex) {

-                List<Message> mList = new ArrayList<Message>();

-                for (int i = firstIndex; i < tmpMessages.length; i++) {

-                    if (i == end) break;

-                    mList.add(tmpMessages[i]);

-                }

-                messages = mList.toArray(new Message[mList.size()]);

-            } else {

-                messages = new Message[0];

-            }

-          

-        }

-        logger.debug("Fetching messages for user: " + getUser() + " returns: " + messages.length + " messages in " + f.getFullName());

-

-        return new MessageConvertArray(exists, messages);

-    }

-}

diff --git a/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java b/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
deleted file mode 100644
index 2543108..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.handler;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import static org.apache.hupa.server.utils.RegexPatterns.regex_badAttrs;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_badTags;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_email;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_existingEmailLinks;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_existingHttpLinks;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_gt;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_htmllink;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_inlineImg;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_lt;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_nl;
-import static org.apache.hupa.server.utils.RegexPatterns.regex_unneededTags;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_badAttrs;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_badTags;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_email;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_existingHttpLinks;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_existngEmailLinks;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_gt;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_htmllink;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_inlineImg;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_lt;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_nl;
-import static org.apache.hupa.server.utils.RegexPatterns.repl_unneededTags;
-import static org.apache.hupa.server.utils.RegexPatterns.replaceAll;
-import static org.apache.hupa.server.utils.RegexPatterns.replaceAllRecursive;
-
-<<<<<<< HEAD
-=======
->>>>>>> first commit
-=======
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-
-import javax.mail.Flags;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import javax.mail.Flags.Flag;
-<<<<<<< HEAD
-=======
->>>>>>> first commit
-=======
-import javax.mail.Flags.Flag;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import javax.mail.Header;
->>>>>>> Fixes HUPA-96 : pass reference ids when replying. Patch by Zsombor Gegesy
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Multipart;
-import javax.mail.Part;
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import javax.mail.Flags.Flag;
->>>>>>> first commit
-=======
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeUtility;
-import javax.servlet.http.HttpSession;
-
-import net.customware.gwt.dispatch.server.ExecutionContext;
-import net.customware.gwt.dispatch.shared.ActionException;
-
-import org.apache.commons.logging.Log;
-import org.apache.hupa.server.IMAPStoreCache;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.MessageAttachment;
-import org.apache.hupa.shared.data.MessageDetails;
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import static org.apache.hupa.server.utils.RegexPatterns.*;
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.MessageAttachment;
-import org.apache.hupa.shared.data.MessageDetails;
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.MessageAttachment;
-import org.apache.hupa.shared.data.MessageDetails;
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-=======
-import org.apache.hupa.shared.data.MailHeaderImpl;
-import org.apache.hupa.shared.data.MessageAttachmentImpl;
-import org.apache.hupa.shared.data.MessageDetailsImpl;
->>>>>>> try to get message details, problem is:
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.MessageAttachment;
-import org.apache.hupa.shared.domain.MessageDetails;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.rpc.GetMessageDetails;
-import org.apache.hupa.shared.rpc.GetMessageDetailsResult;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.sun.mail.imap.IMAPStore;
-
-
-
-public class GetMessageDetailsHandler extends
-        AbstractSessionHandler<GetMessageDetails, GetMessageDetailsResult> {
-
-    @Inject
-    public GetMessageDetailsHandler(IMAPStoreCache cache, Log logger,
-            Provider<HttpSession> sProvider) {
-        super(cache, logger, sProvider);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal
-     * (org.apache.hupa.shared.rpc.Session,
-     * net.customware.gwt.dispatch.server.ExecutionContext)
-     */
-    public GetMessageDetailsResult executeInternal(GetMessageDetails action,
-            ExecutionContext arg1) throws ActionException {
-        return new GetMessageDetailsResult(exposeMessage(getUser(), action.getFolder(), action.getUid()));
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
-     */
-    public Class<GetMessageDetails> getActionType() {
-        return GetMessageDetails.class;
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    protected MessageDetails exposeMessage(User user, IMAPFolderProxy folder,
-=======
-    protected MessageDetails exposeMessage(User user, IMAPFolder folder,
->>>>>>> first commit
-=======
-    protected MessageDetails exposeMessage(User user, IMAPFolderProxy folder,
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    protected MessageDetails exposeMessage(User user, ImapFolder folder,
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            long uid) throws ActionException {
-        IMAPStore store = null;
-        com.sun.mail.imap.IMAPFolder f = null;
-        try {
-            store = cache.get(user);
-
-            f = (com.sun.mail.imap.IMAPFolder) store
-                    .getFolder(folder.getFullName());
-
-            if (f.isOpen() == false) {
-                f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
-            }
-            
-            MimeMessage message = (MimeMessage) f.getMessageByUID(uid);
-
-            MessageDetails mDetails = mimeToDetails(message, f.getFullName(), uid);
-
-            mDetails.setUid(uid);
-            
-            f.setFlags(new Message[] { message }, new Flags(Flag.SEEN), true);
-            
-            return mDetails;
-        } catch (Exception e) {
-            logger.error("Unable to expose msg for user " + user
-                    + " in folder " + folder + " with uid " + uid, e);
-            throw new ActionException("Unable to expose msg for user " + user
-                    + " in folder " + folder + " with uid " + uid);
-
-        } finally {
-            if (f != null && f.isOpen()) {
-                try {
-                    f.close(false);
-                } catch (MessagingException e) {
-                    // ignore on close
-                }
-            }
-        }
-    }
-
-    protected MessageDetails mimeToDetails(MimeMessage message, String folderName, long uid)
-            throws IOException, MessagingException,
-            UnsupportedEncodingException {
-        MessageDetails mDetails = new MessageDetailsImpl();
-
-        
-        Object con = message.getContent();
-
-        StringBuffer sbPlain = new StringBuffer();
-        ArrayList<MessageAttachment> attachmentList = new ArrayList<MessageAttachment>();
-        
-        boolean isHTML = handleParts(message, con, sbPlain, attachmentList);
-        
-        System.out.println(isHTML);
-        
-        if (isHTML) {
-            mDetails.setText(filterHtmlDocument(sbPlain.toString(), folderName, uid));
-        } else {
-            mDetails.setText(txtDocumentToHtml(sbPlain.toString(), folderName, uid));
-        }
-
-        mDetails.setMessageAttachments(attachmentList);
-
-        for (@SuppressWarnings("unchecked")
-        Enumeration<Header> en = message.getAllHeaders(); en.hasMoreElements();) {
-            Header header = en.nextElement();
-            mDetails.setMailHeader(new MailHeaderImpl(header.getName(), header.getValue()));
-//            mDetails.addHeader(header.getName(), header.getValue());
-        }
-        
-        return mDetails;
-    }
-
-    /**
-     * Handle the parts of the given message. The method will call itself recursively to handle all nested parts
-     * @param message the MimeMessage 
-     * @param con the current processing Content
-     * @param sbPlain the StringBuffer to fill with text
-     * @param attachmentList ArrayList with attachments
-     * @throws UnsupportedEncodingException
-     * @throws MessagingException
-     * @throws IOException
-     */
-    protected boolean handleParts(MimeMessage message, Object con,
-            StringBuffer sbPlain,
-            ArrayList<MessageAttachment> attachmentList)
-            throws UnsupportedEncodingException, MessagingException,
-            IOException {
-        boolean isHTML = false;
-        if (con instanceof String) {
-<<<<<<< HEAD
-<<<<<<< HEAD
-            if (message.getContentType().toLowerCase().startsWith("text/html")) {
-=======
-            if (message.getContentType().startsWith("text/html")) {
->>>>>>> first commit
-=======
-            if (message.getContentType().toLowerCase().startsWith("text/html")) {
->>>>>>> constantly changed by manolo
-                isHTML = true;
-            } else {
-                isHTML = false;
-            }
-            sbPlain.append((String) con);
-
-        } else if (con instanceof Multipart) {
-
-            Multipart mp = (Multipart) con;
-            String multipartContentType = mp.getContentType().toLowerCase();
-            
-            String text = null;
-
-            if (multipartContentType.startsWith("multipart/alternative")) {
-                isHTML = handleMultiPartAlternative(mp, sbPlain);
-            } else {
-                for (int i = 0; i < mp.getCount(); i++) {
-                    Part part = mp.getBodyPart(i);
-
-                    String contentType = part.getContentType().toLowerCase();
-                    
-                    Boolean bodyRead = sbPlain.length() > 0;
-
-                    if (!bodyRead && contentType.startsWith("text/plain") ) {
-                        isHTML = false;
-                        text = (String)part.getContent();
-                    } else if (!bodyRead && contentType.startsWith("text/html")) {
-                        isHTML = true;
-                        text = (String)part.getContent();
-                    } else if (!bodyRead && contentType.startsWith("message/rfc822")) {
-                        // Extract the message and pass it
-                        MimeMessage msg = (MimeMessage) part.getDataHandler().getContent();
-                        isHTML =  handleParts(msg, msg.getContent(), sbPlain, attachmentList);
-                    } else {
-                        if (part.getFileName() != null) {
-                            // Inline images are not added to the attachment list
-                            // TODO: improve the in-line images detection 
-                            if (part.getHeader("Content-ID") == null) {
-                                MessageAttachment attachment = new MessageAttachmentImpl();
-                                attachment.setName(MimeUtility.decodeText(part.getFileName()));
-                                attachment.setContentType(part.getContentType());
-                                attachment.setSize(part.getSize());
-                                attachmentList.add(attachment);
-                            }
-                        } else {
-                            isHTML = handleParts(message, part.getContent(), sbPlain, attachmentList);
-                        }
-                    }
-
-                }
-                if (text != null)
-                    sbPlain.append(text);
-            }
-
-        }
-        return isHTML;
-    }
-    
-    private boolean handleMultiPartAlternative(Multipart mp, StringBuffer sbPlain) throws MessagingException, IOException {
-        String text = null;
-        boolean isHTML = false;
-        for (int i = 0; i < mp.getCount(); i++) {
-            Part part = mp.getBodyPart(i);
-            
-            String contentType = part.getContentType().toLowerCase();
-
-            // we prefer html
-            if (text == null && contentType.startsWith("text/plain")) {
-                isHTML = false;
-                text = (String) part.getContent();
-            } else if (contentType.startsWith("text/html")) {
-                isHTML = true;
-                text = (String) part.getContent();
-            } 
-        }
-        sbPlain.append(text);
-        return isHTML;
-    }
-    
-    protected String txtDocumentToHtml(String txt, String folderName, long uuid) {
-        
-        if (txt == null || txt.length()==0)
-            return txt;
-
-        // escape html tags symbols 
-        txt = replaceAll(txt, regex_lt, repl_lt);
-        txt = replaceAll(txt, regex_gt, repl_gt);
-        
-        // enclose between <a> http links and emails
-        txt = replaceAll(txt, regex_htmllink, repl_htmllink);
-        txt = replaceAll(txt, regex_email, repl_email);
-        
-        // put break lines
-        txt = replaceAll(txt, regex_nl, repl_nl);
-        
-        txt = filterHtmlDocument(txt, folderName, uuid);
-
-        return txt;
-    }
-    
-    protected String filterHtmlDocument(String html, String folderName, long uuid) {
-        
-        if (html == null || html.length()==0)
-            return html;
-
-        // Replace in-line images links to use Hupa's download servlet
-        html = replaceAll(html, regex_inlineImg, repl_inlineImg).replaceAll("%%FOLDER%%",folderName).replaceAll("%%UID%%", String.valueOf(uuid));
-        // Remove head, script and style tags to avoid interferences with Hupa
-        html = replaceAll(html, regex_badTags, repl_badTags);
-        // Remove body and html tags
-        html = replaceAll(html, regex_unneededTags, repl_unneededTags);
-        // Remove all onClick attributes 
-        html = replaceAllRecursive(html, regex_badAttrs, repl_badAttrs);
-        html = replaceAll(html, regex_existingHttpLinks, repl_existingHttpLinks);
-
-        //FIXME: These have serious performance problems (see testMessageDetails_Base64Image_Performance)
-        // Add <a> tags to links which are not already into <a>
-        // html = replaceAll(html, regex_orphandHttpLinks, repl_orphandHttpLinks);
-        // Add javascript method to <a> in order to open links in a different window
-        // Add <a> tags to emails which are not already into <a>
-        // html = replaceAll(html, regex_orphandEmailLinks, repl_orphandEmailLinks);
-        // Add a js method to mailto links in order to compose new mails inside hupa
-        html = replaceAll(html, regex_existingEmailLinks, repl_existngEmailLinks);
-        
-        return html;
-    }
-    
-}
diff --git a/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java b/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java
deleted file mode 100644
index ecf22b2..0000000
--- a/server/src/main/java/org/apache/hupa/server/handler/SetFlagsHandler.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.handler;
-
-import java.util.ArrayList;
-
-import javax.mail.Flags;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import javax.mail.Flags.Flag;
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-=======
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Flags.Flag;
->>>>>>> first commit
-=======
-import javax.mail.Flags.Flag;
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import javax.servlet.http.HttpSession;
-
-import net.customware.gwt.dispatch.server.ExecutionContext;
-import net.customware.gwt.dispatch.shared.ActionException;
-
-import org.apache.commons.logging.Log;
-import org.apache.hupa.server.IMAPStoreCache;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.User;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-import org.apache.hupa.shared.rpc.GenericResult;
-import org.apache.hupa.shared.rpc.SetFlag;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.sun.mail.imap.IMAPStore;
-
-public class SetFlagsHandler extends AbstractSessionHandler<SetFlag, GenericResult>{
-
-    @Inject
-    public SetFlagsHandler(IMAPStoreCache cache, Log logger,
-            Provider<HttpSession> sessionProvider) {
-        super(cache, logger, sessionProvider);
-    }
-
-    @Override
-    protected GenericResult executeInternal(SetFlag action,
-            ExecutionContext context) throws ActionException {
-        User user = getUser();
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        IMAPFolderProxy folder = action.getFolder();
-=======
-        IMAPFolder folder = action.getFolder();
->>>>>>> first commit
-=======
-        IMAPFolderProxy folder = action.getFolder();
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        ImapFolder folder = action.getFolder();
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        ArrayList<Long> uids = action.getUids();
-        com.sun.mail.imap.IMAPFolder f = null;
-        try {
-            IMAPStore store = cache.get(user);
-
-            f = (com.sun.mail.imap.IMAPFolder) store.getFolder(folder.getFullName());
-            if (f.isOpen() == false) {
-                f.open(Folder.READ_WRITE);
-            }
-            Message[] msgs = f.getMessagesByUID(toArray(uids));
-            Flag flag = JavamailUtil.convert(action.getFlag());
-            Flags flags = new Flags();
-            flags.add(flag);
-            
-            f.setFlags(msgs, flags, action.getValue());
-            return new GenericResult();
-        } catch (MessagingException e) {
-            String errorMsg = "Error while setting flags of messages with uids " + uids + " for user " + user;
-            logger.error(errorMsg,e);
-            throw new ActionException(errorMsg,e);
-        } finally {
-            if (f != null && f.isOpen()) {
-                try {
-                    f.close(false);
-                } catch (MessagingException e) {
-                    // ignore on close
-                }
-            }
-        }
-    }
-
-    public Class<SetFlag> getActionType() {
-        return SetFlag.class;
-    }
-    
-    private long[] toArray(ArrayList<Long> uids) {
-        long[] array = new long[uids.size()];
-        for (int i = 0; i < uids.size(); i++) {
-            array[i] = uids.get(i);
-        }
-        return array;
-    }
-
-}
diff --git a/server/src/test/java/com/chiaramail/hupa/helper/EcsUtilityTest.java b/server/src/test/java/com/chiaramail/hupa/helper/EcsUtilityTest.java
deleted file mode 100644
index b8105d6..0000000
--- a/server/src/test/java/com/chiaramail/hupa/helper/EcsUtilityTest.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package com.chiaramail.hupa.helper;

-

-import java.io.File;

-import java.io.FileOutputStream;

-import java.io.IOException;

-import java.io.OutputStream;

-import java.util.ArrayList;

-import java.util.List;

-import java.util.Properties;

-

-import javax.mail.Message;

-import javax.mail.MessagingException;

-import javax.mail.Session;

-

-import junit.framework.Assert;

-

-import org.apache.hupa.server.InMemoryIMAPStoreCache;

-import org.apache.hupa.server.guice.providers.JavaMailSessionProvider;

-import org.apache.hupa.server.mock.MockIMAPStore;

-import org.apache.hupa.server.mock.MockLog;

-import org.apache.hupa.shared.data.UserImpl;

-import org.apache.hupa.shared.domain.User;

-import org.junit.Test;

-

-import com.sun.mail.imap.IMAPFolder;

-import com.sun.mail.imap.IMAPStore;

-

-public class EcsUtilityTest {

-  

-    static final String imapServer = "imap.gmail.com";

-    static final int imapPort = 993;

-    static final boolean isSSl = true;

-    static final String truststore = "";

-    static final String truststorePassword = "";

-    

-    static final String imapUser = "mcdodot@gmail.com";

-    static final String imapPass = "5233manuel";

-

-    static final String ecsUser = "mcdodot@gmail.com";

-    static final String ecsPass = "PNP*8M*!";

-    

-    static final String testKey = "92210546391265182698995644151691";

-    static final String testCryptedText = "ta9WViD2NGlGXbMwiCwz5czVzq+4inQl2RCBFjLOs/rCIbPg1lLcemKaEYRwlxKHajbBi+jKJy6NHd/4Kw6diHLhQ/QVs2C9lTz2toV8SAabr1+sKwGXVqOqtyJLACIP0Hu5Jo7E6t0y3muJGVXgq5leA41kd2z/g9ViXXyuXwCSNImcsA4QFxBm+i/9DAACqrwi3uUR9wbVSOkAfHjEwT3Qpr/O8ClH/82miMsgusq/NcoRFx5TAgf0UFbTZ2mUGbMNFFcD/ZBkzEiDOUlwRlyfP+cYAFJWuXp8W6GAFsE=";

-    

-    

-    Session session = Session.getDefaultInstance(new Properties(), null);

-    static InMemoryIMAPStoreCache cache = new InMemoryIMAPStoreCache(new MockLog(), imapServer, imapPort, isSSl, 2, 60000, false,

-        truststore, truststorePassword, new JavaMailSessionProvider().get());

-

-    static User user = new UserImpl() {

-       {setName(imapUser); setPassword(imapPass);}

-    };

-    

-    static Account ecsAccount = new Account() {

-        {email = ecsUser; password = ecsPass;}

-    };

-    

-    @Test

-    public void testEncryptDecrypt() throws Exception {

-        String clear = "Hello world";

-        String key = Utility.generateEncryptionKey();

-        String b64Encrypted = Utility.encrypt(key.getBytes(), clear.getBytes());

-        byte[] encrypted = Utility.base64DecodeToBytes(b64Encrypted);

-        byte[] result = Utility.decrypt(key.getBytes(), encrypted);

-        Assert.assertEquals(clear, new String(result));

-    }

-    

-    @Test

-    public void testDecryptEcsData() throws Exception {

-        byte[] encrypted = Utility.base64DecodeToBytes(testCryptedText);

-        byte[] result = Utility.decrypt(testKey.getBytes(), encrypted);

-        Assert.assertEquals(215, result.length);

-        Assert.assertTrue(new String(result).contains("Manolo"));

-    }

-    

-    @Test

-    public void testIsUserRegistered() throws Exception {

-        Assert.assertEquals("true", Utility.isUserRegistered(ecsAccount, ecsAccount.email));

-    }

-    

-    @Test

-    public void testFetchContent() throws Exception {

-        

-        IMAPStore store = getStore(true);

-        List<Message> messages = getAllEcsMessagesInInbox(store);

-

-        Assert.assertTrue(messages.size() > 0);

-        

-        for (Message m : messages) {

-            // Important: Remove RealName part from the email since ECS server understands just the sender email address

-            String fromEmail = m.getFrom()[0].toString().replaceFirst("^.*<(.*)>.*$", "$1").trim();

-            

-            String[] tmp = m.getHeader(Utility.CONTENT_SERVER_NAME);

-            String serverName = tmp != null && tmp.length > 0 ? tmp[0] : Utility.DEFAULT_CONTENT_SERVER_NAME;

-            

-            tmp = m.getHeader(Utility.CONTENT_SERVER_PORT);

-            String serverPort = tmp != null && tmp.length > 0 ? tmp[0] : Utility.DEFAULT_CONTENT_SERVER_PORT;

-            

-            tmp = m.getHeader(Utility.ENCRYPTION_KEY);

-            String key = tmp != null && tmp.length > 0 ? tmp[0] : null;

-            

-            tmp = m.getHeader(Utility.CONTENT_POINTER);

-            String pointer = tmp != null && tmp.length > 0 ? tmp[0] : "";

-            String[] pointers = pointer.split("\\s+");

-            

-            // Getting just the content using utility method in Utility class

-            System.out.println("+++ Fetching Content for Message: " + fromEmail + " " + pointer + " " + key);

-            String s = Utility.fetchBodyContent(m, ecsAccount, pointers, serverName, serverPort, key);

-            Assert.assertNotNull(s);

-            // System.out.println(s);

-            

-            // Demonstration of how to get body and attachments using directly the askServer method

-            

-

-            

-            for (int i = 0; i < pointers.length; i++) {

-                String[] responseLines = Utility.askServer(

-                        "https://" + serverName + ":" + serverPort + Utility.CONTENT_SERVER_APP, 

-                        Utility.FETCH_CONTENT + Utility.BLANK + fromEmail + Utility.BLANK + pointers[i], 

-                        ecsAccount.getEmail(), Utility.base64Encode(ecsAccount.getPassword()),

-                        i > 0, fromEmail + "_" + pointers[0] + "_" + pointers[i] + ".ecs", key);

-                

-                Assert.assertEquals("3", responseLines[0]);

-                // System.out.println("++ Ecs server Response for part: " + i + " " + pointers[i]);

-                // for (String t : responseLines) {

-                   // System.out.println(t);

-                //}

-            }

-        }

-    }

-

-    private List<Message> getAllEcsMessagesInInbox(IMAPStore store) throws MessagingException, IOException {

-        

-        String folder = store instanceof MockIMAPStore ? MockIMAPStore.MOCK_INBOX_FOLDER : "INBOX";

-        

-        final IMAPFolder imapFolder = (IMAPFolder) store.getFolder(folder);

-        imapFolder.open(IMAPFolder.READ_WRITE);

-        

-        // Get all Messages in folder (light-weight references)

-        // Warning: if you run the test with a real IMAP account you could have thousands of messages.

-        int count = imapFolder.getMessageCount();

-        Message[] messages = imapFolder.getMessages(1, count);

-

-        // Filter all messages to return only valid ECS messages 

-        List<Message> ret = new ArrayList<Message>();

-        for (Message m : messages) {

-            if (Utility.validateHeaders(m)) {

-                ret.add(m);

-            }

-        }

-        return ret;

-    }

-

-    // Create a new imap store connection (mock or real)

-    private IMAPStore getStore(boolean mock) throws Exception {

-        IMAPStore store = null;

-        if (mock) {

-            store = new MockIMAPStore(session);

-        } else {

-            // Configure session

-            session.setDebug(false);

-            Properties props = session.getProperties();

-            props.setProperty("mail.mime.decodetext.strict", "false");

-            props.setProperty("mail.imap.connectionpoolsize", 2 + "");

-            props.setProperty("mail.imap.connectionpooltimeout", 30000 + "");

-            props.setProperty("mail.imaps.connectionpoolsize", 2 + "");

-            props.setProperty("mail.imaps.connectionpooltimeout", 30000 + "");

-            System.setProperty("mail.mime.decodetext.strict", "false");        

-            // Create the imap connection

-            store = (IMAPStore)session.getStore(isSSl ? "imaps" : "imap");

-            store.connect(imapServer, imapPort, imapUser, imapPass);

-        }

-        return store;

-    }

-}

diff --git a/server/src/test/java/org/apache/hupa/server/handler/AbtractSendMessageHandlerTest.java b/server/src/test/java/org/apache/hupa/server/handler/AbtractSendMessageHandlerTest.java
deleted file mode 100644
index 4f07161..0000000
--- a/server/src/test/java/org/apache/hupa/server/handler/AbtractSendMessageHandlerTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.handler;
-
-
-import javax.mail.Message;
-import javax.mail.Part;
-
-import org.apache.hupa.server.HupaGuiceTestCase;
-import org.apache.hupa.server.mock.MockIMAPFolder;
-import org.apache.hupa.server.mock.MockIMAPStore;
-import org.apache.hupa.server.utils.MessageUtils;
-import org.apache.hupa.server.utils.SessionUtils;
-import org.apache.hupa.server.utils.TestUtils;
-import org.apache.hupa.shared.domain.SmtpMessage;
-import org.apache.hupa.shared.rpc.SendMessage;
-
-import com.sun.mail.imap.IMAPStore;
-
-public class AbtractSendMessageHandlerTest extends HupaGuiceTestCase {
-
-    String contentTwoAttach = "multipart/mixed\n"
-                            + " multipart/alternative\n"
-                            + "  text/plain\n"
-                            + "  text/html\n"
-                            + " mock/attachment => uploadedFile_1.bin\n"
-                            + " mock/attachment => uploadedFile_2.bin\n";
-
-    public void testComposeMessage() throws Exception{
-        Message msg = TestUtils.createMockMimeMessage(session, "body", null, -1);
-        String exp = "text/plain\n";
-        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
-        
-        msg = TestUtils.createMockMimeMessage(session, "body", null, 0);
-        exp = "text/plain\n";
-        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
-
-        msg = TestUtils.createMockMimeMessage(session, null, "html", 0);
-        exp = "text/html\n";
-        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
-
-        msg = TestUtils.createMockMimeMessage(session, 0);
-        exp = "multipart/alternative\n" +
-              " text/plain\n" +
-              " text/html\n";
-        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
-        
-        msg = TestUtils.createMockMimeMessage(session, 1);
-        exp = "multipart/mixed\n" +
-              " multipart/alternative\n" +
-              "  text/plain\n" +
-              "  text/html\n" +
-              " mock/attachment => file_1.bin\n";
-        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
-        
-        msg = TestUtils.createMockMimeMessage(session, 3);
-        exp = "multipart/mixed\n" +
-              " multipart/alternative\n" +
-              "  text/plain\n" +
-              "  text/html\n" +
-              " mock/attachment => file_1.bin\n" +
-              " mock/attachment => file_2.bin\n" +
-              " mock/attachment => file_3.bin\n";
-        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
-    }
-    
-    public void testRestoreInlineLinks() {
-        String txt, res;
-        txt = ".. <img\nsrc='...&name=abcd' name='cid:abcd'\nwhatever=/> ..";
-        res = sendMessageHandler.restoreInlineLinks(txt);
-        assertEquals(".. <img\nsrc='cid:abcd'\nwhatever=/> ..", res);
-    }
-
-    public void testHtmlmessageToText() {
-        String txt, res;
-        txt = "<div>Hola:</div>Como \n estas<br/>Adios\n\n";
-        res = sendMessageHandler.htmlToText(txt);
-        assertEquals("Hola:\nComo estas\nAdios ", res);
-    }
-    
-    public void testSendEmailWithAttachments() throws Exception {
-        IMAPStore store = storeCache.get(testUser);
-        MockIMAPFolder sentbox = (MockIMAPFolder) store.getFolder(MockIMAPStore.MOCK_SENT_FOLDER);
-        
-        SmtpMessage smtpmsg = TestUtils.createMockSMTPMessage(SessionUtils.getSessionRegistry(logger, httpSession), 2);
-        SendMessage action = new SendMessage(smtpmsg);
-        
-        Message message = sendMessageHandler.createMessage(session, action);
-        message =  sendMessageHandler.fillBody(message, action);
-        
-        assertEquals(contentTwoAttach, TestUtils.summaryzeContent(message).toString());
-
-        sendMessageHandler.sendMessage(testUser, message);
-        
-        // The reported size is wrong before the message has been saved
-        Part part = MessageUtils.handleMultiPart(logger, message.getContent(), "uploadedFile_1.bin");
-        assertTrue(part.getSize() < 0);
-
-        assertTrue(sentbox.getMessages().length == 0);
-        sendMessageHandler.saveSentMessage(testUser, message);
-        assertTrue(sentbox.getMessages().length == 1);
-        
-        message = sentbox.getMessage(0);
-        assertNotNull(message);
-        assertEquals(contentTwoAttach, TestUtils.summaryzeContent(message).toString());
-
-        // After saving the message, the reported size has to be OK
-        part = MessageUtils.handleMultiPart(logger, message.getContent(), "uploadedFile_1.bin");
-        assertTrue(part.getSize() > 0);
-    }
-
-    public void testExecute() throws Exception {
-        IMAPStore store = storeCache.get(testUser);
-        MockIMAPFolder sentbox = (MockIMAPFolder) store.getFolder(MockIMAPStore.MOCK_SENT_FOLDER);
-        
-        SmtpMessage smtpmsg = TestUtils.createMockSMTPMessage(SessionUtils.getSessionRegistry(logger, httpSession), 2);
-        SendMessage action = new SendMessage(smtpmsg);
-        
-        assertTrue(sentbox.getMessages().length == 0);
-        sendMessageHandler.execute(action, null);
-        Message message = sentbox.getMessage(0);
-        assertNotNull(message);
-        assertEquals(contentTwoAttach, TestUtils.summaryzeContent(message).toString());
-        
-        Part part = MessageUtils.handleMultiPart(logger, message.getContent(), "uploadedFile_1.bin");
-        assertTrue(part.getSize() > 0);
-    }
-}
diff --git a/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java b/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java
deleted file mode 100644
index c77dd30..0000000
--- a/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.handler;
-
-import junit.framework.Assert;
-
-import org.apache.hupa.server.HupaGuiceTestCase;
-import org.apache.hupa.shared.rpc.Contacts;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
-
-public class ContactsHandlerTest extends HupaGuiceTestCase {
-	
-	private Contact[] getContacts() throws Exception {
-		return contactsHandler.execute(new Contacts(), null).getContacts();
-	}
-    
-    public void testContactsHandler() throws Exception {
-        Assert.assertEquals(0, getContacts().length);
-        userPreferences.addContact("Somebody <somebody@foo.com>");
-        userPreferences.addContact(" Some.body   <somebody@foo.com>  ");
-        userPreferences.addContact("\"somebody\" <somebody@foo.com>");
-        Assert.assertEquals(1, getContacts().length);
-        userPreferences.addContact("<somebody@foo.com>");
-        userPreferences.addContact("somebody@foo.com");
-        userPreferences.addContact("\"somebody@foo.com\" <somebody@foo.com>");
-        userPreferences.addContact("<somebody@foo.com> <somebody@foo.com>");
-        Assert.assertEquals(2, getContacts().length);
-=======
-=======
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
->>>>>>> constant changed by manolo
-
-public class ContactsHandlerTest extends HupaGuiceTestCase {
-	
-	private Contact[] getContacts() throws Exception {
-		return contactsHandler.execute(new Contacts(), null).getContacts();
-	}
-    
-    public void testContactsHandler() throws Exception {
-        Assert.assertEquals(0, getContacts().length);
-        userPreferences.addContact("Somebody <somebody@foo.com>");
-        userPreferences.addContact(" Some.body   <somebody@foo.com>  ");
-<<<<<<< HEAD
-        Assert.assertEquals(1, contactsHandler.execute(new Contacts(), null).getContacts().length);
->>>>>>> first commit
-=======
-        userPreferences.addContact("\"somebody\" <somebody@foo.com>");
-        Assert.assertEquals(1, getContacts().length);
-        userPreferences.addContact("<somebody@foo.com>");
-        userPreferences.addContact("somebody@foo.com");
-        userPreferences.addContact("\"somebody@foo.com\" <somebody@foo.com>");
-        Assert.assertEquals(2, getContacts().length);
->>>>>>> constant changed by manolo
-    }
-    
-}
diff --git a/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java b/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java
deleted file mode 100644
index 44f403c..0000000
--- a/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.handler;
-
-import org.apache.hupa.server.HupaGuiceTestCase;
-import org.apache.hupa.server.mock.MockIMAPFolder;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-import org.apache.hupa.shared.rpc.FetchMessages;
-import org.apache.hupa.shared.rpc.FetchMessagesResult;
-
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-
-import javax.mail.Flags;
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.Flags.Flag;
-import javax.mail.internet.MimeMessage;
-
-public class FetchMessagesHandlerTest extends HupaGuiceTestCase {
-
-    public void testConvert() throws Exception {
-        MockIMAPFolder f = (MockIMAPFolder)store.getFolder("WHATEVER"); 
-        f.create(Folder.HOLDS_MESSAGES);
-        
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        ByteArrayInputStream is = new ByteArrayInputStream("From: \"a b c\"<aa@foo.com>\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
-        MimeMessage m1 = new MimeMessage(session, is);
-        is = new ByteArrayInputStream("From: \"=?ISO-8859-1?Q?Manolo_Pe=F1a?=\" <penya@foo.com>\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
-        MimeMessage m2 = new MimeMessage(session, is);
-        is = new ByteArrayInputStream("From: a@foo.com\nTo: \"<b@foo.com>\" <b@foo.com>\nSubject: =?ISO-8859-1?Q?Monta=F1a?=\n\ndata".getBytes());
-<<<<<<< HEAD
-=======
-        ByteArrayInputStream is = new ByteArrayInputStream("From: a@foo.com\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
-=======
-        ByteArrayInputStream is = new ByteArrayInputStream("From: \"aa@foo.com\" <aa@foo.com>\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
->>>>>>> constant changed by manolo
-=======
-        ByteArrayInputStream is = new ByteArrayInputStream("From: \"a b c\"<aa@foo.com>\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
->>>>>>> constantly changed by manolo
-        MimeMessage m1 = new MimeMessage(session, is);
-        is = new ByteArrayInputStream("From: \"=?ISO-8859-1?Q?Manolo_Pe=F1a?=\" <penya@foo.com>\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
-        MimeMessage m2 = new MimeMessage(session, is);
-        is = new ByteArrayInputStream("From: a@foo.com\nTo: b@foo.com\nSubject: =?ISO-8859-1?Q?Monta=F1a?=\n\ndata".getBytes());
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-        MimeMessage m3 = new MimeMessage(session, is);
-        
-        ArrayList<org.apache.hupa.shared.domain.Message> msgs = fetchMessagesHandler.convert(2, f, new Message[]{m1, m2, m3});
-        assertEquals(2, msgs.size());
-        
-        msgs = fetchMessagesHandler.convert(10, f, new Message[]{m1, m2, m3});
-        assertEquals(3, msgs.size());
-<<<<<<< HEAD
-<<<<<<< HEAD
-        
-        msgs = fetchMessagesHandler.convert(10, f, new Message[]{m1});
-        assertEquals("a b c <aa@foo.com>",  msgs.get(0).getFrom());
-=======
->>>>>>> first commit
-=======
-        
-        msgs = fetchMessagesHandler.convert(10, f, new Message[]{m1});
-<<<<<<< HEAD
-        assertEquals("aa@foo.com <aa@foo.com>",  msgs.get(0).getFrom());
->>>>>>> constant changed by manolo
-=======
-        assertEquals("a b c <aa@foo.com>",  msgs.get(0).getFrom());
->>>>>>> constantly changed by manolo
-
-        msgs = fetchMessagesHandler.convert(10, f, new Message[]{m2});
-        assertEquals("Manolo Pe\u00F1a <penya@foo.com>",  msgs.get(0).getFrom());
-        
-        msgs = fetchMessagesHandler.convert(10, f, new Message[]{m3});
-        assertEquals("Monta\u00F1a",  msgs.get(0).getSubject());
-<<<<<<< HEAD
-<<<<<<< HEAD
-        assertEquals("b@foo.com <b@foo.com>",  msgs.get(0).getTo().get(0));
-
-=======
->>>>>>> first commit
-=======
-        assertEquals("b@foo.com <b@foo.com>",  msgs.get(0).getTo().get(0));
-
->>>>>>> constantly changed by manolo
-    }
-
-    public void testFetchMessages() throws Exception {
-
-        MockIMAPFolder serverfolder = (MockIMAPFolder)store.getFolder("WHATEVER"); 
-        serverfolder.create(Folder.HOLDS_MESSAGES);
-        
-        ImapFolderImpl clientfolder = new ImapFolderImpl("WHATEVER");
-        FetchMessagesResult result = fetchMessagesHandler.execute(new FetchMessages(clientfolder, 0, 10, "*"), null);
-        assertEquals(0, result.getRealCount());
-        
-        ByteArrayInputStream is = new ByteArrayInputStream("From: a@foo.com\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
-        MimeMessage msg = new MimeMessage(session, is);
-        serverfolder.addMessages(new Message[]{msg});
-        result = fetchMessagesHandler.execute(new FetchMessages(clientfolder, 0, 10, "something"), null);
-        assertEquals(1, result.getRealCount());
-        assertEquals(1, result.getMessages().size());
-        
-        result = fetchMessagesHandler.execute(new FetchMessages(clientfolder, 0, 10, null), null);
-        assertEquals(1, result.getRealCount());
-        assertEquals(1, result.getMessages().size());
-
-        is = new ByteArrayInputStream("From: a@foo.com\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
-        msg = new MimeMessage(session, is);
-        serverfolder.appendMessages(new Message[]{msg});
-        
-        result = fetchMessagesHandler.execute(new FetchMessages(clientfolder, 0, 10, "*"), null);
-        assertEquals(2, result.getRealCount());
-        assertEquals(2, result.getMessages().size());
-        
-        result = fetchMessagesHandler.execute(new FetchMessages(clientfolder, 0, 10, null), null);
-        assertEquals(2, serverfolder.getMessageCount());
-        assertEquals(2, serverfolder.getUnreadMessageCount());
-        assertEquals(2, result.getRealCount());
-        assertEquals(2, result.getMessages().size());
-        assertEquals(2, result.getMessages().size());
-        
-        msg.setFlags(new Flags(Flag.SEEN), true);
-        assertEquals(1, serverfolder.getUnreadMessageCount());
-        
-        serverfolder.appendMessages(new Message[]{msg});
-        result = fetchMessagesHandler.execute(new FetchMessages(clientfolder, 0, 10, "*"), null);
-        assertEquals(3, result.getRealCount());
-        assertEquals(1, result.getRealUnreadCount());
-    }
-}
diff --git a/server/src/test/java/org/apache/hupa/server/handler/HandlersTest.java b/server/src/test/java/org/apache/hupa/server/handler/HandlersTest.java
deleted file mode 100644
index f291e6c..0000000
--- a/server/src/test/java/org/apache/hupa/server/handler/HandlersTest.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.hupa.server.handler;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-import java.io.ByteArrayInputStream;
-
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-=======
-import com.google.inject.Module;
-
-import com.sun.mail.imap.IMAPStore;
->>>>>>> first commit
-=======
-import java.io.ByteArrayInputStream;
-
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
->>>>>>> constantly changed by manolo
-
-import net.customware.gwt.dispatch.shared.ActionException;
-
-import org.apache.hupa.server.HupaGuiceTestCase;
-import org.apache.hupa.server.guice.GuiceServerTestModule;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.server.guice.providers.LogProvider;
-=======
->>>>>>> first commit
-=======
-import org.apache.hupa.server.guice.providers.LogProvider;
-<<<<<<< HEAD
->>>>>>> constantly changed by manolo
-import org.apache.hupa.shared.data.IMAPFolder;
-=======
-import org.apache.hupa.shared.data.ImapFolderImpl;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-import org.apache.hupa.shared.rpc.CreateFolder;
-import org.apache.hupa.shared.rpc.DeleteFolder;
-import org.apache.hupa.shared.rpc.FetchFolders;
-import org.apache.hupa.shared.rpc.FetchFoldersResult;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.rpc.FetchMessages;
-import org.apache.hupa.shared.rpc.FetchMessagesResult;
-
-import com.google.inject.Module;
-import com.sun.mail.imap.IMAPStore;
-=======
-
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.rpc.FetchMessages;
-import org.apache.hupa.shared.rpc.FetchMessagesResult;
-
-import com.google.inject.Module;
-import com.sun.mail.imap.IMAPStore;
->>>>>>> constantly changed by manolo
-
-public class HandlersTest extends HupaGuiceTestCase {
-
-    /*
-     These tests should work with Courier, Gmail and any other real IMAP implementations
-     If you want to run these tests against your IMAP server do this:
-        1.- Change properties and classes to do integration tests and
-        2.- Be sure the user and password are set correctly
-    */
-    class MyModule extends GuiceServerTestModule {
-        public MyModule() {
-            // properties = courierProperties;
-            // properties = gmailProperties;
-<<<<<<< HEAD
-<<<<<<< HEAD
-            // logProviderClass = LogProvider.class;
-=======
-            // logClass = LogProvider.class;
->>>>>>> first commit
-=======
-            // logProviderClass = LogProvider.class;
->>>>>>> constantly changed by manolo
-        }
-    }
-    
-    @Override
-    protected Module[] getModules() {
-        return new Module[]{new MyModule()};
-    }
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
->>>>>>> constantly changed by manolo
-    public void testLoginAndFetchFolders() throws Exception {
-        org.apache.hupa.shared.rpc.LoginUser l = new org.apache.hupa.shared.rpc.LoginUser(testUser.getName(),testUser.getPassword());
-        loginUser.execute(l, null);
-        FetchFoldersResult result = fetchFoldersHandler.execute(new FetchFolders(), null);
-        assertNotNull(result);
-    }
-    
-    
-    public void testFetchMessages() throws Exception {
-        IMAPStore store = storeCache.get(testUser);
-        
-        String folderName = testUser.getSettings().getInboxFolderName();
-        ImapFolderImpl sFolder = new ImapFolderImpl();
-        sFolder.setFullName(folderName);
-        
-        com.sun.mail.imap.IMAPFolder f1 = (com.sun.mail.imap.IMAPFolder)store.getFolder(sFolder.getFullName());
-        assertTrue(f1.exists());
-        
-        FetchMessagesResult result = fetchMessagesHandler.execute(new FetchMessages(sFolder, 0, 100, ""), null);
-        int nmsgs = result.getMessages().size();
-
-        ByteArrayInputStream is = new ByteArrayInputStream("From: a@foo.com\nTo: b@foo.com\nSubject: something\n\ndata".getBytes());
-        MimeMessage msg = new MimeMessage(session, is);
-        if (!f1.isOpen()) {
-            f1.open(Folder.READ_WRITE);
-<<<<<<< HEAD
-        }
-        f1.addMessages(new Message[]{msg});
-        
-        result = fetchMessagesHandler.execute(new FetchMessages(sFolder, 0, 100, ""), null);
-        assertEquals(1, result.getMessages().size() - nmsgs);
-=======
-    public void testLoginAndFetchFolders() {
-        try {
-            org.apache.hupa.shared.rpc.LoginUser l = new org.apache.hupa.shared.rpc.LoginUser(testUser.getName(),testUser.getPassword());
-            loginUser.execute(l, null);
-            FetchFoldersResult result = fetchFoldersHandler.execute(new FetchFolders(), null);
-            assertNotNull(result);
-        } catch (ActionException e) {
-            e.printStackTrace();
-            fail("Shouldn't throw an exception");
-        }
->>>>>>> first commit
-=======
-        }
-        f1.addMessages(new Message[]{msg});
-        
-        result = fetchMessagesHandler.execute(new FetchMessages(sFolder, 0, 100, ""), null);
-        assertEquals(1, result.getMessages().size() - nmsgs);
->>>>>>> constantly changed by manolo
-    }
-    
-    public void testCreateAndDeleteFolder() throws MessagingException {
-        IMAPStore store = storeCache.get(testUser);
-        
-        String folderName = testUser.getSettings().getInboxFolderName() + store.getDefaultFolder().getSeparator() + "newFolder";
-        ImapFolderImpl sFolder = new ImapFolderImpl();
-        sFolder.setFullName(folderName);
-        
-        Folder f1 = store.getFolder(sFolder.getFullName());
-        assertFalse("not exists", f1.exists());
-        
-        try {
-            createFolderHandler.execute(new CreateFolder(sFolder), null);
-            Folder f = store.getFolder(sFolder.getFullName());
-            assertTrue("exists", f.exists());
-            assertFalse("Not opened", f.isOpen());
-            f.open(Folder.READ_WRITE);
-            assertTrue("opened", f.isOpen());
-            
-            Message[] msgs = f.getMessages();
-            assertEquals(0, msgs.length);
-            
-            deleteFolderHandler.execute(new DeleteFolder(sFolder), null);
-            f = store.getFolder(sFolder.getFullName());
-            assertFalse("not exists",f.exists());
-
-        } catch (ActionException e) {
-            e.printStackTrace();
-            fail("Shouldn't throw an exception ");
-        }
-    }
-}
diff --git a/server/src/test/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorageTest.java b/server/src/test/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorageTest.java
deleted file mode 100644
index b1fb813..0000000
--- a/server/src/test/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorageTest.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.server.preferences;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-<<<<<<< HEAD
-<<<<<<< HEAD
-
-import javax.mail.Flags;
-import javax.mail.Folder;
-
-import org.apache.hupa.server.HupaGuiceTestCase;
-import org.apache.hupa.server.guice.GuiceServerTestModule;
-import org.apache.hupa.server.guice.providers.LogProvider;
-=======
-import java.util.Properties;
-=======
->>>>>>> constantly changed by manolo
-
-import javax.mail.Flags;
-import javax.mail.Folder;
-
-import org.apache.hupa.server.HupaGuiceTestCase;
-import org.apache.hupa.server.guice.GuiceServerTestModule;
-<<<<<<< HEAD
-import org.apache.hupa.server.guice.demo.DemoGuiceServerModule.DemoIMAPStoreCache;
-import org.apache.hupa.server.guice.providers.DefaultUserSettingsProvider;
-import org.apache.hupa.server.guice.providers.JavaMailSessionProvider;
-import org.apache.hupa.server.handler.AbstractSendMessageHandler;
-import org.apache.hupa.server.handler.ContactsHandler;
-import org.apache.hupa.server.handler.CreateFolderHandler;
-import org.apache.hupa.server.handler.DeleteFolderHandler;
-import org.apache.hupa.server.handler.DeleteMessageByUidHandler;
-import org.apache.hupa.server.handler.FetchFoldersHandler;
-import org.apache.hupa.server.handler.FetchMessagesHandler;
-import org.apache.hupa.server.handler.ForwardMessageHandler;
-import org.apache.hupa.server.handler.GetMessageDetailsHandler;
-import org.apache.hupa.server.handler.IdleHandler;
-import org.apache.hupa.server.handler.LoginUserHandler;
-import org.apache.hupa.server.handler.LogoutUserHandler;
-import org.apache.hupa.server.handler.ReplyMessageHandler;
-import org.apache.hupa.server.handler.SendMessageHandler;
-import org.apache.hupa.server.mock.MockConstants;
-import org.apache.hupa.server.mock.MockHttpSessionProvider;
-import org.apache.hupa.server.mock.MockIMAPStore;
-import org.apache.hupa.server.mock.MockLogProvider;
-import org.apache.hupa.server.utils.ConfigurationProperties;
->>>>>>> first commit
-=======
-import org.apache.hupa.server.guice.providers.LogProvider;
->>>>>>> constantly changed by manolo
-import org.apache.hupa.server.utils.SessionUtils;
-import org.apache.hupa.server.utils.TestUtils;
-import org.apache.hupa.shared.data.ImapFolderImpl;
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.SMTPMessage;
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import org.apache.hupa.shared.data.Settings;
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.rpc.Contacts;
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-=======
-import org.apache.hupa.shared.domain.SmtpMessage;
->>>>>>> forward and reply message to use RF
-import org.apache.hupa.shared.rpc.FetchMessages;
-import org.apache.hupa.shared.rpc.FetchMessagesResult;
-import org.apache.hupa.shared.rpc.SendMessage;
-
-import com.google.inject.Module;
-<<<<<<< HEAD
-<<<<<<< HEAD
-=======
-import com.google.inject.Singleton;
-import com.google.inject.name.Names;
->>>>>>> first commit
-=======
->>>>>>> constantly changed by manolo
-import com.sun.mail.imap.IMAPStore;
-
-public class InImapUserPreferencesStorageTest extends HupaGuiceTestCase {
-
-    /*
-       These tests should work with Courier, Gmail and any other real IMAP implementation.
-       So, if you wanted to run these tests against your IMAP server do this:
-         - Set the correct properties.
-         - Be sure the user and password are set correctly
-         - Comment the delay
-     */
-<<<<<<< HEAD
-<<<<<<< HEAD
-    static class InImapUserPreferencesGuiceModule extends GuiceServerTestModule {
-    	public InImapUserPreferencesGuiceModule() {
-    		
-=======
-    static class MyModule extends GuiceServerTestModule {
-        public MyModule() {
->>>>>>> first commit
-=======
-    static class InImapUserPreferencesGuiceModule extends GuiceServerTestModule {
-    	public InImapUserPreferencesGuiceModule() {
-    		
->>>>>>> constantly changed by manolo
-            // Select a valid imap provider, comment all to use Mock
-            // properties = courierProperties;
-            // properties = gmailProperties;
-            // properties = jamesProperties;
-<<<<<<< HEAD
-<<<<<<< HEAD
-
-    	    // Uncomment to use production logger
-            logProviderClass = LogProvider.class;
-    		
-            userPreferencesStorageClass = InImapUserPreferencesStorage.class;
-            
-            // to run test faster
-            InImapUserPreferencesStorage.IMAP_SAVE_DELAY = 400;
-        }
-        
-=======
-            
-            // Uncomment to use production logger
-            // logClass = LogProvider.class;
-
-            // Change the default delay to run test faster
-            InImapUserPreferencesStorage.IMAP_SAVE_DELAY = 400;
-        }
-=======
->>>>>>> constantly changed by manolo
-
-    	    // Uncomment to use production logger
-            logProviderClass = LogProvider.class;
-    		
-            userPreferencesStorageClass = InImapUserPreferencesStorage.class;
-            
-            // to run test faster
-            InImapUserPreferencesStorage.IMAP_SAVE_DELAY = 400;
-        }
-<<<<<<< HEAD
->>>>>>> first commit
-=======
-        
->>>>>>> constantly changed by manolo
-    }
-    
-    @Override
-    protected Module[] getModules() {
-<<<<<<< HEAD
-<<<<<<< HEAD
-        return new Module[]{new InImapUserPreferencesGuiceModule()};
-=======
-        return new Module[]{new MyModule()};
->>>>>>> first commit
-=======
-        return new Module[]{new InImapUserPreferencesGuiceModule()};
->>>>>>> constantly changed by manolo
-    }
-    
-    /**
-     * Delete all messages in user's dratfs folder
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-        Folder f = storeCache.get(testUser).getFolder(testUser.getSettings().getDraftsFolderName());
-        if (f.exists() && f.getMessageCount() > 0) {
-            f.open(Folder.READ_WRITE);
-            f.setFlags(f.getMessages(), new Flags(Flags.Flag.DELETED), true);
-            f.close(true);
-        }
-    }
-    
-    public void testAnySerializableObjectCanBeSavedInIMAP() throws Exception {
-        IMAPStore store = storeCache.get(testUser);
-        String folderName = testUser.getSettings().getInboxFolderName() + store.getDefaultFolder().getSeparator() + "aFolder";
-        String magicSubject = "magicSubject";
-        Object objectOne = new String("a serializable object");
-        Object objectTwo = new String("another serializable object");
-
-        // Remove the folder if exist
-        Folder f = store.getFolder(folderName);
-        if (f.exists()) {
-            f.delete(true);
-        }
-
-        // Check saving an object when the folder doesnt exist
-        Object o = InImapUserPreferencesStorage.readUserPreferencesFromIMAP(logger, testUser, store, folderName, magicSubject);
-        assertNull(o);
-
-        InImapUserPreferencesStorage.saveUserPreferencesInIMAP(logger, testUser, session, store, folderName, magicSubject, objectOne);
-
-        Folder folder = store.getFolder(folderName);
-        assertNotNull(folder);
-        assertEquals(1, folder.getMessageCount());
-
-        o = InImapUserPreferencesStorage.readUserPreferencesFromIMAP(logger, testUser, store, folderName, magicSubject);
-        assertNotNull(o);
-        assertEquals(objectOne, o);
-
-        // Check saving an object when the folder already exist
-        InImapUserPreferencesStorage.saveUserPreferencesInIMAP(logger, testUser, session, store, folderName, magicSubject, objectTwo);
-        folder = store.getFolder(folderName);
-        assertEquals(1, folder.getMessageCount());
-        o = InImapUserPreferencesStorage.readUserPreferencesFromIMAP(logger, testUser, store, folderName, magicSubject);
-        assertEquals(objectTwo, o);
-        
-        // Remove the folder
-        store.getFolder(folderName).delete(true);
-    }
-    
-    public void testFetchMessagesFillsTheContactsListAndItIsSavedAsynchronously() throws Exception {
-        IMAPStore store = storeCache.get(testUser);
-        String folderName = testUser.getSettings().getDraftsFolderName();
-        
-        // Setup deletes all Drafts messages and contacts in session
-        assertEquals(0, userPreferences.getContacts().length);
-        Folder folder = store.getFolder(folderName);
-        if (folder.exists())
-            assertTrue(folder.getMessageCount() == 0);
-        
-        // Fetch inbox messages
-        ImapFolderImpl cFolder = new ImapFolderImpl(testUser.getSettings().getInboxFolderName());
-        FetchMessagesResult result = fetchMessagesHandler.execute(new FetchMessages(cFolder, 0, 10, null), null);
-        
-        // Could be possible that there insn't any message in inbox
-        if (result.getRealCount() > 0) {
-            int contactsCount = userPreferences.getContacts().length;
-            assertTrue(contactsCount > 0);
-
-            // The imap is saved asynchronously after a delay, so the folder exists after a while
-            folder = store.getFolder(folderName);
-            if (folder.exists())
-                assertTrue(folder.getMessageCount() == 0);
-            
-            Thread.sleep(InImapUserPreferencesStorage.IMAP_SAVE_DELAY + 500);
-            folder = store.getFolder(folderName);
-            assertNotNull(folder);
-            assertTrue(folder.exists());
-            assertEquals(1, folder.getMessageCount());
-            
-            // When data is deleted from session, contacts came from imap
-            httpSession.removeAttribute(InImapUserPreferencesStorage.USER_ATTR);
-            assertEquals(contactsCount, userPreferences.getContacts().length );
-        }
-    }
-    
-    public void testSendMessagesAddContactsToList() throws Exception {
-        // Setup deletes all Drafts messages and contacts in session
-        assertEquals(0, userPreferences.getContacts().length);
-
-        // Send an email to only one email
-        SmtpMessage smtpmsg = TestUtils.createMockSMTPMessage(SessionUtils.getSessionRegistry(logger, httpSession), 2);
-        smtpmsg.setFrom(testUser.getName());
-        smtpmsg.setTo(new ArrayList<String>(Arrays.asList(testUser.getName())));
-        smtpmsg.setCc(new ArrayList<String>());
-        smtpmsg.setBcc(new ArrayList<String>());
-        SendMessage action = new SendMessage(smtpmsg);
-<<<<<<< HEAD
-<<<<<<< HEAD
-
-        String folderName = testUser.getSettings().getDraftsFolderName();
-        
-        Folder folder = store.getFolder(folderName);
-        folder = store.getFolder(folderName);
-        if (folder.exists())
-            assertEquals("Folder " + folderName + " has messages" , 0, folder.getMessageCount());
-        
-        // When sending a new email new addresses should be added to the contact list 
-        sendMessageHandler.execute(action, null);
-        assertEquals(1, userPreferences.getContacts().length);
-
-        // The imap is saved asynchronously after a delay, so the folder exists after a while
-=======
-        sendMessageHandler.execute(action, null);
-
-        // The email has to be added to the contact list 
-        assertEquals(1, userPreferences.getContacts().length);
-=======
->>>>>>> constantly changed by manolo
-
-        String folderName = testUser.getSettings().getDraftsFolderName();
-        
-        Folder folder = store.getFolder(folderName);
-        folder = store.getFolder(folderName);
-        if (folder.exists())
-            assertEquals("Folder " + folderName + " has messages" , 0, folder.getMessageCount());
-        
-<<<<<<< HEAD
->>>>>>> first commit
-=======
-        // When sending a new email new addresses should be added to the contact list 
-        sendMessageHandler.execute(action, null);
-        assertEquals(1, userPreferences.getContacts().length);
-
-        // The imap is saved asynchronously after a delay, so the folder exists after a while
->>>>>>> constantly changed by manolo
-        Thread.sleep(InImapUserPreferencesStorage.IMAP_SAVE_DELAY + 500);
-        folder = store.getFolder(folderName);
-        assertNotNull(folder);
-        assertTrue(folder.exists());
-        assertEquals(1, folder.getMessageCount());
-        
-        // When data is deleted from session, contacts came from imap
-        httpSession.removeAttribute(InImapUserPreferencesStorage.USER_ATTR);
-        assertEquals(1, userPreferences.getContacts().length);
-    }
-
-}
diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteAllMessages.java b/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteAllMessages.java
deleted file mode 100644
index 777c6fe..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteAllMessages.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.shared.rpc;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-
-public class DeleteAllMessages extends DeleteMessage{
-
-    private static final long serialVersionUID = -6801849429581798842L;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public DeleteAllMessages(IMAPFolderProxy folder) {
-=======
-    public DeleteAllMessages(IMAPFolder folder) {
->>>>>>> first commit
-=======
-    public DeleteAllMessages(IMAPFolderProxy folder) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public DeleteAllMessages(ImapFolder folder) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        super(folder);
-    }
-    
-    protected DeleteAllMessages() {
-        
-    }
-} 
diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java b/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java
deleted file mode 100644
index 55add41..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteFolder.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.shared.rpc;

-

-import java.io.Serializable;

-

-import net.customware.gwt.dispatch.shared.Action;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
-import org.apache.hupa.shared.data.IMAPFolder;

->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-

-public class DeleteFolder implements Action<GenericResult> , Serializable{

-

-    private static final long serialVersionUID = 7921329310932404439L;

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;

-

-    public DeleteFolder(IMAPFolderProxy folder) {

-=======
-    private IMAPFolder folder;

-

-    public DeleteFolder(IMAPFolder folder) {

->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;

-

-    public DeleteFolder(IMAPFolderProxy folder) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;

-

-    public DeleteFolder(ImapFolder folder) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.folder = folder;

-    }

-

-    protected DeleteFolder() {

-    }

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public IMAPFolderProxy getFolder() {

-=======
-    public IMAPFolder getFolder() {

->>>>>>> first commit
-=======
-    public IMAPFolderProxy getFolder() {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ImapFolder getFolder() {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folder;

-    }

-}

diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessage.java b/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessage.java
deleted file mode 100644
index 6fe4452..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessage.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.shared.rpc;
-
-import java.io.Serializable;
-
-import net.customware.gwt.dispatch.shared.Action;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-
-public class DeleteMessage implements Action<DeleteMessageResult>, Serializable {
-
-    private static final long serialVersionUID = 801294103124082592L;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-
-    public DeleteMessage(IMAPFolderProxy folder) {
-=======
-    private IMAPFolder folder;
-
-    public DeleteMessage(IMAPFolder folder) {
->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;
-
-    public DeleteMessage(IMAPFolderProxy folder) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
-
-    public DeleteMessage(ImapFolder folder) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.folder = folder;
-    }
-    
-    protected DeleteMessage() {
-        
-    }
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public IMAPFolderProxy getFolder() {
-=======
-    public IMAPFolder getFolder() {
->>>>>>> first commit
-=======
-    public IMAPFolderProxy getFolder() {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ImapFolder getFolder() {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folder;
-    }
-
-}
diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageByUid.java b/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageByUid.java
deleted file mode 100644
index d458275..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageByUid.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.shared.rpc;
-
-import java.util.ArrayList;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-
-public class DeleteMessageByUid extends DeleteMessage {
-
-    private static final long serialVersionUID = -5980938676368660849L;
-
-    private ArrayList<Long> messageUids;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public DeleteMessageByUid(IMAPFolderProxy folder, ArrayList<Long> messageUids) {
-=======
-    public DeleteMessageByUid(IMAPFolder folder, ArrayList<Long> messageUids) {
->>>>>>> first commit
-=======
-    public DeleteMessageByUid(IMAPFolderProxy folder, ArrayList<Long> messageUids) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public DeleteMessageByUid(ImapFolder folder, ArrayList<Long> messageUids) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        super(folder);
-        this.messageUids = messageUids;
-    }
-    
-    protected DeleteMessageByUid() {
-    }
-    
-    public ArrayList<Long> getMessageUids() {
-        return messageUids;
-    }
-
-}
diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java b/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java
deleted file mode 100644
index 156f4a4..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.shared.rpc;
-
-import java.io.Serializable;
-
-import net.customware.gwt.dispatch.shared.Result;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.User;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.User;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.User;
->>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
-
-public class DeleteMessageResult implements Result, Serializable {
-
-    /**
-     * 
-     */
-    private static final long serialVersionUID = -5149203502019947912L;
-    private User user;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-=======
-    private IMAPFolder folder;
->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private int deleteCount;
-
-
-    
-    @SuppressWarnings("unused")
-    private DeleteMessageResult() {
-        
-    }
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public DeleteMessageResult(User user,IMAPFolderProxy folder, int deleteCount) {
-=======
-    public DeleteMessageResult(User user,IMAPFolder folder, int deleteCount) {
->>>>>>> first commit
-=======
-    public DeleteMessageResult(User user,IMAPFolderProxy folder, int deleteCount) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public DeleteMessageResult(User user,ImapFolder folder, int deleteCount) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.user = user;
-        this.folder = folder;
-        this.deleteCount = deleteCount;
-    }
-    
-    public int getCount() {
-        return deleteCount;
-    }
-    
-    public User getUser() {
-        return user;
-    }
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public IMAPFolderProxy getFolder() {
-=======
-    public IMAPFolder getFolder() {
->>>>>>> first commit
-=======
-    public IMAPFolderProxy getFolder() {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ImapFolder getFolder() {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folder;
-    }
-
-}
diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/FetchFoldersResult.java b/shared/src/main/java/org/apache/hupa/shared/rpc/FetchFoldersResult.java
deleted file mode 100644
index 94991c8..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/FetchFoldersResult.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.shared.rpc;

-

-import java.io.Serializable;

-<<<<<<< HEAD
-<<<<<<< HEAD
-import java.util.List;

-

-import net.customware.gwt.dispatch.shared.Result;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
-import java.util.ArrayList;

-=======
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-import java.util.List;

-

-import net.customware.gwt.dispatch.shared.Result;

->>>>>>> first commit
-

-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-

-public class FetchFoldersResult implements Result, Serializable {

-

-    /**

-     * 

-     */

-    private static final long serialVersionUID = -6215610133650989605L;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private List<IMAPFolderProxy> folders;

-

-    public FetchFoldersResult(List<IMAPFolderProxy> folders) {

-=======
-    private List<IMAPFolder> folders;

-

-    public FetchFoldersResult(List<IMAPFolder> folders) {

->>>>>>> first commit
-=======
-    private List<IMAPFolderProxy> folders;

-

-    public FetchFoldersResult(List<IMAPFolderProxy> folders) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private List<ImapFolder> folders;

-

-    public FetchFoldersResult(List<ImapFolder> folders) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.folders=folders;

-    }

-    

-    @SuppressWarnings("unused")

-    private FetchFoldersResult() {

-    }

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public List<IMAPFolderProxy> getFolders() {

-=======
-    public List<IMAPFolder> getFolders() {

->>>>>>> first commit
-=======
-    public List<IMAPFolderProxy> getFolders() {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public List<ImapFolder> getFolders() {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folders;

-    }

-

-    public String toString() {

-        StringBuffer ret = new StringBuffer("");

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-        for (IMAPFolderProxy folder : folders) {

-            ret.append(folder.getFullName()).append("\n");

-            for (IMAPFolderProxy f : folder.getChildIMAPFolders()) {

-=======
-        for (IMAPFolder folder : folders) {

-            ret.append(folder.getFullName()).append("\n");

-            for (IMAPFolder f : folder.getChildIMAPFolders()) {

->>>>>>> first commit
-=======
-        for (IMAPFolderProxy folder : folders) {

-            ret.append(folder.getFullName()).append("\n");

-<<<<<<< HEAD
-            for (IMAPFolderProxy f : folder.getChildIMAPFolders()) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-            for (IMAPFolderProxy f : folder.getChildren()) {

->>>>>>> 
-=======
-        for (ImapFolder folder : folders) {

-            ret.append(folder.getFullName()).append("\n");

-            for (ImapFolder f : folder.getChildren()) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-                childFolder(f, ret);

-            }

-        }

-        return ret.toString();

-    }

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private void childFolder(IMAPFolderProxy child, StringBuffer ret) {

-        ret.append(child.getFullName()).append("\n");

-        for (IMAPFolderProxy folder : child.getChildIMAPFolders()) {

-=======
-    private void childFolder(IMAPFolder child, StringBuffer ret) {

-        ret.append(child.getFullName()).append("\n");

-        for (IMAPFolder folder : child.getChildIMAPFolders()) {

->>>>>>> first commit
-=======
-    private void childFolder(IMAPFolderProxy child, StringBuffer ret) {

-        ret.append(child.getFullName()).append("\n");

-<<<<<<< HEAD
-        for (IMAPFolderProxy folder : child.getChildIMAPFolders()) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-        for (IMAPFolderProxy folder : child.getChildren()) {

->>>>>>> 
-=======
-    private void childFolder(ImapFolder child, StringBuffer ret) {

-        ret.append(child.getFullName()).append("\n");

-        for (ImapFolder folder : child.getChildren()) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            childFolder(folder, ret);

-        }

-    }

-    

-}

diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java b/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java
deleted file mode 100644
index e6516fc..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.shared.rpc;

-

-import java.io.Serializable;

-

-import net.customware.gwt.dispatch.shared.Action;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
-import org.apache.hupa.shared.data.IMAPFolder;

->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-

-public class FetchMessages implements Action<FetchMessagesResult>, Serializable {

-    

-    private static final long serialVersionUID = -3181183289937321202L;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;

-=======
-    private IMAPFolder folder;

->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-    private int start;

-    private int offset;

-    private String searchString;

-

-    protected FetchMessages() {

-    }

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public FetchMessages(IMAPFolderProxy folder,int start, int offset,String searchString) {

-=======
-    public FetchMessages(IMAPFolder folder,int start, int offset,String searchString) {

->>>>>>> first commit
-=======
-    public FetchMessages(IMAPFolderProxy folder,int start, int offset,String searchString) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public FetchMessages(ImapFolder folder,int start, int offset,String searchString) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.folder = folder;

-        this.start = start;

-        this.offset = offset;

-        this.searchString = searchString;

-    }

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public IMAPFolderProxy getFolder() {

-=======
-    public IMAPFolder getFolder() {

->>>>>>> first commit
-=======
-    public IMAPFolderProxy getFolder() {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ImapFolder getFolder() {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folder;

-    }

-    

-    public int getStart() {

-        return start;

-    }

-    

-    public int getOffset() {

-        return offset;

-    }

-

-    public String getSearchString() {

-        return searchString;

-    }

-

-}

diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java b/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java
deleted file mode 100644
index 803dfc0..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-package org.apache.hupa.shared.rpc;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
-import org.apache.hupa.shared.data.IMAPFolder;

->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-

-public class FetchRecentMessages extends FetchMessages{

-

-    private static final long serialVersionUID = 4380357285905033821L;

-

-    protected FetchRecentMessages() {

-    }

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public FetchRecentMessages(IMAPFolderProxy folder, int start,

-=======
-    public FetchRecentMessages(IMAPFolder folder, int start,

->>>>>>> first commit
-=======
-    public FetchRecentMessages(IMAPFolderProxy folder, int start,

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public FetchRecentMessages(ImapFolder folder, int start,

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-            int offset, String searchString) {

-        super(folder, start, offset, searchString);

-    }

-

-}

diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java b/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
deleted file mode 100644
index d8e5d14..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-
-package org.apache.hupa.shared.rpc;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.SMTPMessage;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.SMTPMessage;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.SMTPMessage;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.SmtpMessage;
->>>>>>> forward and reply message to use RF
-
-public class ForwardMessage extends SendMessage {
-
-    private static final long serialVersionUID = 1656671247843122192L;
-    private long uid;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-
-    public ForwardMessage(SMTPMessage msg, IMAPFolderProxy folder, long uid) {
-=======
-    private IMAPFolder folder;
-
-    public ForwardMessage(SMTPMessage msg, IMAPFolder folder, long uid) {
->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;
-
-    public ForwardMessage(SMTPMessage msg, IMAPFolderProxy folder, long uid) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
-    private String inReplyTo;
-    private String references;
-
-<<<<<<< HEAD
-    public ForwardMessage(SMTPMessage msg, ImapFolder folder, long uid) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-    public ForwardMessage(SmtpMessage msg, ImapFolder folder, long uid) {
->>>>>>> forward and reply message to use RF
-        super(msg);
-        this.uid = uid;
-        this.folder = folder;
-    }
-    
-    protected ForwardMessage() {
-    }
-
-    public long getReplyMessageUid() {
-        return uid;
-    }
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public IMAPFolderProxy getFolder() {
-=======
-    public IMAPFolder getFolder() {
->>>>>>> first commit
-=======
-    public IMAPFolderProxy getFolder() {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ImapFolder getFolder() {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folder;
-    }
-    
-    @Override
-    public String getInReplyTo() {
-		return inReplyTo;
-	}
-
-    @Override
-    public String getReferences() {
-		return references;
-	}
-
-  public ForwardMessage setInReplyTo(String inReplyTo) {
-		this.inReplyTo = inReplyTo;
-		return this;
-	}
-   
-  public ForwardMessage setReferences(String references) {
-		this.references = references;
-		return this;
-	}
-}
diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java b/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java
deleted file mode 100644
index b572b89..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************

- * Licensed to the Apache Software Foundation (ASF) under one   *

- * or more contributor license agreements.  See the NOTICE file *

- * distributed with this work for additional information        *

- * regarding copyright ownership.  The ASF licenses this file   *

- * to you under the Apache License, Version 2.0 (the            *

- * "License"); you may not use this file except in compliance   *

- * with the License.  You may obtain a copy of the License at   *

- *                                                              *

- *   http://www.apache.org/licenses/LICENSE-2.0                 *

- *                                                              *

- * Unless required by applicable law or agreed to in writing,   *

- * software distributed under the License is distributed on an  *

- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *

- * KIND, either express or implied.  See the License for the    *

- * specific language governing permissions and limitations      *

- * under the License.                                           *

- ****************************************************************/

-

-

-package org.apache.hupa.shared.rpc;

-

-import java.io.Serializable;

-

-import net.customware.gwt.dispatch.shared.Action;

-

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

-=======
-import org.apache.hupa.shared.data.IMAPFolder;

->>>>>>> first commit
-=======
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;

->>>>>>> Allow client can use the domain entity interface.
-

-public class GetMessageDetails implements Action<GetMessageDetailsResult>, Serializable {

-

-    private static final long serialVersionUID = 5826298202494313834L;

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;

-    private long uid;

-

-    public GetMessageDetails(IMAPFolderProxy folder, long uid) {

-=======
-    private IMAPFolder folder;

-    private long uid;

-

-    public GetMessageDetails(IMAPFolder folder, long uid) {

->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;

-    private long uid;

-

-    public GetMessageDetails(IMAPFolderProxy folder, long uid) {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;

-    private long uid;

-

-    public GetMessageDetails(ImapFolder folder, long uid) {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.folder = folder;

-        this.uid = uid;

-    }

-

-    @SuppressWarnings("unused")

-    private GetMessageDetails() {

-    }

-    

-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public IMAPFolderProxy getFolder() {

-=======
-    public IMAPFolder getFolder() {

->>>>>>> first commit
-=======
-    public IMAPFolderProxy getFolder() {

->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ImapFolder getFolder() {

->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folder;

-    }

-    

-    public long getUid() {

-        return uid;

-    }

-    

-    public boolean equals(Object obj) {

-        if (obj instanceof GetMessageDetails) {

-            GetMessageDetails action = (GetMessageDetails) obj;

-            if (action.getFolder().equals(getFolder()) && action.getUid() == getUid()) {

-                return true;

-            }

-        }

-        return false;

-        

-    }

-    

-    public int hashCode() {

-        return (int) (getFolder().hashCode() * getUid());

-    }

-}

diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java b/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java
deleted file mode 100644
index a18f5ba..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-
-package org.apache.hupa.shared.rpc;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.SMTPMessage;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.SMTPMessage;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.SMTPMessage;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-=======
-import org.apache.hupa.shared.domain.ImapFolder;
-import org.apache.hupa.shared.domain.SmtpMessage;
->>>>>>> forward and reply message to use RF
-
-public class ReplyMessage extends ForwardMessage {
-
-    private static final long serialVersionUID = -383135476236902779L;
-
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public ReplyMessage(SMTPMessage msg, IMAPFolderProxy folder, long uid) {
-=======
-    public ReplyMessage(SMTPMessage msg, IMAPFolder folder, long uid) {
->>>>>>> first commit
-=======
-    public ReplyMessage(SMTPMessage msg, IMAPFolderProxy folder, long uid) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ReplyMessage(SMTPMessage msg, ImapFolder folder, long uid) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-    public ReplyMessage(SmtpMessage msg, ImapFolder folder, long uid) {
->>>>>>> forward and reply message to use RF
-        super(msg, folder, uid);
-    }
-
-    protected ReplyMessage() {
-    }
-    
-}
diff --git a/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java b/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java
deleted file mode 100644
index def7876..0000000
--- a/shared/src/main/java/org/apache/hupa/shared/rpc/SetFlag.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.shared.rpc;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-
-import net.customware.gwt.dispatch.shared.Action;
-
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.data.Message.IMAPFlag;
-<<<<<<< HEAD
-<<<<<<< HEAD
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
-=======
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.Message.IMAPFlag;
->>>>>>> first commit
-=======
-import org.apache.hupa.shared.data.Message.IMAPFlag;
-import org.apache.hupa.shared.proxy.IMAPFolderProxy;
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-import org.apache.hupa.shared.proxy.ImapFolder;
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-=======
-=======
-import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
->>>>>>> try to change fetch messages to use RF
-import org.apache.hupa.shared.domain.ImapFolder;
->>>>>>> Allow client can use the domain entity interface.
-
-public class SetFlag implements Action<GenericResult>, Serializable {
-
-    private static final long serialVersionUID = 662741801793895357L;
-    private IMAPFlag flag;
-    private ArrayList<Long> uids;
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    private IMAPFolderProxy folder;
-    private boolean value;
-    
-    public SetFlag(IMAPFolderProxy folder, IMAPFlag flag, boolean value, ArrayList<Long> uids) {
-=======
-    private IMAPFolder folder;
-    private boolean value;
-    
-    public SetFlag(IMAPFolder folder, IMAPFlag flag, boolean value, ArrayList<Long> uids) {
->>>>>>> first commit
-=======
-    private IMAPFolderProxy folder;
-    private boolean value;
-    
-    public SetFlag(IMAPFolderProxy folder, IMAPFlag flag, boolean value, ArrayList<Long> uids) {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    private ImapFolder folder;
-    private boolean value;
-    
-    public SetFlag(ImapFolder folder, IMAPFlag flag, boolean value, ArrayList<Long> uids) {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        this.flag = flag;
-        this.value = value;
-        this.uids = uids;
-        this.folder = folder;
-    }
-    
-    protected SetFlag() {
-    }
-    
-<<<<<<< HEAD
-<<<<<<< HEAD
-<<<<<<< HEAD
-    public IMAPFolderProxy getFolder() {
-=======
-    public IMAPFolder getFolder() {
->>>>>>> first commit
-=======
-    public IMAPFolderProxy getFolder() {
->>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
-=======
-    public ImapFolder getFolder() {
->>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
-        return folder;
-    }
-    
-    public boolean getValue() {
-        return value;
-    }
-    public IMAPFlag getFlag() {
-        return flag;
-    }
-    
-    public ArrayList<Long> getUids() {
-        return uids;
-    }
-}
diff --git a/widgets/src/main/java/org/apache/hupa/widgets/ui/PagingOptions.java b/widgets/src/main/java/org/apache/hupa/widgets/ui/PagingOptions.java
deleted file mode 100644
index 8a81f97..0000000
--- a/widgets/src/main/java/org/apache/hupa/widgets/ui/PagingOptions.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.hupa.widgets.ui;
-
-import org.apache.hupa.widgets.PagingOptionsConstants;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.gen2.table.client.PagingScrollTable;
-import com.google.gwt.gen2.table.client.TableModel;
-import com.google.gwt.gen2.table.event.client.PageChangeEvent;
-import com.google.gwt.gen2.table.event.client.PageChangeHandler;
-import com.google.gwt.gen2.table.event.client.PageCountChangeEvent;
-import com.google.gwt.gen2.table.event.client.PageCountChangeHandler;
-import com.google.gwt.gen2.table.event.client.PageLoadEvent;
-import com.google.gwt.gen2.table.event.client.PageLoadHandler;
-import com.google.gwt.gen2.table.event.client.PagingFailureEvent;
-import com.google.gwt.gen2.table.event.client.PagingFailureHandler;
-import com.google.gwt.gen2.table.event.client.RowCountChangeEvent;
-import com.google.gwt.gen2.table.event.client.RowCountChangeHandler;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.SimplePanel;
-
-/**
- * PagingOptions for using to control the PagingScrollTable
- *
- */
-public class PagingOptions extends Composite {    
-    private HorizontalPanel pagingPanel = new HorizontalPanel();
-    private EnableHyperlink firstLink;
-    private EnableHyperlink prevLink;
-    private EnableHyperlink lastLink;
-    private EnableHyperlink nextLink;
-    private Label text = new Label();
-    private int currentPage = 1;
-    private Loading loading = null;
-    private SimplePanel panel = new SimplePanel();
-    
-    public PagingOptions(final PagingScrollTable<?> table, PagingOptionsConstants constants, Loading loading) {
-        this.loading = loading;
-<<<<<<< HEAD
-        firstLink = new EnableHyperlink("<< " + constants.pageFirst(),null);
-        prevLink = new EnableHyperlink("< " + constants.pagePrev(),null);
-        lastLink = new EnableHyperlink(constants.pageLast() + " >>",null);
-        nextLink = new EnableHyperlink(constants.pageNext() + " >",null);
-=======
-        firstLink = new EnableHyperlink("<< " + constants.pageFirst(),"");
-        prevLink = new EnableHyperlink("< " + constants.pagePrev(),"");
-        lastLink = new EnableHyperlink(constants.pageLast() + " >>","");
-        nextLink = new EnableHyperlink(constants.pageNext() + " >","");
->>>>>>> first commit
-        pagingPanel.setSpacing(3);
-
-        pagingPanel.add(panel);
-        pagingPanel.add(firstLink);
-        pagingPanel.add(prevLink);
-        pagingPanel.add(nextLink);
-        pagingPanel.add(lastLink);
-        panel.setWidget(text);
-        panel.setWidth("100px");
-        pagingPanel.setCellHorizontalAlignment(panel, HorizontalPanel.ALIGN_CENTER);
-        firstLink.setEnabled(false);
-        prevLink.setEnabled(false);
-        lastLink.setEnabled(false);
-        nextLink.setEnabled(false);
-        
-        table.addPageCountChangeHandler(new PageCountChangeHandler() {
-
-            public void onPageCountChange(PageCountChangeEvent event) {
-                int startCount =  currentPage * table.getPageSize() + 1;
-                
-                int endCount  = currentPage * table.getPageSize() + table.getPageSize();
-                
-                int rows = table.getTableModel().getRowCount();
-                updateControl(startCount, endCount, rows);
-            }
-            
-        });
-        
-        
-        table.addPageChangeHandler(new PageChangeHandler() {
-
-            public void onPageChange(PageChangeEvent event) {
-                loading(true);
-            
-                currentPage = event.getNewPage();
-                int startCount =  currentPage * table.getPageSize() + 1;
-                
-                int endCount  = currentPage * table.getPageSize() + table.getPageSize();
-                int rows = table.getTableModel().getRowCount();
-            
-                
-                updateControl(startCount, endCount, rows);
-            }
-        });
-        
-        table.addPageLoadHandler(new PageLoadHandler() {
-
-            public void onPageLoad(PageLoadEvent event) {
-                loading(false);
-            }
-            
-        });
-        
-        table.addPagingFailureHandler(new PagingFailureHandler() {
-
-            public void onPagingFailure(PagingFailureEvent event) {
-                loading(false);
-            }
-            
-        });
-        
-        firstLink.addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                table.gotoFirstPage();
-            }
-            
-        });
-        
-        prevLink.addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                table.gotoPreviousPage();
-            }
-            
-        });
-        
-        nextLink.addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                table.gotoNextPage();
-            }
-            
-        });
-        
-        lastLink.addClickHandler(new ClickHandler() {
-
-            public void onClick(ClickEvent event) {
-                table.gotoLastPage();
-            }
-            
-        });
-        
-        table.getTableModel().addRowCountChangeHandler(new RowCountChangeHandler() {
-
-            public void onRowCountChange(RowCountChangeEvent event) {
-                int startCount = currentPage * table.getPageSize() + 1;
-                
-                int endCount  = currentPage * table.getPageSize() + table.getPageSize();
-                
-                int rows =event.getNewRowCount();
-                updateControl(startCount, endCount, rows);
-
-            }
-            
-        });
-        initWidget(pagingPanel);
-    }
-    
-
-    protected void loading(boolean isLoading) {
-        if (loading != null) {
-            if (isLoading)
-                loading.show();
-            else
-                loading.hide();
-        }
-    }
-    
-    protected void updateControl(int startCount, int endCount, int rows) {
-        if (rows == TableModel.UNKNOWN_ROW_COUNT) {
-            startCount = 0;
-            endCount = 0;
-            rows = 0;
-        } 
-        
-        if (rows < endCount) {
-            endCount = rows;
-        }
-        
-        if (endCount == 0) {
-            startCount = 0;
-        }
-        
-        if (startCount <= 1) {
-            firstLink.setEnabled(false);
-            prevLink.setEnabled(false);
-        } else {
-            firstLink.setEnabled(true);
-            prevLink.setEnabled(true);
-        }
-        
-        if (rows > endCount) {
-            lastLink.setEnabled(true);
-            nextLink.setEnabled(true);
-        } else {
-            lastLink.setEnabled(false);
-            nextLink.setEnabled(false);
-        }
-        text.setText(startCount + " - " + endCount + " of " + rows);
-
-    }
-    
-    /**
-     * Reset the currentPage to 0 
-     */
-    public void reset() {
-        currentPage = 0;
-        text.setText("0 - 0 of 0");
-    }
-    
-    /**
-     * Return the Link to navigate to the first page
-     * 
-     * @return firstLink
-     */
-    public EnableHyperlink getFirstLink() {
-        return firstLink;
-    }
-    
-    /**
-     * Return the Link to navigate to the previous page
-     * 
-     * @return prevLink
-     */
-    public EnableHyperlink getPrevLink() {
-        return prevLink;
-    }
-    
-    /**
-     * Return the Link to navigate to the next page
-     * 
-     * @return nextLink
-     */
-    public EnableHyperlink getNextLink() {
-        return nextLink;
-    }
-    
-    /**
-     * Return the Link to navigate to the last page
-     * 
-     * @return lastLink
-     */
-    public EnableHyperlink getLastLink() {
-        return lastLink;
-    }
-
-}