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:27:33 UTC
svn commit: r1522206 - in
/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui:
IMAPMessageListView.java MessagesCellTable.java
Author: dongxu
Date: Thu Sep 12 03:27:33 2013
New Revision: 1522206
URL: http://svn.apache.org/r1522206
Log:
make the messages list can be selected without bothering the checkbox column's behavior of it.
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
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=1522206&r1=1522205&r2=1522206&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:27:33 2013
@@ -46,6 +46,7 @@ import org.apache.hupa.client.HupaMessag
import org.apache.hupa.client.activity.IMAPMessageListActivity;
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
import org.apache.hupa.client.rf.FetchMessagesRequest;
import org.apache.hupa.client.rf.HupaRequestFactory;
import org.apache.hupa.client.widgets.ConfirmDialogBox;
@@ -80,6 +81,8 @@ import com.google.gwt.dom.client.Style.U
=======
>>>>>>> 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.rf.FetchMessagesRequest;
import org.apache.hupa.client.rf.HupaRequestFactory;
import org.apache.hupa.client.widgets.CommandsBar;
@@ -111,6 +114,7 @@ import org.cobogw.gwt.user.client.ui.But
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
>>>>>>> Change to new mvp framework - first step
=======
>>>>>>> Change to new mvp framework - first step
@@ -119,6 +123,9 @@ 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.cell.client.FieldUpdater;
+>>>>>>> make the messages list can be selected without bothering the checkbox column's behavior of it.
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@@ -179,6 +186,7 @@ import com.google.gwt.user.client.ui.Ver
>>>>>>> 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;
@@ -187,14 +195,22 @@ import com.google.gwt.view.client.Provid
>>>>>>> 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.ProvidesKey;
+import com.google.gwt.view.client.RangeChangeEvent;
+>>>>>>> make the messages list can be selected without bothering the checkbox column's behavior of it.
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 {
+public class IMAPMessageListView extends Composite implements
+ IMAPMessageListActivity.Displayable {
+<<<<<<< HEAD
@SuppressWarnings("unused") private HupaMessages messages;
private EnableButton deleteMailButton;
@@ -1630,6 +1646,10 @@ public class IMAPMessageListView extends
@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.
private EnableButton deleteMailButton;
private Button newMailButton;
@@ -1655,11 +1675,18 @@ public class IMAPMessageListView extends
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;
- private final SingleSelectionModel<Message> selectionModel = new SingleSelectionModel<Message>();
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());
@@ -1668,9 +1695,8 @@ public class IMAPMessageListView extends
folder1.setName(folder.getName());
folder1.setSubscribed(folder.getSubscribed());
folder1.setUnseenMessageCount(folder.getUnseenMessageCount());
- // FIXME cannot put setFolder to the first place
- action.setOffset(table.getPageSize());
action.setFolder(folder1);
+ action.setOffset(table.getPageSize());
action.setSearchString(searchValue);
action.setStart(start);
messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {
@@ -1681,109 +1707,93 @@ public class IMAPMessageListView extends
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());
-// dataProvider.setList(result.getMessages());
-// sortHandler = new ListHandler<Message>(dataProvider.getList());
-
-// sortHandler.setComparator(addressColumn, new Comparator<Contact>() {
-// public int compare(Contact o1, Contact o2) {
-// return o1.address.compareTo(o2.address);
-// }
-// });
-// table.addColumnSortHandler(sortHandler);
+ // folder.setMessageCount(result.getRealCount());// TODO if do
+ // this, there will be auto bean has been frozen.
+ // folder.setUnseenMessageCount(result.getRealUnreadCount());
table.setRowCount(result.getRealCount());
- if (result.getMessages() != null) {
- table.setRowData(start, result.getMessages());
- } else {
- table.setRowData(start, 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()));
+ table.setRowData(start, result.getMessages());
+
+ pager.setPageStart(start);
+ eventBus.fireEvent(new MessagesReceivedEvent(folder1, result
+ .getMessages()));
}
});
}
-// private ListDataProvider<Message> dataProvider;
-// ListHandler<Message> sortHandler;
-
-
- protected void refreshSelection() {
- Message message = selectionModel.getSelectedObject();
- if(message == null) return;
- setExpandLoading(true);
-
- /* TODO
- 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));
-
- redraw();
-
- }*/
- eventBus.fireEvent(new ExpandMessageEvent(user, folder, message));
- selectionModel.setSelected(message, false);
-
- }
- MessagesCellTable table;
+ private MessagesCellTable table;
private boolean pending;
+
@Inject
- public IMAPMessageListView(final HupaConstants constants, final HupaMessages messages,
- final EventBus eventBus, final HupaRequestFactory requestFactory,
- final MessagesCellTable table) {
+ public IMAPMessageListView(final HupaConstants constants,
+ final HupaMessages messages, final EventBus eventBus,
+ final HupaRequestFactory requestFactory,
+ final MessagesCellTable table) {
this.table = table;
this.eventBus = eventBus;
-// dataProvider = new ListDataProvider<Message>();
-// dataProvider.addDataDisplay(table);
-
- table.setSelectionModel(selectionModel);
- selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
- @Override
- public void onSelectionChange(SelectionChangeEvent event) {
- refreshSelection();
- }
- });
this.requestFactory = requestFactory;
- table.addRangeChangeHandler(new RangeChangeEvent.Handler() {
+ selectionModel = table.getSelectionModel();
+ table.addCellPreviewHandler(new Handler<Message>() {
@Override
- public void onRangeChange(RangeChangeEvent event) {
- fetch(event.getNewRange().getStart());
+ public void onCellPreview(CellPreviewEvent<Message> event) {
+ if (hasClickedButFirstCol(event)) {
+ setExpandLoading(true);
+ eventBus.fireEvent(new ExpandMessageEvent(user, folder,
+ event.getValue()));
+ }
+
}
- });
- // 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);
-
+ private boolean hasClickedButFirstCol(
+ CellPreviewEvent<Message> event) {
+ return "click".equals(event.getNativeEvent().getType())
+ && 0 != event.getColumn();
}
+
});
- eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
+ table.getCheckboxCol().setFieldUpdater(
+ new FieldUpdater<Message, Boolean>() {
+ @Override
+ public void update(int index, Message object, Boolean value) {
+ selectionModel.setSelected(object, value);
+ }
+ });
- public void onFolderSelectionEvent(FolderSelectionEvent event) {
- user = event.getUser();
- folder = event.getFolder();
- searchValue = null;
+ 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());
+ folder = new ImapFolderImpl(user.getSettings()
+ .getInboxFolderName());
searchValue = null;
if (!pending) {
pending = true;
@@ -1798,7 +1808,6 @@ public class IMAPMessageListView extends
}
});
eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-
public void onLogout(LogoutEvent logoutEvent) {
user = null;
folder = null;
@@ -1806,15 +1815,14 @@ public class IMAPMessageListView extends
}
});
-
-
this.messages = messages;
- this.imageBundle = imageBundle;
this.eventBus = eventBus;
- SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
- pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
- pager.setDisplay(table);
+ 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());
@@ -1828,8 +1836,7 @@ public class IMAPMessageListView extends
loading = new Loading(constants.loading());
DockLayoutPanel solidCenterPanel = new DockLayoutPanel(Unit.EM);
-// solidCenterPanel.addStyleName(HupaCSS.C_msg_list_container);
-
+ // solidCenterPanel.addStyleName(HupaCSS.C_msg_list_container);
HorizontalPanel buttonBar = new HorizontalPanel();
buttonBar.addStyleName(HupaCSS.C_buttons);
@@ -1845,7 +1852,7 @@ public class IMAPMessageListView extends
markButtonBar.add(markSeenButton);
markButtonBar.add(markUnSeenButton);
buttonBar.add(markButtonBar);
-// buttonBar.add(refreshLink); TODO
+ // buttonBar.add(refreshLink); TODO
HorizontalPanel searchPanel = new HorizontalPanel();
searchPanel.addStyleName(HupaCSS.C_buttons);
@@ -1855,13 +1862,11 @@ public class IMAPMessageListView extends
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);
@@ -1871,14 +1876,14 @@ public class IMAPMessageListView extends
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.add(loading);
// commandsBar.addRight(pagingBar);
commandsBar.addRight(pager);
@@ -1994,7 +1999,7 @@ public class IMAPMessageListView extends
* deselectAllMessages()
*/
public void deselectAllMessages() {
-// mailTable.getDataTable().deselectAllRows();
+ // mailTable.getDataTable().deselectAllRows();
}
/*
@@ -2026,7 +2031,7 @@ public class IMAPMessageListView extends
* ()
*/
public void selectAllMessages() {
-// mailTable.getDataTable().selectAllRows();
+ // mailTable.getDataTable().selectAllRows();
}
/*
@@ -2047,7 +2052,7 @@ public class IMAPMessageListView extends
* (java.util.ArrayList)
*/
public void removeMessages(List<Message> messages) {
-// mailTable.removeRows(messages);
+ // mailTable.removeRows(messages);
}
/*
@@ -2057,7 +2062,7 @@ public class IMAPMessageListView extends
* setPostFetchMessageCount(int)
*/
public void setPostFetchMessageCount(int count) {
-// cTableModel.setPostCachedRowCount(count);
+ // cTableModel.setPostCachedRowCount(count);
}
/*
@@ -2066,7 +2071,7 @@ public class IMAPMessageListView extends
* @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
*/
public void redraw() {
-// mailTable.reloadPage();
+ // mailTable.reloadPage();
}
/*
@@ -2151,9 +2156,9 @@ public class IMAPMessageListView extends
* org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#goToPage(int)
*/
public void goToPage(int page) {
-// if (page != mailTable.getCurrentPage()) {
-// mailTable.gotoPage(page, false);
-// }
+ // if (page != mailTable.getCurrentPage()) {
+ // mailTable.gotoPage(page, false);
+ // }
}
/*
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=1522206&r1=1522205&r2=1522206&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:27:33 2013
@@ -506,6 +506,7 @@ import org.apache.hupa.shared.domain.Mes
import com.google.gwt.cell.client.CheckboxCell;
import com.google.gwt.cell.client.DateCell;
+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.dom.client.Style.Unit;
@@ -513,6 +514,10 @@ import com.google.gwt.i18n.client.DateTi
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.view.client.DefaultSelectionEventManager;
+import com.google.gwt.view.client.MultiSelectionModel;
+import com.google.gwt.view.client.ProvidesKey;
+import com.google.gwt.view.client.SelectionModel;
import com.google.inject.Inject;
public class MessagesCellTable extends DataGrid<Message> {
@@ -520,18 +525,29 @@ public class MessagesCellTable extends D
private 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(){
+ return checkboxCol;
+ }
+ public final ProvidesKey<Message> KEY_PROVIDER = new ProvidesKey<Message>() {
+ @Override
+ 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) {
super(PAGE_SIZE);
this.imageBundle = imageBundle;
- Column<Message, ?> checkboxCol = new CheckboxColumn();
- Column<Message, ?> fromCol = new FromColumn();
- Column<Message, ?> subjectCol = new SubjectColumn();
- Column<Message, ?> attachedCol = new AttachmentColumn();
- Column<Message, ?> dateCol = new DateColumn();
addColumn(checkboxCol);
this.setColumnWidth(checkboxCol, 3, Unit.EM);
@@ -545,14 +561,16 @@ public class MessagesCellTable extends D
this.setColumnWidth(dateCol, 10, Unit.EM);
setRowCount(PAGE_SIZE, false);
setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
+ setSelectionModel(selectionModel, DefaultSelectionEventManager.<Message> createCheckboxManager(0));
}
- private class CheckboxColumn extends Column<Message, Boolean> {
+ public class CheckboxColumn extends Column<Message, Boolean> {
+
public CheckboxColumn() {
- super(new CheckboxCell());
+ super(new CheckboxCell(false, false));
}
@Override
public Boolean getValue(Message object) {
- return true;
+ return selectionModel.isSelected(object);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org