Author: dongxu
Date: Thu Sep 12 03:30:31 2013
New Revision: 1522212
URL: http://svn.apache.org/r1522212
Log:
fix the main part of issue 11 - delete selected messages.
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/ui/IMAPMessageListView.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=1522212&r1=1522211&r2=1522212&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:30:31 2013
@@ -27,6 +27,9 @@ package org.apache.hupa.client.activity;
import java.util.ArrayList;
import java.util.List;
<<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fix the main part of issue 11 - delete selected messages.
import java.util.Set;
import org.apache.hupa.client.activity.MessageSendActivity.Type;
@@ -405,6 +408,7 @@ import org.apache.hupa.client.rf.DeleteM
import org.apache.hupa.client.rf.DeleteMessageByUidRequest;
import org.apache.hupa.client.rf.MoveMessageRequest;
import org.apache.hupa.client.rf.SetFlagRequest;
+import org.apache.hupa.client.ui.MessagesCellTable;
import org.apache.hupa.client.ui.WidgetDisplayable;
import org.apache.hupa.client.widgets.HasDialog;
import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
@@ -816,22 +820,33 @@ public class IMAPMessageListActivity ext
}
private void deleteMessages() {
- List<Message> ml = display.getSelectedMessages();
+ Set<Message> ml = display.getSelectedMessages();
final List<Message> selectedMessages = new
ArrayList<Message>(ml);
List<Long> uids = new ArrayList<Long>();
for (Message m : selectedMessages) {
uids.add(m.getUid());
+ display.getTable().getSelectionModel().setSelected(m,
false); // FIXME should be deSelected, or remove?
}
// maybe its better to just remove the messages from the table
and
// expect the removal will work
display.removeMessages(selectedMessages);
DeleteMessageByUidRequest req =
requestFactory.deleteMessageByUidRequest();
DeleteMessageByUidAction action =
req.create(DeleteMessageByUidAction.class);
+ ImapFolder folder1 = req.create(ImapFolder.class);
+ folder1.setChildren(folder.getChildren());
+ folder1.setDelimiter(folder.getDelimiter());
+ folder1.setFullName(folder.getFullName());
+ folder1.setMessageCount(folder.getMessageCount());
+ folder1.setName(folder.getName());
+ folder1.setSubscribed(folder.getSubscribed());
+ folder1.setUnseenMessageCount(folder.getUnseenMessageCount());
action.setMessageUids(uids);
- action.setFolder(folder);
+ action.setFolder(folder1);
req.delete(action).fire(new Receiver<DeleteMessageResult>() {
@Override
public void onSuccess(DeleteMessageResult response) {
+
display.getTable().setVisibleRangeAndClearData(display.getTable().getVisibleRange(),
true);
+
eventBus.fireEvent(new
DecreaseUnseenEvent(user, folder, response.getCount()));
}
});
@@ -1247,7 +1262,7 @@ public class IMAPMessageListActivity ext
public HasClickHandlers getDeleteClick();
public HasClickHandlers getDeleteAllClick();
public HasEnable getDeleteEnable();
- public List<Message> getSelectedMessages();
+ public Set<Message> getSelectedMessages();
public HasDialog getConfirmDeleteDialog();
public HasDialog getConfirmDeleteAllDialog();
public HasClickHandlers getConfirmDeleteDialogClick();
@@ -1262,6 +1277,7 @@ public class IMAPMessageListActivity ext
public HasChangeHandlers getRowsPerPageChange();
public HasClickHandlers getSearchClick();
public HasValue<String> getSearchValue();
+ public MessagesCellTable getTable();
}
<<<<<<< HEAD
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=1522212&r1=1522211&r2=1522212&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:30:31 2013
@@ -25,6 +25,7 @@ package org.apache.hupa.client.ui;
<<<<<<< HEAD
import java.util.List;
import java.util.Set;
+<<<<<<< HEAD
=======
import java.util.ArrayList;
import java.util.Date;
@@ -39,6 +40,8 @@ import java.util.Date;
>>>>>>> remove gwt-incubator dependency in Messages List Model;
import java.util.List;
>>>>>>> Change to new mvp framework - first step
+=======
+>>>>>>> fix the main part of issue 11 - delete selected messages.
import org.apache.hupa.client.HupaCSS;
import org.apache.hupa.client.HupaConstants;
@@ -48,6 +51,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;
@@ -87,6 +91,8 @@ import org.apache.hupa.client.bundles.Hu
=======
import org.apache.hupa.client.bundles.HupaImageBundle;
>>>>>>> fix issue 5,6,8:
+=======
+>>>>>>> fix the main part of issue 11 - delete selected messages.
import org.apache.hupa.client.rf.FetchMessagesRequest;
import org.apache.hupa.client.rf.HupaRequestFactory;
import org.apache.hupa.client.widgets.ConfirmDialogBox;
@@ -213,9 +219,14 @@ import com.google.gwt.view.client.Select
=======
import com.google.gwt.view.client.CellPreviewEvent;
import com.google.gwt.view.client.CellPreviewEvent.Handler;
+import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.RangeChangeEvent;
+<<<<<<< HEAD
>>>>>>> make the messages list can be selected without bothering the checkbox
>>>>>>> column's behavior of it.
+=======
+import com.google.gwt.view.client.SelectionChangeEvent;
+>>>>>>> fix the main part of issue 11 - delete selected messages.
import com.google.gwt.view.client.SelectionModel;
import com.google.inject.Inject;
import com.google.web.bindery.requestfactory.shared.Receiver;
@@ -225,6 +236,7 @@ import com.google.web.bindery.requestfac
public class IMAPMessageListView extends Composite implements
IMAPMessageListActivity.Displayable {
<<<<<<< HEAD
+<<<<<<< HEAD
@SuppressWarnings("unused") private HupaMessages messages;
private EnableButton deleteMailButton;
@@ -1664,6 +1676,9 @@ public class IMAPMessageListView extends
@SuppressWarnings("unused")
private HupaMessages messages;
>>>>>>> make the messages list can be selected without bothering the checkbox
>>>>>>> column's behavior of it.
+=======
+ @SuppressWarnings("unused") private HupaMessages messages;
+>>>>>>> fix the main part of issue 11 - delete selected messages.
private EnableButton deleteMailButton;
private Button newMailButton;
@@ -1753,20 +1768,43 @@ public class IMAPMessageListView extends
setExpandLoading(true);
eventBus.fireEvent(new
ExpandMessageEvent(user, folder, event.getValue()));
}
-
}
-
private boolean
hasClickedButFirstCol(CellPreviewEvent<Message> event) {
return
"click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn();
}
});
- table.getCheckboxCol().setFieldUpdater(new
FieldUpdater<Message, Boolean>() {
+ selectionModel.addSelectionChangeHandler(new
SelectionChangeEvent.Handler() {
@Override
- public void update(int index, Message object, Boolean
value) {
- selectionModel.setSelected(object, value);
+ public void onSelectionChange(SelectionChangeEvent
event) {
+ if (selectedCount() == 0) {
+ toggleButtons(false);
+ } else {
+ toggleButtons(true);
+ }
}
});
+// table.getCheckboxCol().setFieldUpdater(new
FieldUpdater<Message, Boolean>() {
+// @Override
+// public void update(int index, Message object, Boolean
value) {
+// selectionModel.setSelected(object, value);
+// if (selectedCount() == 0) {
+// toggleButtons(false);
+// } else {
+// toggleButtons(true);
+// }
+// }
+//
+// private int selectedCount() {
+// return getSelectedMessages().size();
+// }
+//
+// private void toggleButtons(boolean b) {
+// getDeleteEnable().setEnabled(b);
+// getMarkSeenEnable().setEnabled(b);
+// getMarkUnseenEnable().setEnabled(b);
+// }
+// });
table.addRangeChangeHandler(new RangeChangeEvent.Handler() {
@Override
@@ -1852,18 +1890,17 @@ 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())));
- }
- });
+ 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);
@@ -1888,7 +1925,7 @@ public class IMAPMessageListView extends
hPanel.add(searchPanel);
hPanel.setCellHorizontalAlignment(searchPanel,
HorizontalPanel.ALIGN_RIGHT);
- HorizontalPanel pagerBar = new HorizontalPanel();
+ HorizontalPanel pagerBar = new HorizontalPanel();
pagerBar.add(pager);
pagerBar.add(pageBox);
@@ -1904,6 +1941,15 @@ public class IMAPMessageListView extends
initWidget(solidCenterPanel);
}
+ private int selectedCount() {
+ return getSelectedMessages().size();
+ }
+
+ private void toggleButtons(boolean b) {
+ getDeleteEnable().setEnabled(b);
+ getMarkSeenEnable().setEnabled(b);
+ getMarkUnseenEnable().setEnabled(b);
+ }
public void reloadData() {
}
@@ -2045,8 +2091,9 @@ public class IMAPMessageListView extends
* @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
* getSelectedMessages()
*/
- public List<Message> getSelectedMessages() {
- return null;
+ @SuppressWarnings("unchecked")
+ public Set<Message> getSelectedMessages() {
+ return ((MultiSelectionModel<Message>)
(table.getSelectionModel())).getSelectedSet();
}
/*
@@ -2243,5 +2290,13 @@ public class IMAPMessageListView extends
loading.hide();
}
}
+<<<<<<< HEAD
>>>>>>> fix some bugs related to RF, and try to use new CellView to replace
>>>>>>> gwt-incubator
+=======
+
+ @Override
+ public MessagesCellTable getTable() {
+ return table;
+ }
+>>>>>>> fix the main part of issue 11 - delete selected messages.
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]