Author: dongxu Date: Thu Sep 12 03:48:19 2013 New Revision: 1522251 URL: http://svn.apache.org/r1522251 Log: prepare for message content panel
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.ui.xml james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java Thu Sep 12 03:48:19 2013 @@ -20,6 +20,7 @@ package org.apache.hupa.client.activity; <<<<<<< HEAD +<<<<<<< HEAD import java.util.Collection; import java.util.List; import java.util.Set; @@ -240,21 +241,107 @@ public class MessageListActivity extends }); } ======= +======= +import org.apache.hupa.client.place.IMAPMessagePlace; +import org.apache.hupa.client.rf.GetMessageDetailsRequest; +>>>>>>> prepare for message content panel import org.apache.hupa.client.ui.WidgetDisplayable; +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.ExpandMessageEvent; +import org.apache.hupa.shared.events.ExpandMessageEventHandler; +import org.apache.hupa.shared.events.LoginEvent; +import org.apache.hupa.shared.events.LoginEventHandler; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.inject.Inject; +import com.google.inject.Provider; +import com.google.web.bindery.requestfactory.shared.Receiver; public class MessageListActivity extends AppBaseActivity { +// @Inject private Provider<IMAPMessagePlace> messagePlaceProvider; + private User user; + private String searchValue; + @Override public void start(AcceptsOneWidget container, EventBus eventBus) { container.setWidget(display.asWidget()); + bindTo(eventBus); + } + + private void bindTo(EventBus eventBus) { + eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() { + public void onLogin(LoginEvent event) { + user = event.getUser(); + searchValue = null; + } + }); + 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 = requestFactory + .messageDetailsRequest(); + 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(new IMAPMessagePlace( + String.valueOf(message + .getUid()))); + } + }); + } + }); + } + + 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()); } @Inject private Displayable display; +<<<<<<< HEAD public interface Displayable extends WidgetDisplayable {} >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers +======= + + public interface Displayable extends WidgetDisplayable { + } +>>>>>>> prepare for message content panel } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java Thu Sep 12 03:48:19 2013 @@ -946,8 +946,8 @@ System.out.println("1111111"+response); * TODO if (decreaseUnseen) { eventBus.fireEvent(new * DecreaseUnseenEvent(user, folder)); } */ - placeController.goTo(messagePlaceProvider.get().with(user, f, message, - response.getMessageDetails())); +// placeController.goTo(messagePlaceProvider.get().with(user, f, message, +// response.getMessageDetails())); } }); } @@ -1375,7 +1375,7 @@ System.out.println("1111111"+response); @Inject private Displayable display; @Inject private Provider<MessageSendPlace> messageSendPlaceProvider; - @Inject private Provider<IMAPMessagePlace> messagePlaceProvider; +// @Inject private Provider<IMAPMessagePlace> messagePlaceProvider; private User user; private ImapFolder folder; private IMAPTreeItem tItem; Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageContentActivityMapper.java Thu Sep 12 03:48:19 2013 @@ -21,12 +21,18 @@ package org.apache.hupa.client.mapper; import org.apache.hupa.client.activity.MessageContentActivity; <<<<<<< HEAD +<<<<<<< HEAD import org.apache.hupa.client.place.MessagePlace; import com.google.gwt.activity.shared.Activity; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.RunAsyncCallback; ======= +======= +import org.apache.hupa.client.place.DefaultPlace; +import org.apache.hupa.client.place.IMAPMessagePlace; +import org.apache.hupa.client.place.MailFolderPlace; +>>>>>>> prepare for message content panel import com.google.gwt.activity.shared.Activity; import com.google.gwt.activity.shared.ActivityMapper; @@ -71,6 +77,9 @@ public class MessageContentActivityMappe } public Activity getActivity(Place place) { + if(place instanceof DefaultPlace)return null; + else if (place instanceof MailFolderPlace) return null; + else if (place instanceof IMAPMessagePlace) return messageContentActivityProvider.get(); return messageContentActivityProvider.get(); >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mapper/MessageListActivityMapper.java Thu Sep 12 03:48:19 2013 @@ -80,7 +80,7 @@ public class MessageListActivityMapper i ======= public Activity getActivity(Place place) { if(place instanceof DefaultPlace)return null; - else if (place instanceof MailFolderPlace) messageListActivityProvider.get(); + else if (place instanceof MailFolderPlace) return messageListActivityProvider.get(); return messageListActivityProvider.get(); >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/place/IMAPMessagePlace.java Thu Sep 12 03:48:19 2013 @@ -103,6 +103,11 @@ public class IMAPMessagePlace extends Ab 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; + private String messageId; + + public IMAPMessagePlace(String token) { + this.messageId = token; + } public Message getMessage() { return message; @@ -189,12 +194,15 @@ public class IMAPMessagePlace extends Ab @Override public IMAPMessagePlace getPlace(String token) { - return new IMAPMessagePlace(); + return new IMAPMessagePlace(token); } @Override public String getToken(IMAPMessagePlace place) { - return String.valueOf(place.getMessage().getUid()); + return place.getMessageId(); +// System.out.println(place); +// System.out.println(place.getMessage()); +// return String.valueOf(place.getMessage().getUid()); } } @@ -208,8 +216,15 @@ public class IMAPMessagePlace extends Ab } <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> ======= >>>>>>> 1. improve the inbox folder place. +======= + public String getMessageId() { + return messageId; + } + +>>>>>>> prepare for message content panel } Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/HupaLayout.ui.xml Thu Sep 12 03:48:19 2013 @@ -235,7 +235,6 @@ ui:field="MessageContentBox"> <g:layer> <g:SimplePanel ui:field="messageContentContainer"> - <hupa:MessageContentView ui:field="messageContentView" /> </g:SimplePanel> </g:layer> <g:layer bottom="0" height="25px"> Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.java?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.java Thu Sep 12 03:48:19 2013 @@ -21,6 +21,7 @@ package org.apache.hupa.client.ui; <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD import java.util.List; import org.apache.hupa.client.HupaCSS; @@ -67,14 +68,197 @@ import org.apache.hupa.client.activity.M >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers import com.google.gwt.core.client.GWT; +======= +import java.util.List; + +import org.apache.hupa.client.HupaCSS; +import org.apache.hupa.client.HupaConstants; +import org.apache.hupa.client.activity.MessageContentActivity; +import org.apache.hupa.client.bundles.HupaImageBundle; +import org.apache.hupa.client.widgets.CommandsBar; +import org.apache.hupa.client.widgets.MessageHeaders; +import org.apache.hupa.shared.SConsts; +import org.apache.hupa.shared.Util; +import org.apache.hupa.shared.domain.Message; +import org.apache.hupa.shared.domain.MessageAttachment; +import org.apache.hupa.widgets.ui.Loading; +import org.cobogw.gwt.user.client.ui.Button; + +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; +>>>>>>> prepare for message content panel import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.ScrollPanel; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.gwt.user.client.ui.Widget; +import com.google.inject.Inject; public class MessageContentView extends Composite implements MessageContentActivity.Displayable { +<<<<<<< HEAD >>>>>>> make login page as one part of the overall layout & splite layout to >>>>>>> little one +======= + public final static int DELETE_BUTTON = 0; + public final static int REPLY_BUTTON = 1; + public final static int REPLY_ALL_BUTTON = 2; + + private HupaImageBundle imageBundle; + + @UiField + VerticalPanel messageContainer; + private MessageHeaders headers; + private CommandsBar buttonsBar = new CommandsBar(); + private HTML msgArea = new HTML(); + + private Label from = new Label(); + private Label cc = new Label(); + private Label to = new Label(); + private Label subject = new Label(); + + private Button deleteMsgButton = new Button(); + private Button replyMsgButton = new Button(); + private Button replyAllMsgButton = new Button(); + private Button forwardMsgButton = new Button(); + private Anchor showRawButton; + private Anchor backButton; + private FlowPanel attachments = new FlowPanel(); + + private Loading loading; + + @Inject + public MessageContentView(HupaConstants constants, HupaImageBundle imageBundle) { + this.imageBundle = imageBundle; + + loading = new Loading(constants.loading()); + showRawButton = new Anchor(constants.rawButton()); + backButton = new Anchor(constants.backButton()); + headers = new MessageHeaders(constants); + deleteMsgButton.setText(constants.deleteMailButton()); + replyMsgButton.setText(constants.replyMailButton()); + replyAllMsgButton.setText(constants.replyAllMailButton()); + forwardMsgButton.setText(constants.forwardMailButton()); + + messageContainer.addStyleName(HupaCSS.C_msgview_container); + + buttonsBar.add(replyMsgButton); + buttonsBar.add(replyAllMsgButton); + buttonsBar.add(deleteMsgButton); + buttonsBar.add(forwardMsgButton); + buttonsBar.add(loading); +// buttonsBar.add(showRawButton); TODO + buttonsBar.add(backButton); + + ScrollPanel scrollPanel = new ScrollPanel(); + scrollPanel.addStyleName(HupaCSS.C_msgview_content); + scrollPanel.setAlwaysShowScrollBars(false); + scrollPanel.add(msgArea); + + messageContainer.add(headers); + messageContainer.add(buttonsBar); + messageContainer.add(scrollPanel); + + loading.hide(); + + initWidget(messageContainer); + } + + public Widget asWidget() { + return this; + } + + public void startProcessing() { + loading.show(); + } + + public void stopProcessing() { + loading.show(); + } + + public HasClickHandlers getDeleteButtonClick() { + return deleteMsgButton; + } + + public void setAttachments(List<MessageAttachment> attachements, + final String folder, + final long uid) { + + attachments.clear(); + final Element downloadIframe = RootPanel.get("__download").getElement(); + if (attachements != null) { + for (final MessageAttachment messageAttachment : attachements) { + Label link = new Label(messageAttachment.getName() + " (" + messageAttachment.getSize() / 1024 + "kB)"); + link.setStyleName(HupaCSS.C_hyperlink); + link.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent event) { + String url = GWT.getModuleBaseURL() + SConsts.SERVLET_DOWNLOAD + + "?" + SConsts.PARAM_NAME + "=" + messageAttachment.getName() + + "&" + SConsts.PARAM_FOLDER + "=" + folder + + "&" + SConsts.PARAM_UID + "=" + uid; + if (downloadIframe == null) + Window.open(url,"_blank", ""); + else + DOM.setElementAttribute(downloadIframe, "src", url); + } + }); + HorizontalPanel aPanel = new HorizontalPanel(); + aPanel.addStyleName(HupaCSS.C_attachment); + aPanel.add(new Image(imageBundle.attachmentIcon())); + aPanel.add(link); + attachments.add(aPanel); + } + } + } + + public HasClickHandlers getForwardButtonClick() { + return forwardMsgButton; + } + + public HasClickHandlers getReplyAllButtonClick() { + return replyAllMsgButton; + } + + public HasClickHandlers getReplyButtonClick() { + return replyMsgButton; + } + + public HasClickHandlers getBackButtonClick() { + return backButton; + } + + public HasClickHandlers getShowRawMessageClick() { + return showRawButton; + } + + public void setHeaders(Message message) { + from.setText(message.getFrom()); + cc.setText(Util.listToString(message.getCc())); + to.setText(Util.listToString(message.getTo())); + subject.setText(message.getSubject()); + headers.setValues(from, to, cc, null, subject, attachments); + } + + public void setContent(String content) { + msgArea.setHTML(content); + } + + + +>>>>>>> prepare for message content panel public MessageContentView() { initWidget(binder.createAndBindUi(this)); } @@ -157,8 +341,12 @@ public class MessageContentView extends interface MessageContentUiBinder extends UiBinder<HTMLPanel, MessageContentView> { ======= interface MessageContentUiBinder extends +<<<<<<< HEAD UiBinder<HTMLPanel, MessageContentView> { >>>>>>> integrate all of the views to their corresponding activities and >>>>>>> mappers +======= + UiBinder<VerticalPanel, MessageContentView> { +>>>>>>> prepare for message content panel } private static MessageContentUiBinder binder = GWT Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.ui.xml URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.ui.xml?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.ui.xml (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageContentView.ui.xml Thu Sep 12 03:48:19 2013 @@ -12,6 +12,7 @@ <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'> <<<<<<< HEAD +<<<<<<< HEAD <ui:image field="buttons" src="res/buttons.png" /> <ui:style> .messageContent { @@ -97,4 +98,7 @@ <g:HTMLPanel>MessageContent </g:HTMLPanel> >>>>>>> make login page as one part of the overall layout & splite layout to >>>>>>> little one +======= + <g:VerticalPanel ui:field="messageContainer" /> +>>>>>>> prepare for message content panel </ui:UiBinder> \ No newline at end of file Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java?rev=1522251&r1=1522250&r2=1522251&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java Thu Sep 12 03:48:19 2013 @@ -179,7 +179,6 @@ public class MessageListView extends Com // folder.setMessageCount(result.getRealCount());// TODO if do // this, there will be auto bean has been frozen. // folder.setUnseenMessageCount(result.getRealUnreadCount()); - System.out.println("+_+_+_+_+"+result.getMessages()); table.setRowCount(result.getRealCount()); table.setRowData(start, result.getMessages()); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org