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 no...@apache.org on 2009/10/23 11:56:53 UTC
svn commit: r828980 [2/10] - in /james/hupa/trunk:
client/src/main/java/org/apache/hupa/client/
client/src/main/java/org/apache/hupa/client/bundles/
client/src/main/java/org/apache/hupa/client/dnd/
client/src/main/java/org/apache/hupa/client/gin/ clien...
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java Fri Oct 23 09:56:45 2009
@@ -64,312 +64,312 @@
@SuppressWarnings("deprecation")
public class IMAPMessageListPresenter extends WidgetPresenter<IMAPMessageListPresenter.Display>{
-
- public interface Display extends WidgetDisplay{
- public HasRowSelectionHandlers getDataTableSelection();
- public HasPageLoadHandlers getDataTableLoad();
- public void addTableListener(TableListener listener) ;
- public void removeTableListener(TableListener listener) ;
- public void setPostFetchMessageCount(int count);
- public HasClickHandlers getNewClick();
- public Message getData(int rowIndex);
- public HasClickHandlers getDeleteClick();
- public HasClickHandlers getDeleteAllClick();
- public HasEnable getDeleteEnable();
-
- public void reloadData(User user, IMAPFolder folder,String searchValue);
- public void removeMessages(ArrayList<Message> messages);
- public ArrayList<Message> getSelectedMessages();
- public void reset();
- public HasDialog getConfirmDeleteDialog();
- public HasDialog getConfirmDeleteAllDialog();
-
- public HasClickHandlers getConfirmDeleteDialogClick();
- public HasClickHandlers getConfirmDeleteAllDialogClick();
- public void selectAllMessages();
- public void deselectAllMessages();
- public HasClickHandlers getSelectAllClick();
- public HasClickHandlers getSelectNoneClick();
- public HasClickHandlers getMarkSeenClick();
- public HasClickHandlers getMarkUnseenClick();
- public HasEnable getMarkSeenEnable();
- public HasEnable getMarkUnseenEnable();
- public void redraw();
- }
-
- private ArrayList<HandlerRegistration> regList = new ArrayList<HandlerRegistration>();
- private User user;
- private IMAPFolder folder;
- private String searchValue;
- private DispatchAsync dispatcher;
- private ShowMessageTableListener tableListener = new ShowMessageTableListener();
- private boolean isBound = false;
- public final static Place PLACE = new Place("IMAPMessageList");
-
-
- @Inject
- public IMAPMessageListPresenter(IMAPMessageListPresenter.Display display,EventBus bus,DispatchAsync dispatcher) {
- super(display,bus);
- this.dispatcher = dispatcher;
- }
-
- @Override
- public Place getPlace() {
- return PLACE;
- }
-
- @Override
- protected void onBind() {
-
- registerHandler(eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
-
- public void onMoveMessageHandler(MoveMessageEvent event) {
- final Message message = event.getMessage();
- dispatcher.execute(new MoveMessage(event.getOldFolder(), event.getNewFolder(), message.getUid()), new HupaCallback<MoveMessageResult>(dispatcher, eventBus) {
- public void callback(MoveMessageResult result) {
- ArrayList<Message> messageArray = new ArrayList<Message>();
- messageArray.add(message);
- display.removeMessages(messageArray);
- }
- });
- }
-
- }));
- registerHandler(display.getSelectAllClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- display.deselectAllMessages();
- display.selectAllMessages();
- }
-
- }));
-
- registerHandler(display.getSelectNoneClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- display.deselectAllMessages();
- }
-
- }));
-
-
- registerHandler(display.getDeleteClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-
- public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
- if (folder.getFullName().equals(user.getSettings().getTrashFolderName())) {
- display.getConfirmDeleteDialog().show();
- } else {
- deleteMessages();
- }
-
- }
-
- }));
- registerHandler(display.getConfirmDeleteDialogClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- deleteMessages();
- }
-
- }));
-
- registerHandler(display.getNewClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
-
- public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
- eventBus.fireEvent(new NewMessageEvent());
- }
-
- }));
-
- registerHandler(display.getDeleteAllClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- display.getConfirmDeleteAllDialog().center();
- }
-
- }));
-
- registerHandler(display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- dispatcher.execute(new DeleteAllMessages(folder), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {
- public void callback(DeleteMessageResult result) {
- display.reset();
- eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
- }
- });
- }
-
- }));
- registerHandler(display.getMarkSeenClick().addClickHandler( new ClickHandler() {
- public void onClick(ClickEvent event) {
- final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
- ArrayList<Long> uids = new ArrayList<Long>();
- for (int i = 0; i < selectedMessages.size(); i++) {
- Message m = selectedMessages.get(i);
- if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
- uids.add(m.getUid());
- } else {
- selectedMessages.remove(m);
- }
- }
- dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, true, uids), new HupaCallback<GenericResult>(dispatcher, eventBus) {
- public void callback(GenericResult result) {
- GWT.log("S="+selectedMessages.size(), null);
- for (int i = 0; i < selectedMessages.size(); i++) {
- Message m = selectedMessages.get(i);
- if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
- m.getFlags().add(IMAPFlag.SEEN);
- }
- }
- display.redraw();
- eventBus.fireEvent(new DecreaseUnseenEvent(user, folder,selectedMessages.size()));
- }
- });
- }
-
- }));
-
- registerHandler(display.getMarkUnseenClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
- ArrayList<Long> uids = new ArrayList<Long>();
- for (int i = 0; i < selectedMessages.size(); i++) {
- Message m = selectedMessages.get(i);
- if (m.getFlags().contains(IMAPFlag.SEEN)) {
- uids.add(m.getUid());
- } else {
- selectedMessages.remove(m);
- }
- }
-
- dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, false, uids), new HupaCallback<GenericResult>(dispatcher, eventBus) {
- public void callback(GenericResult result) {
- for (int i = 0; i < selectedMessages.size(); i++) {
- Message m = selectedMessages.get(i);
- if (m.getFlags().contains(IMAPFlag.SEEN)) {
- m.getFlags().remove(IMAPFlag.SEEN);
- }
- }
- display.redraw();
- eventBus.fireEvent(new IncreaseUnseenEvent(user, folder,selectedMessages.size()));
- }
- });
- }
-
-
- }));
-
- regList.add(display.getDataTableSelection().addRowSelectionHandler(new RowSelectionHandler() {
- public void onRowSelection(RowSelectionEvent event) {
- if (event.getSelectedRows().size() == 0) {
- display.getDeleteEnable().setEnabled(false);
- display.getMarkSeenEnable().setEnabled(false);
- display.getMarkUnseenEnable().setEnabled(false);
- } else {
- display.getDeleteEnable().setEnabled(true);
- display.getMarkSeenEnable().setEnabled(true);
- display.getMarkUnseenEnable().setEnabled(true);
- }
- }
-
-
-
- }));
- display.addTableListener(tableListener);
- isBound = true;
- }
-
-
- private void deleteMessages() {
- final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
- ArrayList<Long> uids = new ArrayList<Long>();
- for (int i = 0; i < selectedMessages.size(); i++) {
- uids.add(selectedMessages.get(i).getUid());
- }
- dispatcher.execute(new DeleteMessageByUid(folder,uids), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {
- public void callback(DeleteMessageResult result) {
- display.removeMessages(selectedMessages);
- eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
- }
- });
- }
-
- public void bind(User user, IMAPFolder folder, String searchValue) {
- this.user = user;
- this.folder = folder;
- this.searchValue = searchValue;
- display.setPostFetchMessageCount(user.getSettings().getPostFetchMessageCount());
- // workaround
- if (isBound == false) {
- bind();
- }
-
- //refreshDisplay();
- }
-
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.presenter.client.BasicPresenter#onPlaceRequest(net.customware.gwt.presenter.client.place.PlaceRequest)
- */
- protected void onPlaceRequest(PlaceRequest request) {
- // TODO Auto-generated method stub
-
- }
-
-
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.presenter.client.BasicPresenter#onUnbind()
- */
- protected void onUnbind() {
- display.removeTableListener(tableListener);
- for (int i = 0; i < regList.size(); i++) {
- regList.get(i).removeHandler();
- }
- isBound = false;
- }
-
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.presenter.client.Presenter#refreshDisplay()
- */
- public void refreshDisplay() {
- display.reset();
- display.deselectAllMessages();
-
- display.reloadData(user, folder, searchValue);
- }
-
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.presenter.client.Presenter#revealDisplay()
- */
- public void revealDisplay() {
- display.redraw();
- }
-
- private final class ShowMessageTableListener implements TableListener {
-
- public void onCellClicked(SourcesTableEvents sender, int row,
- int cell) {
-
- Message message = display.getData(row);
-
- // mark the message as seen and redraw the table to reflect this
- if (message.getFlags().contains(Message.IMAPFlag.SEEN) == false) {
- // add flag, fire event and redraw
- message.getFlags().add(Message.IMAPFlag.SEEN);
- eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,1));
-
- display.redraw();
-
- }
-
- eventBus.fireEvent(new ExpandMessageEvent(user,folder,message));
- }
+
+ public interface Display extends WidgetDisplay{
+ public HasRowSelectionHandlers getDataTableSelection();
+ public HasPageLoadHandlers getDataTableLoad();
+ public void addTableListener(TableListener listener) ;
+ public void removeTableListener(TableListener listener) ;
+ public void setPostFetchMessageCount(int count);
+ public HasClickHandlers getNewClick();
+ public Message getData(int rowIndex);
+ public HasClickHandlers getDeleteClick();
+ public HasClickHandlers getDeleteAllClick();
+ public HasEnable getDeleteEnable();
+
+ public void reloadData(User user, IMAPFolder folder,String searchValue);
+ public void removeMessages(ArrayList<Message> messages);
+ public ArrayList<Message> getSelectedMessages();
+ public void reset();
+ public HasDialog getConfirmDeleteDialog();
+ public HasDialog getConfirmDeleteAllDialog();
+
+ public HasClickHandlers getConfirmDeleteDialogClick();
+ public HasClickHandlers getConfirmDeleteAllDialogClick();
+ public void selectAllMessages();
+ public void deselectAllMessages();
+ public HasClickHandlers getSelectAllClick();
+ public HasClickHandlers getSelectNoneClick();
+ public HasClickHandlers getMarkSeenClick();
+ public HasClickHandlers getMarkUnseenClick();
+ public HasEnable getMarkSeenEnable();
+ public HasEnable getMarkUnseenEnable();
+ public void redraw();
+ }
+
+ private ArrayList<HandlerRegistration> regList = new ArrayList<HandlerRegistration>();
+ private User user;
+ private IMAPFolder folder;
+ private String searchValue;
+ private DispatchAsync dispatcher;
+ private ShowMessageTableListener tableListener = new ShowMessageTableListener();
+ private boolean isBound = false;
+ public final static Place PLACE = new Place("IMAPMessageList");
+
+
+ @Inject
+ public IMAPMessageListPresenter(IMAPMessageListPresenter.Display display,EventBus bus,DispatchAsync dispatcher) {
+ super(display,bus);
+ this.dispatcher = dispatcher;
+ }
+
+ @Override
+ public Place getPlace() {
+ return PLACE;
+ }
+
+ @Override
+ protected void onBind() {
+
+ registerHandler(eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
+
+ public void onMoveMessageHandler(MoveMessageEvent event) {
+ final Message message = event.getMessage();
+ dispatcher.execute(new MoveMessage(event.getOldFolder(), event.getNewFolder(), message.getUid()), new HupaCallback<MoveMessageResult>(dispatcher, eventBus) {
+ public void callback(MoveMessageResult result) {
+ ArrayList<Message> messageArray = new ArrayList<Message>();
+ messageArray.add(message);
+ display.removeMessages(messageArray);
+ }
+ });
+ }
+
+ }));
+ registerHandler(display.getSelectAllClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.deselectAllMessages();
+ display.selectAllMessages();
+ }
+
+ }));
+
+ registerHandler(display.getSelectNoneClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.deselectAllMessages();
+ }
+
+ }));
+
+
+ registerHandler(display.getDeleteClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
+
+ public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
+ if (folder.getFullName().equals(user.getSettings().getTrashFolderName())) {
+ display.getConfirmDeleteDialog().show();
+ } else {
+ deleteMessages();
+ }
+
+ }
+
+ }));
+ registerHandler(display.getConfirmDeleteDialogClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ deleteMessages();
+ }
+
+ }));
+
+ registerHandler(display.getNewClick().addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
+
+ public void onClick(com.google.gwt.event.dom.client.ClickEvent event) {
+ eventBus.fireEvent(new NewMessageEvent());
+ }
+
+ }));
+
+ registerHandler(display.getDeleteAllClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ display.getConfirmDeleteAllDialog().center();
+ }
+
+ }));
+
+ registerHandler(display.getConfirmDeleteAllDialogClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ dispatcher.execute(new DeleteAllMessages(folder), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {
+ public void callback(DeleteMessageResult result) {
+ display.reset();
+ eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
+ }
+ });
+ }
+
+ }));
+ registerHandler(display.getMarkSeenClick().addClickHandler( new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
+ ArrayList<Long> uids = new ArrayList<Long>();
+ for (int i = 0; i < selectedMessages.size(); i++) {
+ Message m = selectedMessages.get(i);
+ if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
+ uids.add(m.getUid());
+ } else {
+ selectedMessages.remove(m);
+ }
+ }
+ dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, true, uids), new HupaCallback<GenericResult>(dispatcher, eventBus) {
+ public void callback(GenericResult result) {
+ GWT.log("S="+selectedMessages.size(), null);
+ for (int i = 0; i < selectedMessages.size(); i++) {
+ Message m = selectedMessages.get(i);
+ if (m.getFlags().contains(IMAPFlag.SEEN) == false) {
+ m.getFlags().add(IMAPFlag.SEEN);
+ }
+ }
+ display.redraw();
+ eventBus.fireEvent(new DecreaseUnseenEvent(user, folder,selectedMessages.size()));
+ }
+ });
+ }
+
+ }));
+
+ registerHandler(display.getMarkUnseenClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
+ ArrayList<Long> uids = new ArrayList<Long>();
+ for (int i = 0; i < selectedMessages.size(); i++) {
+ Message m = selectedMessages.get(i);
+ if (m.getFlags().contains(IMAPFlag.SEEN)) {
+ uids.add(m.getUid());
+ } else {
+ selectedMessages.remove(m);
+ }
+ }
+
+ dispatcher.execute(new SetFlag(folder, IMAPFlag.SEEN, false, uids), new HupaCallback<GenericResult>(dispatcher, eventBus) {
+ public void callback(GenericResult result) {
+ for (int i = 0; i < selectedMessages.size(); i++) {
+ Message m = selectedMessages.get(i);
+ if (m.getFlags().contains(IMAPFlag.SEEN)) {
+ m.getFlags().remove(IMAPFlag.SEEN);
+ }
+ }
+ display.redraw();
+ eventBus.fireEvent(new IncreaseUnseenEvent(user, folder,selectedMessages.size()));
+ }
+ });
+ }
+
+
+ }));
+
+ regList.add(display.getDataTableSelection().addRowSelectionHandler(new RowSelectionHandler() {
+ public void onRowSelection(RowSelectionEvent event) {
+ if (event.getSelectedRows().size() == 0) {
+ display.getDeleteEnable().setEnabled(false);
+ display.getMarkSeenEnable().setEnabled(false);
+ display.getMarkUnseenEnable().setEnabled(false);
+ } else {
+ display.getDeleteEnable().setEnabled(true);
+ display.getMarkSeenEnable().setEnabled(true);
+ display.getMarkUnseenEnable().setEnabled(true);
+ }
+ }
+
+
+
+ }));
+ display.addTableListener(tableListener);
+ isBound = true;
+ }
+
+
+ private void deleteMessages() {
+ final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
+ ArrayList<Long> uids = new ArrayList<Long>();
+ for (int i = 0; i < selectedMessages.size(); i++) {
+ uids.add(selectedMessages.get(i).getUid());
+ }
+ dispatcher.execute(new DeleteMessageByUid(folder,uids), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {
+ public void callback(DeleteMessageResult result) {
+ display.removeMessages(selectedMessages);
+ eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,result.getCount()));
+ }
+ });
+ }
+
+ public void bind(User user, IMAPFolder folder, String searchValue) {
+ this.user = user;
+ this.folder = folder;
+ this.searchValue = searchValue;
+ display.setPostFetchMessageCount(user.getSettings().getPostFetchMessageCount());
+ // workaround
+ if (isBound == false) {
+ bind();
+ }
+
+ //refreshDisplay();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.presenter.client.BasicPresenter#onPlaceRequest(net.customware.gwt.presenter.client.place.PlaceRequest)
+ */
+ protected void onPlaceRequest(PlaceRequest request) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.presenter.client.BasicPresenter#onUnbind()
+ */
+ protected void onUnbind() {
+ display.removeTableListener(tableListener);
+ for (int i = 0; i < regList.size(); i++) {
+ regList.get(i).removeHandler();
+ }
+ isBound = false;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.presenter.client.Presenter#refreshDisplay()
+ */
+ public void refreshDisplay() {
+ display.reset();
+ display.deselectAllMessages();
+
+ display.reloadData(user, folder, searchValue);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.presenter.client.Presenter#revealDisplay()
+ */
+ public void revealDisplay() {
+ display.redraw();
+ }
+
+ private final class ShowMessageTableListener implements TableListener {
+
+ public void onCellClicked(SourcesTableEvents sender, int row,
+ int cell) {
+
+ Message message = display.getData(row);
+
+ // mark the message as seen and redraw the table to reflect this
+ if (message.getFlags().contains(Message.IMAPFlag.SEEN) == false) {
+ // add flag, fire event and redraw
+ message.getFlags().add(Message.IMAPFlag.SEEN);
+ eventBus.fireEvent(new DecreaseUnseenEvent(user,folder,1));
+
+ display.redraw();
+
+ }
+
+ eventBus.fireEvent(new ExpandMessageEvent(user,folder,message));
+ }
- };
+ };
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java Fri Oct 23 09:56:45 2009
@@ -93,672 +93,672 @@
@SuppressWarnings("deprecation")
public class IMAPMessageListView extends Composite implements Display{
- private HupaConstants constants = GWT.create(HupaConstants.class);
- private HupaMessages messages = GWT.create(HupaMessages.class);
- private HupaImageBundle imageBundle = GWT.create(HupaImageBundle.class);
- private DispatchAsync dispatcher;
- private User user;
- private IMAPFolder folder;
- private String searchValue;
- private PagingOptions options;
- private DragRefetchPagingScrollTable<Message> mailTable;
- private CachedTableModel<Message> cTableModel = new CachedTableModel<Message>(new IMAPMessageTableModel());
-
- private EventBus eventBus;
- private FixedWidthGrid dataTable = createDataTable();
- private MyButton deleteMailButton = new MyButton(constants.deleteMailButton());
- private Button newMailButton = new Button(constants.newMailButton());
- private Button deleteAllMailButton = new Button(constants.deleteAll());
- private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
- private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
- private MyButton markSeenButton = new MyButton(constants.markSeen());
- private MyButton markUnSeenButton = new MyButton(constants.markUnseen());
-
- private ListBox pageBox = new ListBox();
- private Hyperlink allLink = new Hyperlink(constants.all(),"");
- private Hyperlink noneLink = new Hyperlink(constants.none(),"");
-
-
- @Inject
- public IMAPMessageListView(DispatchAsync dispatcher,EventBus bus, PagingScrollTableRowDragController controller) {
- this.eventBus = bus;
- this.dispatcher = dispatcher;
-
- VerticalPanel vPanel = new VerticalPanel();
-
- cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
- mailTable = new DragRefetchPagingScrollTable<Message>(
- cTableModel, dataTable, new FixedWidthFlexTable(),
- createTableDefinitation(),controller,1);
- mailTable.setPageSize(20);
- mailTable.setDragHandler(0,30, new DragHandlerFactory() {
-
- public Widget createHandler() {
- return new HTML(imageBundle.readyToMoveMailIcon().getHTML());
- }
-
- });
-
- HTML emptyTable = new HTML(constants.emptyMailTable());
- emptyTable.setHorizontalAlignment(HTML.ALIGN_CENTER);
- emptyTable.setHeight("600px");
- mailTable.setEmptyTableWidget(emptyTable);
- FixedWidthGridBulkRenderer<Message> bulkRenderer = new FixedWidthGridBulkRenderer<Message>(mailTable.getDataTable(),mailTable);
- mailTable.setBulkRenderer(bulkRenderer);
-
- mailTable.setCellPadding(0);
- mailTable.setResizePolicy(ResizePolicy.FILL_WIDTH);
- mailTable.setColumnResizePolicy(ColumnResizePolicy.MULTI_CELL);
- mailTable.setScrollPolicy(ScrollPolicy.DISABLED);
- mailTable.addPageLoadHandler(new PageLoadHandler() {
-
- public void onPageLoad(PageLoadEvent event) {
- for (int i = 0; i < mailTable.getDataTable().getRowCount(); i++) {
- mailTable.getDataTable().getRowFormatter().setStyleName(i,"hupa-Mailtable-row");
- Message msg = mailTable.getRowValue(i);
- if (msg != null) {
- if (msg.getFlags().contains(IMAPFlag.SEEN) == false) {
- mailTable.getDataTable().getRowFormatter().addStyleName(i,"hupa-Mailtable-row-notseen");
- } else {
- mailTable.getDataTable().getRowFormatter().removeStyleName(i,"hupa-Mailtable-row-notseen");
- }
- }
- }
- }
-
- });
-
-
- mailTable.getDataTable().setCellSpacing(0);
- mailTable.setSortPolicy(SortPolicy.DISABLED);
-
- // This is only needed as workaround in pagingscrolltable
- // See http://code.google.com/p/google-web-toolkit-incubator/wiki/PagingScrollTable
- mailTable.setWidth(Window.getClientWidth() -150 -40+"px");
- mailTable.setHeight("600px");
- Window.addResizeHandler(new ResizeHandler() {
-
- public void onResize(ResizeEvent event) {
- mailTable.setWidth(Window.getClientWidth() -150 -30+"px");
- }
-
- });
- mailTable.fillWidth();
-
- options = new PagingOptions(mailTable);
-
- HorizontalPanel buttonBar = new HorizontalPanel();
- buttonBar.setSpacing(5);
-
- ButtonBar navigatorBar = new ButtonBar();
- navigatorBar.add(newMailButton);
- deleteMailButton.setEnabled(false);
- navigatorBar.add(deleteMailButton);
- buttonBar.add(navigatorBar);
- buttonBar.add(deleteAllMailButton);
-
- ButtonBar markButtonBar = new ButtonBar();
- markButtonBar.add(markSeenButton);
- markButtonBar.add(markUnSeenButton);
- buttonBar.add(markButtonBar);
-
- pageBox.addItem("20");
- pageBox.addItem("50");
- pageBox.addItem("100");
- pageBox.addChangeHandler(new ChangeHandler() {
-
- public void onChange(ChangeEvent event) {
- mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
- }
-
- });
- HorizontalPanel hPanel = new HorizontalPanel();
- hPanel.setStyleName("hupa-MailTableControl");
- hPanel.setSpacing(10);
- hPanel.add(buttonBar);
- hPanel.add(pageBox);
- hPanel.setCellHorizontalAlignment(pageBox, HorizontalPanel.ALIGN_RIGHT);
-
-
-
- hPanel.setWidth("100%");
- hPanel.setHeight("100%");
- vPanel.add(hPanel);
-
- HorizontalPanel barPanel = new HorizontalPanel();
- HorizontalPanel bar = new HorizontalPanel();
- bar.setSpacing(3);
- bar.add(new HTML(constants.select() +":"));
- bar.add(allLink);
- bar.add(noneLink);
-
- barPanel.add(bar);
- barPanel.setCellHorizontalAlignment(bar, HorizontalPanel.ALIGN_LEFT);
- barPanel.add(options);
- barPanel.setCellHorizontalAlignment(options, HorizontalPanel.ALIGN_RIGHT);
- barPanel.setWidth("100%");
- vPanel.add(barPanel);
- //vPanel.add(bar);
- vPanel.add(mailTable);
- confirmBox.setText(messages.confirmDeleteMessages());
- confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
- initWidget(vPanel);
- }
-
- private DefaultTableDefinition<Message> createTableDefinitation() {
- DefaultTableDefinition<Message> def = new DefaultTableDefinition<Message>(createColumnDefinitionList());
-
- return def;
- }
-
-
- /**
- * @return the newly created data table.
- */
- private FixedWidthGrid createDataTable() {
- FixedWidthGrid dataTable = new FixedWidthGrid();
- dataTable.setSelectionPolicy(SelectionPolicy.CHECKBOX);
- return dataTable;
- }
-
- /**
- * Create a new List which holds all needed ColumnDefinitions
- *
- */
- private List<ColumnDefinition<Message, ?>> createColumnDefinitionList() {
- List<ColumnDefinition<Message, ?>> cList = new ArrayList<ColumnDefinition<Message, ?>>();
-
- FromColumnDefination from = new FromColumnDefination();
- from.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
- from.setColumnTruncatable(true);
- from.setPreferredColumnWidth(250);
- from.setMinimumColumnWidth(150);
- from.setMaximumColumnWidth(300);
- cList.add(from);
-
-
- SubjectColumnDefination subject =new SubjectColumnDefination();
- subject.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
- subject.setColumnTruncatable(true);
- subject.setPreferredColumnWidth(800);
- subject.setMinimumColumnWidth(200);
- cList.add(subject);
-
- AttachmentColumnDefination attachment = new AttachmentColumnDefination();
- attachment.setColumnTruncatable(false);
- // display an image if the message contains an attachment
- attachment.setCellRenderer(new CellRenderer<Message, Boolean>() {
-
- public void renderRowValue(Message rowValue,
- ColumnDefinition<Message, Boolean> columnDef,
- AbstractCellView<Message> view) {
- if (columnDef.getCellValue(rowValue)) {
- view.setHTML(imageBundle.attachmentIcon().getHTML());
- } else {
- view.setHTML(" ");
- }
-
- }
-
- });
-
- attachment.setPreferredColumnWidth(20);
- attachment.setMinimumColumnWidth(15);
- attachment.setMaximumColumnWidth(25);
- cList.add(attachment);
-
- DateColumnDefination date = new DateColumnDefination();
- date.setColumnTruncatable(true);
- // set a special renderer for the date
- date.setCellRenderer(new CellRenderer<Message, Date>() {
-
- public void renderRowValue(Message rowValue,
- ColumnDefinition<Message, Date> columnDef,
- AbstractCellView<Message> view) {
- DateTimeFormat dtformat;
- Date rDate = rowValue.getReceivedDate();
- int rYear = rDate.getYear();
- int rMonth = rDate.getMonth();
- int rDay = rDate.getDate();
-
- Date now = new Date();
- int nowYear = now.getYear();
- int nowMonth = now.getMonth();
- int nowDay = now.getDate();
-
- if (rYear < nowYear) {
- dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy");
- } else if (rMonth < nowMonth || (rMonth == nowMonth && rDay < nowDay)) {
- dtformat = DateTimeFormat.getFormat("dd.MMM.");
- } else if (rDay == nowDay){
- dtformat = DateTimeFormat.getFormat("HH:mm");
- } else {
-
- dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy HH:mm");
- }
-
- view.setHTML(dtformat.format(rDate));
- view.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
- }
-
- });
- date.setPreferredColumnWidth(100);
- date.setMinimumColumnWidth(100);
- date.setMaximumColumnWidth(150);
-
- cList.add(date);
-
- return cList;
- }
-
- /**
- * TableModel which retrieve the messages for the user
- *
- */
- private final class IMAPMessageTableModel extends MutableTableModel<Message> {
-
- @Override
- public void requestRows(
- final Request request,
- final com.google.gwt.gen2.table.client.TableModel.Callback<Message> callback) {
-
- // if the given user or folder is null, its safe to return an empty list
- if (user == null || folder == null) {
- callback.onRowsReady(request, new TableModelHelper.Response<Message>() {
-
- @Override
- public Iterator<Message> getRowValues() {
- return new ArrayList<Message>().iterator();
- }
-
- });
- }
-
- dispatcher.execute(new FetchMessages(folder, request.getStartRow(), request.getNumRows(),searchValue),new HupaCallback<FetchMessagesResult>(dispatcher, eventBus) {
- public void callback(final FetchMessagesResult result) {
- eventBus.fireEvent(new MessagesReceivedEvent(folder,result.getMessages()));
- TableModelHelper.Response<Message> response = new TableModelHelper.Response<Message>() {
- @Override
- public Iterator<Message> getRowValues() {
- return result.getMessages().iterator();
- }
- };
- cTableModel.setRowCount(result.getRealCount());
- callback.onRowsReady(request,response);
- }
- });
- }
-
- @Override
- protected boolean onRowInserted(int beforeRow) {
- return true;
- }
-
- @Override
- protected boolean onRowRemoved(int row) {
- return true;
- }
-
- @Override
- protected boolean onSetRowValue(int row, Message rowValue) {
- return true;
- }
-
- }
-
-
- /**
- * ColumnDefination which display if the message contains an attachment
- * @author Norman
- *
- */
- private final class AttachmentColumnDefination extends AbstractColumnDefinition<Message, Boolean> {
-
- @Override
- public Boolean getCellValue(Message rowValue) {
- return rowValue.hasAttachment();
- }
-
- @Override
- public void setCellValue(Message rowValue, Boolean cellValue) {
- }
-
- }
-
- /**
- * ColumnDefination which display the From
- *
- */
- private final class FromColumnDefination extends AbstractColumnDefinition<Message, String> {
-
- @Override
- public String getCellValue(Message rowValue) {
- return rowValue.getFrom();
- }
-
- @Override
- public void setCellValue(Message rowValue, String cellValue) {
- rowValue.setFrom(cellValue);
- }
-
- }
-
- /**
- * ColumnDefination which display the Subject
- *
- */
- private final class SubjectColumnDefination extends AbstractColumnDefinition<Message, String> {
-
- @Override
- public String getCellValue(Message rowValue) {
- return rowValue.getSubject();
- }
-
- @Override
- public void setCellValue(Message rowValue, String cellValue) {
- rowValue.setSubject(cellValue);
-
- }
-
- }
-
- /**
- * ColumnDefination which display the Date
- *
- */
- private final class DateColumnDefination extends AbstractColumnDefinition<Message, Date> {
-
- @Override
- public Date getCellValue(Message rowValue) {
- return rowValue.getReceivedDate();
- }
-
- @Override
- public void setCellValue(Message rowValue, Date cellValue) {
- rowValue.setReceivedDate(cellValue);
- }
-
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableSelection()
- */
- public HasRowSelectionHandlers getDataTableSelection() {
- return mailTable.getDataTable();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reloadData(org.apache.hupa.shared.data.User, org.apache.hupa.shared.data.IMAPFolder, java.lang.String)
- */
- public void reloadData(User user, IMAPFolder folder,String searchValue) {
- this.user = user;
- this.folder = folder;
- this.searchValue = searchValue;
- cTableModel.clearCache();
- mailTable.getTableModel().setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
- mailTable.reloadPage();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
- */
- public void reset() {
- this.user = null;
- this.folder = null;
- pageBox.setSelectedIndex(0);
- cTableModel.clearCache();
- cTableModel.setRowCount(0);
- mailTable.reloadPage();
- options.reset();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableLoad()
- */
- public HasPageLoadHandlers getDataTableLoad() {
- return mailTable;
- }
-
-
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
- */
- public Widget asWidget() {
- return this;
- }
-
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.presenter.client.Display#startProcessing()
- */
- public void startProcessing() {
- // TODO Auto-generated method stub
-
- }
-
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.presenter.client.Display#stopProcessing()
- */
- public void stopProcessing() {
- // TODO Auto-generated method stub
-
- }
-
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick()
- */
- public HasClickHandlers getDeleteClick() {
- return deleteMailButton;
- }
-
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
- */
- public HasClickHandlers getNewClick() {
- return newMailButton;
- }
-
- /**
- * Renderer which fill empty rows with a whitespace
- *
- * @param <E> RowType
- */
- private final class WhiteSpaceCellRenderer<E> implements CellRenderer<E, String> {
-
- /*
- * (non-Javadoc)
- * @see com.google.gwt.gen2.table.client.CellRenderer#renderRowValue(java.lang.Object, com.google.gwt.gen2.table.client.ColumnDefinition, com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView)
- */
- public void renderRowValue(E rowValue,
- ColumnDefinition<E, String> columnDef, AbstractCellView<E> view) {
- String cellValue = columnDef.getCellValue(rowValue);
- if (cellValue == null || cellValue.length() < 1) {
- view.setHTML(" ");
- } else {
- view.setHTML(cellValue);
- }
- }
-
-
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
- */
- public Message getData(int rowIndex) {
- return mailTable.getRowValue(rowIndex);
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog()
- */
- public HasDialog getConfirmDeleteDialog() {
- return confirmBox;
- }
-
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteDialogClick()
- */
- public HasClickHandlers getConfirmDeleteDialogClick() {
- return confirmBox;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialog()
- */
- public HasDialog getConfirmDeleteAllDialog() {
- return confirmDeleteAllBox;
- }
-
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialogClick()
- */
- public HasClickHandlers getConfirmDeleteAllDialogClick() {
- return confirmDeleteAllBox;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#deselectAllMessages()
- */
- public void deselectAllMessages() {
- mailTable.getDataTable().deselectAllRows();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick()
- */
- public HasClickHandlers getSelectAllClick() {
- return allLink;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectNoneClick()
- */
- public HasClickHandlers getSelectNoneClick() {
- return noneLink;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages()
- */
- public void selectAllMessages() {
- mailTable.getDataTable().selectAllRows();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectedMessages()
- */
- public ArrayList<Message> getSelectedMessages() {
- return mailTable.getSelectedRows();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages(java.util.ArrayList)
- */
- public void removeMessages(ArrayList<Message> messages) {
- mailTable.removeRows(messages);
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#addTableListener(com.google.gwt.user.client.ui.TableListener)
- */
- public void addTableListener(TableListener listener) {
- dataTable.addTableListener(listener);
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeTableListener(com.google.gwt.user.client.ui.TableListener)
- */
- public void removeTableListener(TableListener listener) {
- dataTable.removeTableListener(listener);
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#setPostFetchMessageCount(int)
- */
- public void setPostFetchMessageCount(int count) {
- cTableModel.setPostCachedRowCount(count);
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
- */
- public void redraw() {
- mailTable.reloadPage();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick()
- */
- public HasClickHandlers getDeleteAllClick() {
- return deleteAllMailButton;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick()
- */
- public HasClickHandlers getMarkSeenClick() {
- return markSeenButton;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenClick()
- */
- public HasClickHandlers getMarkUnseenClick() {
- return markUnSeenButton;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable()
- */
- public HasEnable getDeleteEnable() {
- return deleteMailButton;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable()
- */
- public HasEnable getMarkSeenEnable() {
- return markSeenButton;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenEnable()
- */
- public HasEnable getMarkUnseenEnable() {
- return markUnSeenButton;
- }
+ private HupaConstants constants = GWT.create(HupaConstants.class);
+ private HupaMessages messages = GWT.create(HupaMessages.class);
+ private HupaImageBundle imageBundle = GWT.create(HupaImageBundle.class);
+ private DispatchAsync dispatcher;
+ private User user;
+ private IMAPFolder folder;
+ private String searchValue;
+ private PagingOptions options;
+ private DragRefetchPagingScrollTable<Message> mailTable;
+ private CachedTableModel<Message> cTableModel = new CachedTableModel<Message>(new IMAPMessageTableModel());
+
+ private EventBus eventBus;
+ private FixedWidthGrid dataTable = createDataTable();
+ private MyButton deleteMailButton = new MyButton(constants.deleteMailButton());
+ private Button newMailButton = new Button(constants.newMailButton());
+ private Button deleteAllMailButton = new Button(constants.deleteAll());
+ private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
+ private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
+ private MyButton markSeenButton = new MyButton(constants.markSeen());
+ private MyButton markUnSeenButton = new MyButton(constants.markUnseen());
+
+ private ListBox pageBox = new ListBox();
+ private Hyperlink allLink = new Hyperlink(constants.all(),"");
+ private Hyperlink noneLink = new Hyperlink(constants.none(),"");
+
+
+ @Inject
+ public IMAPMessageListView(DispatchAsync dispatcher,EventBus bus, PagingScrollTableRowDragController controller) {
+ this.eventBus = bus;
+ this.dispatcher = dispatcher;
+
+ VerticalPanel vPanel = new VerticalPanel();
+
+ cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
+ mailTable = new DragRefetchPagingScrollTable<Message>(
+ cTableModel, dataTable, new FixedWidthFlexTable(),
+ createTableDefinitation(),controller,1);
+ mailTable.setPageSize(20);
+ mailTable.setDragHandler(0,30, new DragHandlerFactory() {
+
+ public Widget createHandler() {
+ return new HTML(imageBundle.readyToMoveMailIcon().getHTML());
+ }
+
+ });
+
+ HTML emptyTable = new HTML(constants.emptyMailTable());
+ emptyTable.setHorizontalAlignment(HTML.ALIGN_CENTER);
+ emptyTable.setHeight("600px");
+ mailTable.setEmptyTableWidget(emptyTable);
+ FixedWidthGridBulkRenderer<Message> bulkRenderer = new FixedWidthGridBulkRenderer<Message>(mailTable.getDataTable(),mailTable);
+ mailTable.setBulkRenderer(bulkRenderer);
+
+ mailTable.setCellPadding(0);
+ mailTable.setResizePolicy(ResizePolicy.FILL_WIDTH);
+ mailTable.setColumnResizePolicy(ColumnResizePolicy.MULTI_CELL);
+ mailTable.setScrollPolicy(ScrollPolicy.DISABLED);
+ mailTable.addPageLoadHandler(new PageLoadHandler() {
+
+ public void onPageLoad(PageLoadEvent event) {
+ for (int i = 0; i < mailTable.getDataTable().getRowCount(); i++) {
+ mailTable.getDataTable().getRowFormatter().setStyleName(i,"hupa-Mailtable-row");
+ Message msg = mailTable.getRowValue(i);
+ if (msg != null) {
+ if (msg.getFlags().contains(IMAPFlag.SEEN) == false) {
+ mailTable.getDataTable().getRowFormatter().addStyleName(i,"hupa-Mailtable-row-notseen");
+ } else {
+ mailTable.getDataTable().getRowFormatter().removeStyleName(i,"hupa-Mailtable-row-notseen");
+ }
+ }
+ }
+ }
+
+ });
+
+
+ mailTable.getDataTable().setCellSpacing(0);
+ mailTable.setSortPolicy(SortPolicy.DISABLED);
+
+ // This is only needed as workaround in pagingscrolltable
+ // See http://code.google.com/p/google-web-toolkit-incubator/wiki/PagingScrollTable
+ mailTable.setWidth(Window.getClientWidth() -150 -40+"px");
+ mailTable.setHeight("600px");
+ Window.addResizeHandler(new ResizeHandler() {
+
+ public void onResize(ResizeEvent event) {
+ mailTable.setWidth(Window.getClientWidth() -150 -30+"px");
+ }
+
+ });
+ mailTable.fillWidth();
+
+ options = new PagingOptions(mailTable);
+
+ HorizontalPanel buttonBar = new HorizontalPanel();
+ buttonBar.setSpacing(5);
+
+ ButtonBar navigatorBar = new ButtonBar();
+ navigatorBar.add(newMailButton);
+ deleteMailButton.setEnabled(false);
+ navigatorBar.add(deleteMailButton);
+ buttonBar.add(navigatorBar);
+ buttonBar.add(deleteAllMailButton);
+
+ ButtonBar markButtonBar = new ButtonBar();
+ markButtonBar.add(markSeenButton);
+ markButtonBar.add(markUnSeenButton);
+ buttonBar.add(markButtonBar);
+
+ pageBox.addItem("20");
+ pageBox.addItem("50");
+ pageBox.addItem("100");
+ pageBox.addChangeHandler(new ChangeHandler() {
+
+ public void onChange(ChangeEvent event) {
+ mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
+ }
+
+ });
+ HorizontalPanel hPanel = new HorizontalPanel();
+ hPanel.setStyleName("hupa-MailTableControl");
+ hPanel.setSpacing(10);
+ hPanel.add(buttonBar);
+ hPanel.add(pageBox);
+ hPanel.setCellHorizontalAlignment(pageBox, HorizontalPanel.ALIGN_RIGHT);
+
+
+
+ hPanel.setWidth("100%");
+ hPanel.setHeight("100%");
+ vPanel.add(hPanel);
+
+ HorizontalPanel barPanel = new HorizontalPanel();
+ HorizontalPanel bar = new HorizontalPanel();
+ bar.setSpacing(3);
+ bar.add(new HTML(constants.select() +":"));
+ bar.add(allLink);
+ bar.add(noneLink);
+
+ barPanel.add(bar);
+ barPanel.setCellHorizontalAlignment(bar, HorizontalPanel.ALIGN_LEFT);
+ barPanel.add(options);
+ barPanel.setCellHorizontalAlignment(options, HorizontalPanel.ALIGN_RIGHT);
+ barPanel.setWidth("100%");
+ vPanel.add(barPanel);
+ //vPanel.add(bar);
+ vPanel.add(mailTable);
+ confirmBox.setText(messages.confirmDeleteMessages());
+ confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
+ initWidget(vPanel);
+ }
+
+ private DefaultTableDefinition<Message> createTableDefinitation() {
+ DefaultTableDefinition<Message> def = new DefaultTableDefinition<Message>(createColumnDefinitionList());
+
+ return def;
+ }
+
+
+ /**
+ * @return the newly created data table.
+ */
+ private FixedWidthGrid createDataTable() {
+ FixedWidthGrid dataTable = new FixedWidthGrid();
+ dataTable.setSelectionPolicy(SelectionPolicy.CHECKBOX);
+ return dataTable;
+ }
+
+ /**
+ * Create a new List which holds all needed ColumnDefinitions
+ *
+ */
+ private List<ColumnDefinition<Message, ?>> createColumnDefinitionList() {
+ List<ColumnDefinition<Message, ?>> cList = new ArrayList<ColumnDefinition<Message, ?>>();
+
+ FromColumnDefination from = new FromColumnDefination();
+ from.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
+ from.setColumnTruncatable(true);
+ from.setPreferredColumnWidth(250);
+ from.setMinimumColumnWidth(150);
+ from.setMaximumColumnWidth(300);
+ cList.add(from);
+
+
+ SubjectColumnDefination subject =new SubjectColumnDefination();
+ subject.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
+ subject.setColumnTruncatable(true);
+ subject.setPreferredColumnWidth(800);
+ subject.setMinimumColumnWidth(200);
+ cList.add(subject);
+
+ AttachmentColumnDefination attachment = new AttachmentColumnDefination();
+ attachment.setColumnTruncatable(false);
+ // display an image if the message contains an attachment
+ attachment.setCellRenderer(new CellRenderer<Message, Boolean>() {
+
+ public void renderRowValue(Message rowValue,
+ ColumnDefinition<Message, Boolean> columnDef,
+ AbstractCellView<Message> view) {
+ if (columnDef.getCellValue(rowValue)) {
+ view.setHTML(imageBundle.attachmentIcon().getHTML());
+ } else {
+ view.setHTML(" ");
+ }
+
+ }
+
+ });
+
+ attachment.setPreferredColumnWidth(20);
+ attachment.setMinimumColumnWidth(15);
+ attachment.setMaximumColumnWidth(25);
+ cList.add(attachment);
+
+ DateColumnDefination date = new DateColumnDefination();
+ date.setColumnTruncatable(true);
+ // set a special renderer for the date
+ date.setCellRenderer(new CellRenderer<Message, Date>() {
+
+ public void renderRowValue(Message rowValue,
+ ColumnDefinition<Message, Date> columnDef,
+ AbstractCellView<Message> view) {
+ DateTimeFormat dtformat;
+ Date rDate = rowValue.getReceivedDate();
+ int rYear = rDate.getYear();
+ int rMonth = rDate.getMonth();
+ int rDay = rDate.getDate();
+
+ Date now = new Date();
+ int nowYear = now.getYear();
+ int nowMonth = now.getMonth();
+ int nowDay = now.getDate();
+
+ if (rYear < nowYear) {
+ dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy");
+ } else if (rMonth < nowMonth || (rMonth == nowMonth && rDay < nowDay)) {
+ dtformat = DateTimeFormat.getFormat("dd.MMM.");
+ } else if (rDay == nowDay){
+ dtformat = DateTimeFormat.getFormat("HH:mm");
+ } else {
+
+ dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy HH:mm");
+ }
+
+ view.setHTML(dtformat.format(rDate));
+ view.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
+ }
+
+ });
+ date.setPreferredColumnWidth(100);
+ date.setMinimumColumnWidth(100);
+ date.setMaximumColumnWidth(150);
+
+ cList.add(date);
+
+ return cList;
+ }
+
+ /**
+ * TableModel which retrieve the messages for the user
+ *
+ */
+ private final class IMAPMessageTableModel extends MutableTableModel<Message> {
+
+ @Override
+ public void requestRows(
+ final Request request,
+ final com.google.gwt.gen2.table.client.TableModel.Callback<Message> callback) {
+
+ // if the given user or folder is null, its safe to return an empty list
+ if (user == null || folder == null) {
+ callback.onRowsReady(request, new TableModelHelper.Response<Message>() {
+
+ @Override
+ public Iterator<Message> getRowValues() {
+ return new ArrayList<Message>().iterator();
+ }
+
+ });
+ }
+
+ dispatcher.execute(new FetchMessages(folder, request.getStartRow(), request.getNumRows(),searchValue),new HupaCallback<FetchMessagesResult>(dispatcher, eventBus) {
+ public void callback(final FetchMessagesResult result) {
+ eventBus.fireEvent(new MessagesReceivedEvent(folder,result.getMessages()));
+ TableModelHelper.Response<Message> response = new TableModelHelper.Response<Message>() {
+ @Override
+ public Iterator<Message> getRowValues() {
+ return result.getMessages().iterator();
+ }
+ };
+ cTableModel.setRowCount(result.getRealCount());
+ callback.onRowsReady(request,response);
+ }
+ });
+ }
+
+ @Override
+ protected boolean onRowInserted(int beforeRow) {
+ return true;
+ }
+
+ @Override
+ protected boolean onRowRemoved(int row) {
+ return true;
+ }
+
+ @Override
+ protected boolean onSetRowValue(int row, Message rowValue) {
+ return true;
+ }
+
+ }
+
+
+ /**
+ * ColumnDefination which display if the message contains an attachment
+ * @author Norman
+ *
+ */
+ private final class AttachmentColumnDefination extends AbstractColumnDefinition<Message, Boolean> {
+
+ @Override
+ public Boolean getCellValue(Message rowValue) {
+ return rowValue.hasAttachment();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, Boolean cellValue) {
+ }
+
+ }
+
+ /**
+ * ColumnDefination which display the From
+ *
+ */
+ private final class FromColumnDefination extends AbstractColumnDefinition<Message, String> {
+
+ @Override
+ public String getCellValue(Message rowValue) {
+ return rowValue.getFrom();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, String cellValue) {
+ rowValue.setFrom(cellValue);
+ }
+
+ }
+
+ /**
+ * ColumnDefination which display the Subject
+ *
+ */
+ private final class SubjectColumnDefination extends AbstractColumnDefinition<Message, String> {
+
+ @Override
+ public String getCellValue(Message rowValue) {
+ return rowValue.getSubject();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, String cellValue) {
+ rowValue.setSubject(cellValue);
+
+ }
+
+ }
+
+ /**
+ * ColumnDefination which display the Date
+ *
+ */
+ private final class DateColumnDefination extends AbstractColumnDefinition<Message, Date> {
+
+ @Override
+ public Date getCellValue(Message rowValue) {
+ return rowValue.getReceivedDate();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, Date cellValue) {
+ rowValue.setReceivedDate(cellValue);
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableSelection()
+ */
+ public HasRowSelectionHandlers getDataTableSelection() {
+ return mailTable.getDataTable();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reloadData(org.apache.hupa.shared.data.User, org.apache.hupa.shared.data.IMAPFolder, java.lang.String)
+ */
+ public void reloadData(User user, IMAPFolder folder,String searchValue) {
+ this.user = user;
+ this.folder = folder;
+ this.searchValue = searchValue;
+ cTableModel.clearCache();
+ mailTable.getTableModel().setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
+ mailTable.reloadPage();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
+ */
+ public void reset() {
+ this.user = null;
+ this.folder = null;
+ pageBox.setSelectedIndex(0);
+ cTableModel.clearCache();
+ cTableModel.setRowCount(0);
+ mailTable.reloadPage();
+ options.reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableLoad()
+ */
+ public HasPageLoadHandlers getDataTableLoad() {
+ return mailTable;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
+ */
+ public Widget asWidget() {
+ return this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.presenter.client.Display#startProcessing()
+ */
+ public void startProcessing() {
+ // TODO Auto-generated method stub
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.presenter.client.Display#stopProcessing()
+ */
+ public void stopProcessing() {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick()
+ */
+ public HasClickHandlers getDeleteClick() {
+ return deleteMailButton;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
+ */
+ public HasClickHandlers getNewClick() {
+ return newMailButton;
+ }
+
+ /**
+ * Renderer which fill empty rows with a whitespace
+ *
+ * @param <E> RowType
+ */
+ private final class WhiteSpaceCellRenderer<E> implements CellRenderer<E, String> {
+
+ /*
+ * (non-Javadoc)
+ * @see com.google.gwt.gen2.table.client.CellRenderer#renderRowValue(java.lang.Object, com.google.gwt.gen2.table.client.ColumnDefinition, com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView)
+ */
+ public void renderRowValue(E rowValue,
+ ColumnDefinition<E, String> columnDef, AbstractCellView<E> view) {
+ String cellValue = columnDef.getCellValue(rowValue);
+ if (cellValue == null || cellValue.length() < 1) {
+ view.setHTML(" ");
+ } else {
+ view.setHTML(cellValue);
+ }
+ }
+
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
+ */
+ public Message getData(int rowIndex) {
+ return mailTable.getRowValue(rowIndex);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog()
+ */
+ public HasDialog getConfirmDeleteDialog() {
+ return confirmBox;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteDialogClick()
+ */
+ public HasClickHandlers getConfirmDeleteDialogClick() {
+ return confirmBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialog()
+ */
+ public HasDialog getConfirmDeleteAllDialog() {
+ return confirmDeleteAllBox;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDeleteAllDialogClick()
+ */
+ public HasClickHandlers getConfirmDeleteAllDialogClick() {
+ return confirmDeleteAllBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#deselectAllMessages()
+ */
+ public void deselectAllMessages() {
+ mailTable.getDataTable().deselectAllRows();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick()
+ */
+ public HasClickHandlers getSelectAllClick() {
+ return allLink;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectNoneClick()
+ */
+ public HasClickHandlers getSelectNoneClick() {
+ return noneLink;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages()
+ */
+ public void selectAllMessages() {
+ mailTable.getDataTable().selectAllRows();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectedMessages()
+ */
+ public ArrayList<Message> getSelectedMessages() {
+ return mailTable.getSelectedRows();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages(java.util.ArrayList)
+ */
+ public void removeMessages(ArrayList<Message> messages) {
+ mailTable.removeRows(messages);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#addTableListener(com.google.gwt.user.client.ui.TableListener)
+ */
+ public void addTableListener(TableListener listener) {
+ dataTable.addTableListener(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeTableListener(com.google.gwt.user.client.ui.TableListener)
+ */
+ public void removeTableListener(TableListener listener) {
+ dataTable.removeTableListener(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#setPostFetchMessageCount(int)
+ */
+ public void setPostFetchMessageCount(int count) {
+ cTableModel.setPostCachedRowCount(count);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
+ */
+ public void redraw() {
+ mailTable.reloadPage();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick()
+ */
+ public HasClickHandlers getDeleteAllClick() {
+ return deleteAllMailButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick()
+ */
+ public HasClickHandlers getMarkSeenClick() {
+ return markSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenClick()
+ */
+ public HasClickHandlers getMarkUnseenClick() {
+ return markUnSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable()
+ */
+ public HasEnable getDeleteEnable() {
+ return deleteMailButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable()
+ */
+ public HasEnable getMarkSeenEnable() {
+ return markSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkUnseenEnable()
+ */
+ public HasEnable getMarkUnseenEnable() {
+ return markUnSeenButton;
+ }
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java?rev=828980&r1=828979&r2=828980&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java Fri Oct 23 09:56:45 2009
@@ -54,166 +54,166 @@
public class IMAPMessagePresenter extends WidgetPresenter<IMAPMessagePresenter.Display>{
- public interface Display extends WidgetDisplay{
- public HasText getFrom();
+ public interface Display extends WidgetDisplay{
+ public HasText getFrom();
- public HasText getTo();
+ public HasText getTo();
- public HasText getCc();
+ public HasText getCc();
- public HasText getSubject();
- public Frame getShowRawMessageFrame();
- public HasDialog getShowRawMessageDialog();
- public HasHTML getContent();
- public HasClickHandlers getShowRawMessageClick();
- public HasClickHandlers getDeleteButtonClick();
- public HasClickHandlers getReplyButtonClick();
- public HasClickHandlers getReplyAllButtonClick();
- public HasClickHandlers getForwardButtonClick();
- public HasClickHandlers getBackButtonClick();
- public void setAttachments(List<MessageAttachment> attachements, String folder, long uid);
- }
-
- public static final Place PLACE = new Place("IMAPMessage");
- private MessageDetails messageDetails;
- private Message message;
- private CachingDispatchAsync dispatcher;
- private IMAPFolder folder;
- private User user;
- private boolean isBound = false;
-
- @Inject
- private IMAPMessagePresenter(IMAPMessagePresenter.Display display,EventBus bus, CachingDispatchAsync dispatcher) {
- super(display,bus);
- this.dispatcher = dispatcher;
- }
-
-
- public void bind(User user, IMAPFolder folder, Message message, MessageDetails messageDetails) {
- this.message = message;
- this.messageDetails = messageDetails;
- this.folder = folder;
- this.user = user;
- if (isBound == false) {
- bind();
- }
- refreshDisplay();
- }
-
- private void updateDisplay() {
- display.getFrom().setText(message.getFrom());
- display.getCc().setText(Util.arrayToString(message.getCc()));
- display.getTo().setText(Util.arrayToString(message.getTo()));
- display.getSubject().setText(message.getSubject());
- String con = messageDetails.getText();
- if (messageDetails.isHTML() == false) {
- con = Util.toHtml(con);
- }
- display.getContent().setHTML(con);
- display.setAttachments(messageDetails.getMessageAttachments(), folder.getFullName(),message.getUid());
- }
-
- @Override
- public Place getPlace() {
- return PLACE;
- }
-
- @Override
- protected void onBind() {
- registerHandler(display.getDeleteButtonClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- ArrayList<Long> uidList = new ArrayList<Long>();
- uidList.add(message.getUid());
- dispatcher.execute(new DeleteMessageByUid(folder, uidList), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {
- public void callback(DeleteMessageResult result) {
- eventBus.fireEvent(new LoadMessagesEvent(user,folder));
- }
- });
- }
-
- }));
-
- registerHandler(display.getForwardButtonClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- eventBus.fireEvent(new ForwardMessageEvent(user,folder,message, messageDetails));
- }
-
- }));
-
- registerHandler(display.getReplyButtonClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, false));
- }
-
- }));
-
- registerHandler(display.getReplyAllButtonClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, true));
- }
-
- }));
- registerHandler(display.getBackButtonClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- eventBus.fireEvent(new BackEvent());
- }
-
- }));
- registerHandler(display.getShowRawMessageClick().addClickHandler(new ClickHandler() {
-
- public void onClick(ClickEvent event) {
- String message_url = "/hupa/messageSourceServlet?uid=" + message.getUid() + "&folder=" + folder.getFullName();
- display.getShowRawMessageFrame().setUrl(message_url);
- display.getShowRawMessageDialog().center();
- }
-
- }));
- isBound = true;
- }
-
- @Override
- protected void onPlaceRequest(PlaceRequest request) {
- String from = request.getParameter("from", user.getName());
- display.getFrom().setText(from);
-
-
- String to = request.getParameter("to", null);
- if (to != null) {
- display.getTo().setText(to);
- }
-
- String cc = request.getParameter("cc", null);
- if (cc != null) {
- display.getCc().setText(cc);
- }
-
- String subject = request.getParameter("subject", null);
- if (subject != null) {
- display.getSubject().setText(subject);
- }
-
- String bodytext = request.getParameter("bodytext", null);
- if (bodytext != null) {
- display.getContent().setText(bodytext);
- }
- }
-
- @Override
- protected void onUnbind() {
- isBound = false;
- }
-
- public void refreshDisplay() {
- updateDisplay();
- }
-
- public void revealDisplay() {
- // TODO Auto-generated method stub
-
- }
+ public HasText getSubject();
+ public Frame getShowRawMessageFrame();
+ public HasDialog getShowRawMessageDialog();
+ public HasHTML getContent();
+ public HasClickHandlers getShowRawMessageClick();
+ public HasClickHandlers getDeleteButtonClick();
+ public HasClickHandlers getReplyButtonClick();
+ public HasClickHandlers getReplyAllButtonClick();
+ public HasClickHandlers getForwardButtonClick();
+ public HasClickHandlers getBackButtonClick();
+ public void setAttachments(List<MessageAttachment> attachements, String folder, long uid);
+ }
+
+ public static final Place PLACE = new Place("IMAPMessage");
+ private MessageDetails messageDetails;
+ private Message message;
+ private CachingDispatchAsync dispatcher;
+ private IMAPFolder folder;
+ private User user;
+ private boolean isBound = false;
+
+ @Inject
+ private IMAPMessagePresenter(IMAPMessagePresenter.Display display,EventBus bus, CachingDispatchAsync dispatcher) {
+ super(display,bus);
+ this.dispatcher = dispatcher;
+ }
+
+
+ public void bind(User user, IMAPFolder folder, Message message, MessageDetails messageDetails) {
+ this.message = message;
+ this.messageDetails = messageDetails;
+ this.folder = folder;
+ this.user = user;
+ if (isBound == false) {
+ bind();
+ }
+ refreshDisplay();
+ }
+
+ private void updateDisplay() {
+ display.getFrom().setText(message.getFrom());
+ display.getCc().setText(Util.arrayToString(message.getCc()));
+ display.getTo().setText(Util.arrayToString(message.getTo()));
+ display.getSubject().setText(message.getSubject());
+ String con = messageDetails.getText();
+ if (messageDetails.isHTML() == false) {
+ con = Util.toHtml(con);
+ }
+ display.getContent().setHTML(con);
+ display.setAttachments(messageDetails.getMessageAttachments(), folder.getFullName(),message.getUid());
+ }
+
+ @Override
+ public Place getPlace() {
+ return PLACE;
+ }
+
+ @Override
+ protected void onBind() {
+ registerHandler(display.getDeleteButtonClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ ArrayList<Long> uidList = new ArrayList<Long>();
+ uidList.add(message.getUid());
+ dispatcher.execute(new DeleteMessageByUid(folder, uidList), new HupaCallback<DeleteMessageResult>(dispatcher, eventBus) {
+ public void callback(DeleteMessageResult result) {
+ eventBus.fireEvent(new LoadMessagesEvent(user,folder));
+ }
+ });
+ }
+
+ }));
+
+ registerHandler(display.getForwardButtonClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ eventBus.fireEvent(new ForwardMessageEvent(user,folder,message, messageDetails));
+ }
+
+ }));
+
+ registerHandler(display.getReplyButtonClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, false));
+ }
+
+ }));
+
+ registerHandler(display.getReplyAllButtonClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, true));
+ }
+
+ }));
+ registerHandler(display.getBackButtonClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ eventBus.fireEvent(new BackEvent());
+ }
+
+ }));
+ registerHandler(display.getShowRawMessageClick().addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ String message_url = "/hupa/messageSourceServlet?uid=" + message.getUid() + "&folder=" + folder.getFullName();
+ display.getShowRawMessageFrame().setUrl(message_url);
+ display.getShowRawMessageDialog().center();
+ }
+
+ }));
+ isBound = true;
+ }
+
+ @Override
+ protected void onPlaceRequest(PlaceRequest request) {
+ String from = request.getParameter("from", user.getName());
+ display.getFrom().setText(from);
+
+
+ String to = request.getParameter("to", null);
+ if (to != null) {
+ display.getTo().setText(to);
+ }
+
+ String cc = request.getParameter("cc", null);
+ if (cc != null) {
+ display.getCc().setText(cc);
+ }
+
+ String subject = request.getParameter("subject", null);
+ if (subject != null) {
+ display.getSubject().setText(subject);
+ }
+
+ String bodytext = request.getParameter("bodytext", null);
+ if (bodytext != null) {
+ display.getContent().setText(bodytext);
+ }
+ }
+
+ @Override
+ protected void onUnbind() {
+ isBound = false;
+ }
+
+ public void refreshDisplay() {
+ updateDisplay();
+ }
+
+ public void revealDisplay() {
+ // TODO Auto-generated method stub
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org