You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by do...@apache.org on 2013/09/12 05:14:17 UTC
svn commit: r1522176 - in
/james/hupa/trunk/client/src/main/java/org/apache/hupa/client:
activity/IMAPMessageListActivity.java activity/WestActivity.java
ui/IMAPMessageListView.java ui/MessagesCellTable.java
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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org