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("<", "<").replaceAll(">", ">") + "<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("<", "<").replaceAll(">", ">") + "<br>";
- } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
- ret += "On " + message.getReceivedDate();
- ret += ", " + message.getFrom().replaceAll("<", "<").replaceAll(">", ">");
- 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("<", "<").replaceAll(">", ">") + "<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("<", "<").replaceAll(">", ">") + "<br>";
- } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
- ret += "On " + message.getReceivedDate();
- ret += ", " + message.getFrom().replaceAll("<", "<").replaceAll(">", ">");
- 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("<", "<").replaceAll(">", ">") + "<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("<", "<").replaceAll(">", ">") + "<br>";
- } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
- ret += "On " + message.getReceivedDate();
- ret += ", " + message.getFrom().replaceAll("<", "<").replaceAll(">", ">");
- 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(" ");
- }
-
- }
-
- });
-
- 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(" ");
- } 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("<", "<").replaceAll(">", ">") + "<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("<", "<").replaceAll(">", ">") + "<br>";
- } else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
- ret += "On " + message.getReceivedDate();
- ret += ", " + message.getFrom().replaceAll("<", "<").replaceAll(">", ">");
- 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(" ");
- }
-
- }
-
- });
-
- 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(" ");
- } 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>{</code>, <code>}</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;
- }
-
-}