Author: dongxu Date: Thu Sep 12 03:28:08 2013 New Revision: 1522207 URL: http://svn.apache.org/r1522207 Log: fix issue 5,6,8: [5]Selection box for number of comments does not work [6]It seems multiple sessions dont work [8]Login screen not centered in chrome
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java james/hupa/trunk/client/src/main/webapp/Hupa.css james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/AbstractService.java james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LoginUserServiceImpl.java james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LogoutUserServiceImpl.java james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/SendMessageBaseServiceImpl.java Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522207&r1=1522206&r2=1522207&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java Thu Sep 12 03:28:08 2013 @@ -47,6 +47,7 @@ import org.apache.hupa.client.activity.I <<<<<<< 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; @@ -83,6 +84,9 @@ import com.google.gwt.dom.client.Style.U 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: import org.apache.hupa.client.rf.FetchMessagesRequest; import org.apache.hupa.client.rf.HupaRequestFactory; import org.apache.hupa.client.widgets.CommandsBar; @@ -145,7 +149,12 @@ import com.google.gwt.event.dom.client.C >>>>>>> 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; @@ -169,7 +178,11 @@ import com.google.gwt.user.client.ui.Anc import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.DockLayoutPanel; <<<<<<< 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. import com.google.gwt.user.client.ui.HasValue; @@ -207,8 +220,7 @@ import com.google.web.bindery.requestfac import com.google.web.bindery.requestfactory.shared.ServerFailure; @SuppressWarnings("deprecation") -public class IMAPMessageListView extends Composite implements - IMAPMessageListActivity.Displayable { +public class IMAPMessageListView extends Composite implements IMAPMessageListActivity.Displayable { <<<<<<< HEAD @SuppressWarnings("unused") private HupaMessages messages; @@ -1685,8 +1697,7 @@ public class IMAPMessageListView extends public void fetch(final int start) { FetchMessagesRequest messagesRequest = requestFactory.messagesRequest(); - FetchMessagesAction action = messagesRequest - .create(FetchMessagesAction.class); + FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class); final ImapFolder folder1 = messagesRequest.create(ImapFolder.class); folder1.setChildren(folder.getChildren()); folder1.setDelimiter(folder.getDelimiter()); @@ -1718,8 +1729,7 @@ public class IMAPMessageListView extends table.setRowData(start, result.getMessages()); pager.setPageStart(start); - eventBus.fireEvent(new MessagesReceivedEvent(folder1, result - .getMessages())); + eventBus.fireEvent(new MessagesReceivedEvent(folder1, result.getMessages())); } }); } @@ -1728,11 +1738,9 @@ public class IMAPMessageListView extends private boolean pending; @Inject - public IMAPMessageListView(final HupaConstants constants, - final HupaMessages messages, final EventBus eventBus, - final HupaRequestFactory requestFactory, - final MessagesCellTable table) { - this.table = table; + public IMAPMessageListView(final HupaConstants constants, final HupaMessages messages, final EventBus eventBus, + final HupaRequestFactory requestFactory, final HupaImageBundle imageBundle) { + this.table = new MessagesCellTable(imageBundle); this.eventBus = eventBus; this.requestFactory = requestFactory; selectionModel = table.getSelectionModel(); @@ -1741,26 +1749,22 @@ public class IMAPMessageListView extends public void onCellPreview(CellPreviewEvent<Message> event) { if (hasClickedButFirstCol(event)) { setExpandLoading(true); - eventBus.fireEvent(new ExpandMessageEvent(user, folder, - event.getValue())); + eventBus.fireEvent(new ExpandMessageEvent(user, folder, event.getValue())); } } - private boolean hasClickedButFirstCol( - CellPreviewEvent<Message> event) { - return "click".equals(event.getNativeEvent().getType()) - && 0 != event.getColumn(); + private boolean hasClickedButFirstCol(CellPreviewEvent<Message> event) { + return "click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn(); } }); - table.getCheckboxCol().setFieldUpdater( - new FieldUpdater<Message, Boolean>() { - @Override - public void update(int index, Message object, Boolean value) { - selectionModel.setSelected(object, value); - } - }); + table.getCheckboxCol().setFieldUpdater(new FieldUpdater<Message, Boolean>() { + @Override + public void update(int index, Message object, Boolean value) { + selectionModel.setSelected(object, value); + } + }); table.addRangeChangeHandler(new RangeChangeEvent.Handler() { @Override @@ -1769,31 +1773,26 @@ public class IMAPMessageListView extends } }); // 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(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()); + folder = new ImapFolderImpl(user.getSettings().getInboxFolderName()); searchValue = null; if (!pending) { pending = true; @@ -1818,10 +1817,8 @@ public class IMAPMessageListView extends this.messages = messages; this.eventBus = eventBus; - SimplePager.Resources pagerResources = GWT - .create(SimplePager.Resources.class); - pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, - true); + 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()); @@ -1853,6 +1850,18 @@ public class IMAPMessageListView extends 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); @@ -1870,26 +1879,20 @@ public class IMAPMessageListView extends }); 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); + hPanel.setCellHorizontalAlignment(searchPanel, HorizontalPanel.ALIGN_RIGHT); - CommandsBar commandsBar = new CommandsBar(); - commandsBar.addLeft(new HTML(constants.select() + ":")); - commandsBar.addLeft(allLink); - commandsBar.addLeft(noneLink); - // commandsBar.add(loading); - // commandsBar.addRight(pagingBar); + HorizontalPanel pagerBar = new HorizontalPanel(); - commandsBar.addRight(pager); + pagerBar.add(pager); + pagerBar.add(pageBox); solidCenterPanel.addNorth(hPanel, 3); - solidCenterPanel.addSouth(commandsBar, 2); + solidCenterPanel.addSouth(pagerBar, 2); solidCenterPanel.add(table); // msgListContainer.add(mailTable); Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java?rev=1522207&r1=1522206&r2=1522207&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java Thu Sep 12 03:28:08 2013 @@ -500,6 +500,7 @@ public class MessagesCellTable extends D package org.apache.hupa.client.ui; import java.util.Date; +import java.util.List; import org.apache.hupa.client.bundles.HupaImageBundle; import org.apache.hupa.shared.domain.Message; @@ -509,11 +510,13 @@ import com.google.gwt.cell.client.DateCe import com.google.gwt.cell.client.FieldUpdater; import com.google.gwt.cell.client.ImageResourceCell; import com.google.gwt.cell.client.TextCell; +import com.google.gwt.cell.client.ValueUpdater; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.DataGrid; +import com.google.gwt.user.cellview.client.Header; import com.google.gwt.view.client.DefaultSelectionEventManager; import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.ProvidesKey; @@ -522,52 +525,76 @@ import com.google.inject.Inject; public class MessagesCellTable extends DataGrid<Message> { - private static final int PAGE_SIZE = 25; - + public static final int PAGE_SIZE = 25; + private HupaImageBundle imageBundle; CheckboxColumn checkboxCol = new CheckboxColumn(); Column<Message, ?> fromCol = new FromColumn(); Column<Message, ?> subjectCol = new SubjectColumn(); Column<Message, ?> attachedCol = new AttachmentColumn(); Column<Message, ?> dateCol = new DateColumn(); - public CheckboxColumn getCheckboxCol(){ + + public CheckboxColumn getCheckboxCol() { return checkboxCol; } + public final ProvidesKey<Message> KEY_PROVIDER = new ProvidesKey<Message>() { @Override - public Object getKey(Message item) { - return item == null ? null : item.getUid(); - } + public Object getKey(Message item) { + return item == null ? null : item.getUid(); + } }; private final SelectionModel<? super Message> selectionModel = new MultiSelectionModel<Message>(KEY_PROVIDER); - @Inject - public MessagesCellTable( - final HupaImageBundle imageBundle) { + public MessagesCellTable(final HupaImageBundle imageBundle) { super(PAGE_SIZE); this.imageBundle = imageBundle; - - - addColumn(checkboxCol); + + CheckboxCell headerCheckbox = new CheckboxCell(); + Header<Boolean> header = new Header<Boolean>(headerCheckbox) { + @Override + public Boolean getValue() { + return false; + } + }; + header.setUpdater(new ValueUpdater<Boolean>() { + @Override + public void update(Boolean value) { + List<Message> displayedItems = MessagesCellTable.this.getVisibleItems(); + for (Message msg : displayedItems) { + selectionModel.setSelected(msg, value); + } + } + }); + + addColumn(checkboxCol, header); this.setColumnWidth(checkboxCol, 3, Unit.EM); - addColumn(fromCol); + addColumn(fromCol, "From"); this.setColumnWidth(fromCol, 40, Unit.PCT); - addColumn(subjectCol); + addColumn(subjectCol, "Subject"); this.setColumnWidth(subjectCol, 60, Unit.PCT); - addColumn(attachedCol); - this.setColumnWidth(attachedCol, 3, Unit.EM); - addColumn(dateCol); + addColumn(attachedCol, "Attached"); + this.setColumnWidth(attachedCol, 7, Unit.EM); + addColumn(dateCol, "Date"); this.setColumnWidth(dateCol, 10, Unit.EM); setRowCount(PAGE_SIZE, false); setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED); setSelectionModel(selectionModel, DefaultSelectionEventManager.<Message> createCheckboxManager(0)); } + public class CheckboxColumn extends Column<Message, Boolean> { - + public CheckboxColumn() { super(new CheckboxCell(false, false)); + setFieldUpdater(new FieldUpdater<Message, Boolean>() { + @Override + public void update(int index, Message object, Boolean value) { + selectionModel.setSelected(object, value); + } + }); } + @Override public Boolean getValue(Message object) { return selectionModel.isSelected(object); @@ -578,6 +605,7 @@ public class MessagesCellTable extends D public FromColumn() { super(new TextCell()); } + @Override public String getValue(Message object) { return object.getFrom(); @@ -588,6 +616,7 @@ public class MessagesCellTable extends D public SubjectColumn() { super(new TextCell()); } + @Override public String getValue(Message object) { return object.getSubject(); @@ -598,6 +627,7 @@ public class MessagesCellTable extends D public AttachmentColumn() { super(new ImageResourceCell()); } + @Override public ImageResource getValue(Message object) { return object.hasAttachment() ? imageBundle.attachmentIcon() : null; @@ -608,6 +638,7 @@ public class MessagesCellTable extends D public DateColumn() { super(new DateCell(DateTimeFormat.getFormat("dd.MMM.yyyy"))); } + @Override public Date getValue(Message object) { return object.getReceivedDate(); Modified: james/hupa/trunk/client/src/main/webapp/Hupa.css URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/webapp/Hupa.css?rev=1522207&r1=1522206&r2=1522207&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/webapp/Hupa.css (original) +++ james/hupa/trunk/client/src/main/webapp/Hupa.css Thu Sep 12 03:28:08 2013 @@ -422,10 +422,15 @@ div.hupa-bottom { table.hupa-login { ======= .hupa-login { +<<<<<<< HEAD margin-top:10px; margin-left:auto; margin-right:auto; >>>>>>> make it look more beautiful +======= + margin: 10pt auto; + width: 20%; +>>>>>>> fix issue 5,6,8: text-align: right; position: relative; left: 50%; Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/AbstractService.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/AbstractService.java?rev=1522207&r1=1522206&r2=1522207&view=diff ============================================================================== --- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/AbstractService.java (original) +++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/AbstractService.java Thu Sep 12 03:28:08 2013 @@ -40,15 +40,19 @@ import org.apache.hupa.shared.exception. import com.google.inject.Inject; import com.google.inject.Provider; +<<<<<<< HEAD ======= import com.google.inject.Inject; >>>>>>> Make chechsession and login work with RF, with refactoring fetch >>>>>>> folders. +======= +>>>>>>> fix issue 5,6,8: public abstract class AbstractService { @Inject protected IMAPStoreCache cache; <<<<<<< HEAD +<<<<<<< HEAD @Inject protected Provider<HttpSession> httpSessionProvider; @Inject protected Log logger; @@ -62,14 +66,25 @@ public abstract class AbstractService { } ======= @Inject protected HttpSession httpSession; +======= + @Inject protected Provider<HttpSession> httpSessionProvider; +>>>>>>> fix issue 5,6,8: @Inject protected Log logger; protected User getUser() { - return (User) getHttpSession().getAttribute(SConsts.USER_SESS_ATTR); - } +<<<<<<< HEAD protected HttpSession getHttpSession() { return httpSession; >>>>>>> Make chechsession and login work with RF, with refactoring fetch >>>>>>> folders. +======= + User user = (User) httpSessionProvider.get().getAttribute(SConsts.USER_SESS_ATTR); +// if (user == null) { TODO exception +// throw new Exception("User not found in session with id " + httpSessionProvider.get().getId()); +// } else { +// return user; +// } + return user; +>>>>>>> fix issue 5,6,8: } } Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LoginUserServiceImpl.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LoginUserServiceImpl.java?rev=1522207&r1=1522206&r2=1522207&view=diff ============================================================================== --- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LoginUserServiceImpl.java (original) +++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LoginUserServiceImpl.java Thu Sep 12 03:28:08 2013 @@ -25,6 +25,7 @@ package org.apache.hupa.server.service; <<<<<<< HEAD +<<<<<<< HEAD import javax.mail.MessagingException; import javax.servlet.http.HttpSession; ======= @@ -37,6 +38,10 @@ import javax.mail.MessagingException; ======= >>>>>>> alert people "invilid login" for the wrong username and/or password, >>>>>>> which should be improved with a gentle way +======= +import javax.servlet.http.HttpSession; + +>>>>>>> fix issue 5,6,8: import org.apache.hupa.server.utils.SessionUtils; import org.apache.hupa.shared.SConsts; import org.apache.hupa.shared.data.UserImpl; @@ -67,8 +72,13 @@ public class LoginUserServiceImpl extend public User login(String username, String password) { ======= public User login(String username, String password) throws Exception { +<<<<<<< HEAD >>>>>>> alert people "invilid login" for the wrong username and/or password, >>>>>>> which should be improved with a gentle way SessionUtils.cleanSessionAttributes(httpSession); +======= + HttpSession httpSession = httpSessionProvider.get(); + SessionUtils.cleanSessionAttributes(httpSession); +>>>>>>> fix issue 5,6,8: User user = new UserImpl(); user.setName(username); user.setPassword(password); Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LogoutUserServiceImpl.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LogoutUserServiceImpl.java?rev=1522207&r1=1522206&r2=1522207&view=diff ============================================================================== --- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LogoutUserServiceImpl.java (original) +++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/LogoutUserServiceImpl.java Thu Sep 12 03:28:08 2013 @@ -53,10 +53,14 @@ public class LogoutUserServiceImpl exten // remove user attributes from session <<<<<<< HEAD +<<<<<<< HEAD SessionUtils.cleanSessionAttributes(httpSessionProvider.get()); ======= SessionUtils.cleanSessionAttributes(httpSession); >>>>>>> other RFs +======= + SessionUtils.cleanSessionAttributes(httpSessionProvider.get()); +>>>>>>> fix issue 5,6,8: return new LogoutUserResultImpl(user); Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/SendMessageBaseServiceImpl.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/SendMessageBaseServiceImpl.java?rev=1522207&r1=1522206&r2=1522207&view=diff ============================================================================== --- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/SendMessageBaseServiceImpl.java (original) +++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/SendMessageBaseServiceImpl.java Thu Sep 12 03:28:08 2013 @@ -261,8 +261,12 @@ public class SendMessageBaseServiceImpl */ @SuppressWarnings("rawtypes") protected List getAttachments(SendMessageAction action) throws MessagingException { +<<<<<<< HEAD FileItemRegistry registry = SessionUtils.getSessionRegistry(logger, httpSession); >>>>>>> forward and reply message to use RF +======= + FileItemRegistry registry = SessionUtils.getSessionRegistry(logger, httpSessionProvider.get()); +>>>>>>> fix issue 5,6,8: List<MessageAttachment> attachments = action.getMessage().getMessageAttachments(); ArrayList<FileItem> items = new ArrayList<FileItem>(); @@ -290,10 +294,14 @@ public class SendMessageBaseServiceImpl if (attachments != null && ! attachments.isEmpty()) { for(MessageAttachment attach : attachments) <<<<<<< HEAD +<<<<<<< HEAD SessionUtils.getSessionRegistry(logger, httpSessionProvider.get()).remove(attach.getName()); ======= SessionUtils.getSessionRegistry(logger, httpSession).remove(attach.getName()); >>>>>>> forward and reply message to use RF +======= + SessionUtils.getSessionRegistry(logger, httpSessionProvider.get()).remove(attach.getName()); +>>>>>>> fix issue 5,6,8: } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org