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("&nbsp");
-				}
-				
-			}
-			
-		});
-		
-		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("&nbsp");
-			} 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("&nbsp");
+                }
+                
+            }
+            
+        });
+        
+        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("&nbsp");
+            } 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