Author: dongxu Date: Thu Sep 12 03:14:16 2013 New Revision: 1522176 URL: http://svn.apache.org/r1522176 Log: use CellTable to deal with MessageTableModel, even a few issues
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.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/ui/IMAPMessageListView.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java?rev=1522176&r1=1522175&r2=1522176&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/IMAPMessageListActivity.java Thu Sep 12 03:14:16 2013 @@ -883,6 +883,7 @@ public class IMAPMessageListActivity ext this.user = place.getUser(); this.folder = place.getFolder(); this.searchValue = place.getSearchValue(); +<<<<<<< HEAD ======= } @Override @@ -1124,6 +1125,9 @@ public class IMAPMessageListActivity ext 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 return this; } @@ -1298,6 +1302,7 @@ public class IMAPMessageListActivity ext public HasValue<String> getSearchValue(); public void fillSearchOracle(List<Message> messages); public void setExpandLoading(boolean expanding); + void setImapFolder(ImapFolder folder); } 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=1522176&r1=1522175&r2=1522176&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:14:16 2013 @@ -1337,7 +1337,7 @@ System.out.println("1111111"+response); this.searchValue = searchValue; // FIXME goto? - placeController.goTo(new MailFolderPlace().with(user, folder, searchValue)); +// placeController.goTo(new MailFolderPlace().with(user, folder, searchValue)); // placeController.goTo(mailInboxPlaceProvider.get().with(user)); // System.out.println("111"); // placeController.goTo(new 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=1522176&r1=1522175&r2=1522176&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:14:16 2013 @@ -75,6 +75,7 @@ import com.google.gwt.dom.client.Style.U >>>>>>> Change to new mvp framework - first step import org.apache.hupa.client.bundles.HupaImageBundle; import org.apache.hupa.client.dnd.PagingScrollTableRowDragController; +import org.apache.hupa.client.rf.FetchMessagesRequest; import org.apache.hupa.client.rf.HupaRequestFactory; import org.apache.hupa.client.widgets.CommandsBar; import org.apache.hupa.client.widgets.ConfirmDialogBox; @@ -83,6 +84,9 @@ import org.apache.hupa.client.widgets.Dr 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.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.widgets.ui.HasEnable; import org.apache.hupa.widgets.ui.Loading; @@ -91,9 +95,19 @@ import org.cobogw.gwt.user.client.ui.But import org.cobogw.gwt.user.client.ui.ButtonBar; <<<<<<< 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.core.client.GWT; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.core.client.Scheduler.ScheduledCommand; +>>>>>>> use CellTable to deal with MessageTableModel, even a few issues import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.HasChangeHandlers; @@ -779,6 +793,7 @@ import com.google.gwt.i18n.client.DateTi <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD ======= import com.google.gwt.user.cellview.client.AbstractPager; import com.google.gwt.user.cellview.client.DataGrid; @@ -788,6 +803,12 @@ import com.google.gwt.user.client.ui.Anc ======= >>>>>>> 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.client.ui.Anchor; >>>>>>> import com.google.gwt.user.client.ui.Composite; @@ -801,7 +822,10 @@ import com.google.gwt.user.client.ui.Sug 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.inject.Inject; +import com.google.web.bindery.requestfactory.shared.Receiver; +import com.google.web.bindery.requestfactory.shared.ServerFailure; @SuppressWarnings("deprecation") <<<<<<< HEAD @@ -1571,20 +1595,27 @@ public class IMAPMessageListView extends private Button searchButton; private Loading loading; -// private MessagesCellTable table; -// private AbstractPager pager; - + private MessagesCellTable table; + private SimplePager pager; + + private ImapFolder folder; + @Override + public void setImapFolder(ImapFolder folder){ + this.folder = folder; + } @Inject public IMAPMessageListView(final PagingScrollTableRowDragController controller, final MessageTableModel mTableModel, final HupaConstants constants, final HupaMessages messages, - final HupaImageBundle imageBundle,final EventBus eventBus, final HupaRequestFactory requestFactory) { + final HupaImageBundle imageBundle, final EventBus eventBus, final HupaRequestFactory requestFactory, + final MessagesCellTable table) { this.messages = messages; this.imageBundle = imageBundle; -// table = new MessagesCellTable(eventBus, requestFactory, imageBundle); -// pager = new SimplePager(); -// pager.setDisplay(table); + // table = new MessagesCellTable(eventBus, requestFactory, imageBundle); + this.table = table; + pager = new SimplePager(); + pager.setDisplay(table); deleteMailButton = new EnableButton(constants.deleteMailButton()); newMailButton = new Button(constants.newMailButton()); @@ -1696,17 +1727,147 @@ public class IMAPMessageListView extends commandsBar.addLeft(allLink); commandsBar.addLeft(noneLink); commandsBar.add(loading); - commandsBar.addRight(pagingBar); + // commandsBar.addRight(pagingBar); + + commandsBar.addRight(pager); - msgListContainer.add(commandsBar); - msgListContainer.add(mailTable); -// msgListContainer.add(table); + msgListContainer.add(commandsBar); + // msgListContainer.add(mailTable); + msgListContainer.add(createTable(eventBus, requestFactory, imageBundle)); + // msgListContainer.addSouth(table, DEFAULT_MSG_PAGE_SIZE); confirmBox.setText(messages.confirmDeleteMessages()); confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages()); initWidget(msgListContainer); } + + private boolean pending; + private ListDataProvider<Message> dataProvider = new ListDataProvider<Message>(); + private MessagesCellTable createTable(final EventBus eventBus, final HupaRequestFactory requestFactory, + final HupaImageBundle imageBundle){ + MessagesCellTable table = new MessagesCellTable(eventBus, requestFactory, imageBundle); + table.setWidth("100%", true); + SimplePager.Resources pr = GWT.create(SimplePager.Resources.class); + pager = new SimplePager(TextLocation.CENTER, pr, false, 0, true); + pager.setDisplay(table); + + table.addColumn(new CheckboxColumn()); + table.addColumn(new FromColumn()); + table.addColumn(new SubjectColumn()); + table.addColumn(new AttachmentColumn()); + table.addColumn(new DateColumn()); + + if (!pending) { + pending = true; + Scheduler.get().scheduleFinally(new ScheduledCommand() { + @Override + public void execute() { + pending = false; + fetch(0, requestFactory); + } + }); + } + dataProvider.addDataDisplay(table); + return table; + } + + public void fetch(final int start, final HupaRequestFactory requestFactory) { + FetchMessagesRequest messagesRequest = requestFactory.messagesRequest(); + FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class); + final ImapFolder folder1 = messagesRequest.create(ImapFolder.class); + 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()); + // FIXME cannot put setFolder to the first place + action.setOffset(table.getPageSize()); + action.setFolder(folder1); + action.setSearchString(null); + 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()); + folder.setUnseenMessageCount(result.getRealUnreadCount()); + dataProvider.setList(result.getMessages()); +// table.setRowCount(result.getRealCount()); +// if (result.getMessages() != null) { +// table.setRowData(start + table.getPageSize(), result.getMessages()); +// } else { +// table.setRowData(start +table.getPageSize(), result.getMessages()); +// } + + pager.setPageStart(start); +// if (start == 0 || !table.isRowCountExact()) { +// table.setRowCount(start + result.getMessages().size(), result.getMessages().size() < table.getPageSize()); +// } +// flush(); + // Notify presenter to update folder tree view +// eventBus.fireEvent(new MessagesReceivedEvent(folder1, result.getMessages())); + } + }); + } + + private class CheckboxColumn extends Column<Message, Boolean> { + public CheckboxColumn() { + super(new CheckboxCell()); + } + @Override + public Boolean getValue(Message object) { + return true; + } + } + + private class FromColumn extends Column<Message, String> { + public FromColumn() { + super(new TextCell()); + } + @Override + public String getValue(Message object) { + return object.getFrom(); + } + } + + private class SubjectColumn extends Column<Message, String> { + public SubjectColumn() { + super(new TextCell()); + } + @Override + public String getValue(Message object) { + return object.getSubject(); + } + } + + private class AttachmentColumn extends Column<Message, ImageResource> { + public AttachmentColumn() { + super(new ImageResourceCell()); + } + @Override + public ImageResource getValue(Message object) { + return object.hasAttachment() ? imageBundle.attachmentIcon() : null; + } + } + + private class DateColumn extends Column<Message, Date> { + public DateColumn() { + super(new DateCell(DateTimeFormat.getFormat("dd.MMM.yyyy"))); + } + @Override + public Date getValue(Message object) { + return object.getReceivedDate(); + } + } PageLoadHandler onMessagePageLoadHandler = new PageLoadHandler() { public void onPageLoad(PageLoadEvent event) { 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=1522176&r1=1522175&r2=1522176&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:14:16 2013 @@ -502,23 +502,21 @@ import com.google.gwt.cell.client.Checkb 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.core.client.Scheduler; -import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.event.shared.EventBus; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.user.cellview.client.AbstractPager; +import com.google.gwt.user.cellview.client.CellTable; import com.google.gwt.user.cellview.client.Column; -import com.google.gwt.user.cellview.client.DataGrid; +import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; import com.google.gwt.user.cellview.client.SimplePager; import com.google.gwt.view.client.RangeChangeEvent; import com.google.inject.Inject; import com.google.web.bindery.requestfactory.shared.Receiver; import com.google.web.bindery.requestfactory.shared.ServerFailure; -public class MessagesCellTable extends DataGrid<Message> { +public class MessagesCellTable extends CellTable<Message> { - private static final int PAGE_SIZE = 5; + private static final int PAGE_SIZE = 25; private User user; private ImapFolder folder; @@ -533,7 +531,7 @@ public class MessagesCellTable extends D public SimplePager getPager(){ return pager; } -// @Inject + @Inject public MessagesCellTable(final EventBus eventBus, final HupaRequestFactory requestFactory, final HupaImageBundle imageBundle) { @@ -542,16 +540,16 @@ public class MessagesCellTable extends D this.requestFactory = requestFactory; this.imageBundle = imageBundle; -// addColumn(new CheckboxColumn()); - addColumn(new FromColumn(), "from"); - addColumn(new SubjectColumn(), "subject"); -// addColumn(new AttachmentColumn()); -// addColumn(new DateColumn()); + addColumn(new CheckboxColumn()); + addColumn(new FromColumn()); + addColumn(new SubjectColumn()); + addColumn(new AttachmentColumn()); + addColumn(new DateColumn()); pager = new SimplePager(); pager.setDisplay(this); setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED); -// setVisible(true); + setVisible(true); addRangeChangeHandler(new RangeChangeEvent.Handler() { @Override public void onRangeChange(RangeChangeEvent event) { @@ -577,7 +575,7 @@ public class MessagesCellTable extends D user = loadMessagesEvent.getUser(); folder = loadMessagesEvent.getFolder(); searchValue = loadMessagesEvent.getSearchValue(); - fetch(0); +// fetch(0); } }); eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() { @@ -594,7 +592,7 @@ public class MessagesCellTable extends D user = event.getUser(); folder = new ImapFolderImpl(user.getSettings().getInboxFolderName()); searchValue = null; - fetch(0); +// fetch(0); } }); eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() { @@ -640,7 +638,7 @@ public class MessagesCellTable extends D MessagesCellTable.this.folder.setMessageCount(result.getRealCount()); MessagesCellTable.this.folder.setUnseenMessageCount(result.getRealUnreadCount()); setRowCount(result.getRealCount()); - if (result != null && result.getMessages() != null) { + if (result.getMessages() != null) { setRowData(start + getPageSize(), result.getMessages()); } else { setRowData(start + getPageSize(), result.getMessages()); @@ -650,7 +648,7 @@ public class MessagesCellTable extends D if (start == 0 || !isRowCountExact()) { setRowCount(start + result.getMessages().size(), result.getMessages().size() < getPageSize()); } - flush(); +// flush(); // Notify presenter to update folder tree view eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages())); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org