Author: dongxu
Date: Thu Sep 12 04:41:05 2013
New Revision: 1522376

URL: http://svn.apache.org/r1522376
Log:
try to make messages list better for user experience

Modified:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/MessageListActivity.java
 Thu Sep 12 04:41:05 2013
@@ -320,6 +320,7 @@ public class MessageListActivity extends
        public void start(AcceptsOneWidget container, final EventBus eventBus) {
                container.setWidget(display.asWidget());
                bindTo(eventBus);
+               display.refresh();
 //             
this.registerHandler(display.getGrid().addCellPreviewHandler(new 
Handler<Message>() {
 //                     @Override
 //                     public void onCellPreview(final 
CellPreviewEvent<Message> event) {

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/ToolBarActivity.java
 Thu Sep 12 04:41:05 2013
@@ -34,6 +34,7 @@ import org.apache.hupa.client.place.Fold
 import org.apache.hupa.client.HupaController;
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> fixed issue#61; add loading to mark, unmark.
 =======
 import org.apache.hupa.client.place.ComposePlace;
@@ -42,6 +43,9 @@ import org.apache.hupa.client.place.Mail
 >>>>>>> fixed issue#59, coupled with fixing some UI refreshment issues in 
 >>>>>>> toolsbar
 =======
 >>>>>>> fixed issue#57 - really disable the tools in toolbar
+=======
+import org.apache.hupa.client.place.FolderPlace;
+>>>>>>> try to make messages list better for user experience
 import org.apache.hupa.client.rf.SetFlagRequest;
 import org.apache.hupa.client.ui.MessagesCellTable;
 import org.apache.hupa.client.ui.ToolBarView.Parameters;
@@ -184,6 +188,7 @@ import org.apache.hupa.shared.domain.Gen
 import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
 import org.apache.hupa.shared.domain.SetFlagAction;
+import org.apache.hupa.shared.events.RefreshUnreadEvent;
 
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -200,7 +205,6 @@ public class ToolBarActivity extends App
        @Inject private Displayable display;
        @Inject private MessagesCellTable table;
        @Inject private MessageListActivity.Displayable messagesDisplay;
-       @Inject private FolderListActivity.Displayable folderListDisplay;
        @Inject private HupaController hupaController;
        private String folderName;
 
@@ -208,6 +212,9 @@ public class ToolBarActivity extends App
        public void start(AcceptsOneWidget container, EventBus eventBus) {
                container.setWidget(display.asWidget());
                bindTo(eventBus);
+               if(pc.getWhere() instanceof FolderPlace){
+                       display.enableAllTools(false);
+               }
        }
 
        public ToolBarActivity with(String folder) {
@@ -242,11 +249,11 @@ public class ToolBarActivity extends App
                                display.getPopup().hide();
                        }
                }));
-               registerHandler(display.getDeleteReg());
-               registerHandler(display.getMarkReg());
-               registerHandler(display.getReplyReg());
-               registerHandler(display.getReplyAllReg());
-               registerHandler(display.getForwardReg());
+//             registerHandler(display.getDeleteReg());
+//             registerHandler(display.getMarkReg());
+//             registerHandler(display.getReplyReg());
+//             registerHandler(display.getReplyAllReg());
+//             registerHandler(display.getForwardReg());
        }
 
        protected void toMarkRead(boolean read) {
@@ -268,7 +275,7 @@ public class ToolBarActivity extends App
                req.set(action).fire(new Receiver<GenericResult>() {
                        @Override
                        public void onSuccess(GenericResult response) {
-                               folderListDisplay.refresh();
+                               eventBus.fireEvent(new RefreshUnreadEvent());
                                messagesDisplay.refresh();
                                hupaController.hideTopLoading();
                        }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/FoldersTreeViewModel.java
 Thu Sep 12 04:41:05 2013
@@ -28,12 +28,12 @@ import org.apache.hupa.client.activity.T
 import org.apache.hupa.client.place.FolderPlace;
 import org.apache.hupa.client.rf.HupaRequestFactory;
 import org.apache.hupa.shared.domain.ImapFolder;
+import org.apache.hupa.shared.events.RefreshUnreadEvent;
+import org.apache.hupa.shared.events.RefreshUnreadEventHandler;
 
 import com.google.gwt.cell.client.AbstractCell;
-import com.google.gwt.cell.client.ValueUpdater;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.place.shared.PlaceController;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.view.client.AsyncDataProvider;
@@ -56,7 +56,7 @@ public class FoldersTreeViewModel implem
        @Inject private MessageListActivity.Displayable msgListDisplay;
 
        @Inject
-       public FoldersTreeViewModel() {
+       public FoldersTreeViewModel(final EventBus eventBus) {
                selectionModel.addSelectionChangeHandler(new 
SelectionChangeEvent.Handler() {
                        @SuppressWarnings("unchecked")
                        @Override
@@ -68,6 +68,13 @@ public class FoldersTreeViewModel implem
                                msgListDisplay.refresh();
                        }
                });
+
+               eventBus.addHandler(RefreshUnreadEvent.TYPE, new 
RefreshUnreadEventHandler() {
+                       @Override
+                       public void onRefreshEvent(RefreshUnreadEvent event) {
+                               refresh();
+                       }
+               });
        }
 
        private final SingleSelectionModel<ImapFolder> selectionModel = new 
SingleSelectionModel<ImapFolder>(

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageListView.java
 Thu Sep 12 04:41:05 2013
@@ -101,6 +101,7 @@ import com.google.gwt.user.client.ui.Com
 import com.google.gwt.user.client.ui.SimpleLayoutPanel;
 import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.view.client.MultiSelectionModel;
+import com.google.gwt.view.client.NoSelectionModel;
 import com.google.inject.Inject;
 
 public class MessageListView extends Composite implements 
MessageListActivity.Displayable {
@@ -260,6 +261,8 @@ public class MessageListView extends Com
                List<Long> selecteds = new ArrayList<Long>();
                MultiSelectionModel<? super Message> selectionModel = 
(MultiSelectionModel<? super Message>) grid
                                .getSelectionModel();
+               NoSelectionModel<? super Message> noSelectionModel = 
(NoSelectionModel<? super Message>)grid.getSelectionModel();
+               
                selectionModel.getSelectedSet();
                for (Message msg : getSelectedMessages()) {
                        selecteds.add(msg.getUid());

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
 Thu Sep 12 04:41:05 2013
@@ -519,6 +519,7 @@ import org.apache.hupa.shared.domain.Get
 import org.apache.hupa.shared.domain.GetMessageDetailsResult;
 import org.apache.hupa.shared.domain.ImapFolder;
 import org.apache.hupa.shared.domain.Message;
+import org.apache.hupa.shared.events.RefreshUnreadEvent;
 
 import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.cell.client.DateCell;
@@ -528,6 +529,8 @@ import com.google.gwt.cell.client.TextCe
 import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.place.shared.Place;
 import com.google.gwt.place.shared.PlaceController;
@@ -550,7 +553,6 @@ import com.google.web.bindery.requestfac
 public class MessagesCellTable extends DataGrid<Message> {
 
        public static final int PAGE_SIZE = 25;
-       @Inject ToolBarActivity.Displayable toolBarDisplay;
 
        private HupaImageBundle imageBundle;
        CheckboxColumn checkboxCol = new CheckboxColumn();
@@ -643,15 +645,19 @@ public class MessagesCellTable extends D
        private String folderName;
        private String searchValue;
        @Inject protected HupaController hc;
+       @Inject EventBus eventBus;
+
+//     private HandlerRegistration selectionManagerReg = 
addCellPreviewHandler(DefaultSelectionEventManager
+//                     .<Message> createCheckboxManager(0));
+
        @Inject
-       public MessagesCellTable(final HupaImageBundle imageBundle, final 
HupaConstants constants, 
-                       final PlaceController pc,
-                       final HupaRequestFactory rf) {
+       public MessagesCellTable(final HupaImageBundle imageBundle, final 
HupaConstants constants,
+                       final PlaceController pc, final HupaRequestFactory rf) {
                super(PAGE_SIZE, Resources.INSTANCE);
                this.pc = pc;
                this.rf = rf;
                this.imageBundle = imageBundle;
-               
+
                CheckboxCell headerCheckbox = new CheckboxCell();
                ImageResourceCell headerAttached = new ImageResourceCell();
                Header<Boolean> header = new Header<Boolean>(headerCheckbox) {
@@ -691,7 +697,8 @@ public class MessagesCellTable extends D
                // redraw();
                setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
                setAutoHeaderRefreshDisabled(true);
-//             setSelectionModel(selectionModel, 
DefaultSelectionEventManager.<Message> createCheckboxManager(0));
+               // setSelectionModel(selectionModel,
+               // DefaultSelectionEventManager.<Message> 
createCheckboxManager(0));
 
                setSelectionModel(noSelectionModel, 
DefaultSelectionEventManager.<Message> createBlacklistManager(0));
 
@@ -711,10 +718,14 @@ public class MessagesCellTable extends D
                                        public void 
onSuccess(GetMessageDetailsResult response) {
                                                // 
display.getGrid().getSelectionModel().setSelected(event.getValue(),
                                                // true);
-//                                             
noSelectionModel.setSelected(message, true);
+                                               // 
noSelectionModel.setSelected(message, true);
                                                toolBar.enableAllTools(true);
+                                               ToolBarView.Parameters p = new 
ToolBarView.Parameters(null, folderName, message, response
+                                                               
.getMessageDetails());
+                                               toolBar.setParameters(p);
                                                MessagePlace place = new 
MessagePlace(folderName + AbstractPlace.SPLITTER + message.getUid());
                                                refresh();
+                                               eventBus.fireEvent(new 
RefreshUnreadEvent());
                                                pc.goTo(place);
                                        }
 
@@ -724,7 +735,7 @@ public class MessagesCellTable extends D
                                                        // 
log.log(Level.SEVERE, error.getMessage());
                                                        // TODO write the error 
message to
                                                        // status bar.
-                                                       // 
toolBar.enableAllTools(false);
+                                                       
toolBar.enableAllTools(false);
                                                        throw new 
RuntimeException(error.getMessage());
                                                }
                                        }
@@ -740,16 +751,16 @@ public class MessagesCellTable extends D
                refresh();
        }
 
-
        private String parseFolderName(final PlaceController pc) {
                Place place = pc.getWhere();
-               if(place instanceof FolderPlace){
-                       folderName= ((FolderPlace)place).getToken();
-               }else if (place instanceof MessagePlace){
-                       folderName = 
((MessagePlace)place).getTokenWrapper().getFolder();
+               if (place instanceof FolderPlace) {
+                       folderName = ((FolderPlace) place).getToken();
+               } else if (place instanceof MessagePlace) {
+                       folderName = ((MessagePlace) 
place).getTokenWrapper().getFolder();
                }
                return folderName;
        }
+
        Message message; // the object selected by selectionModel
 
        public String getMessageStyle(Message row) {
@@ -780,10 +791,10 @@ public class MessagesCellTable extends D
                                        selectionModel.setSelected(object, 
value);
                                        int size = 
selectionModel.getSelectedSet().size();
                                        if (size >= 1) {
-                                               
toolBarDisplay.enableDealingTools(true);
-                                               
toolBarDisplay.enableSendingTools(false);
+                                               
toolBar.enableDealingTools(true);
+                                               
toolBar.enableSendingTools(false);
                                        } else {
-                                               
toolBarDisplay.enableAllTools(false);
+                                               toolBar.enableAllTools(false);
                                        }
                                }
                        });

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java?rev=1522376&r1=1522375&r2=1522376&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/ToolBarView.java
 Thu Sep 12 04:41:05 2013
@@ -557,9 +557,12 @@ public class ToolBarView extends Composi
                replyAllReg = replyAll.addClickHandler(replyAllHandler);
                forwardReg = forward.addClickHandler(forwardHandler);
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> fixed issue#57 - really disable the tools in toolbar
 =======
                enableAllTools(false);
+=======
+>>>>>>> try to make messages list better for user experience
        }
 
        @UiHandler("compose")
@@ -683,6 +686,9 @@ public class ToolBarView extends Composi
                        replyReg.removeHandler();
                        replyAllReg.removeHandler();
                        forwardReg.removeHandler();     
+                       replyReg = null;
+                       replyAllReg = null;
+                       forwardReg = null;
                }
        }
 
@@ -692,7 +698,12 @@ public class ToolBarView extends Composi
                forwardGroup.removeStyleName(style.disabledButton());
                replyAllTip.removeStyleName(style.disabledButton());
                forwardTip.removeStyleName(style.disabledButton());
-               
+
+               if(replyReg != null){
+                       replyReg.removeHandler();
+                       replyAllReg.removeHandler();
+                       forwardReg.removeHandler();     
+               }
                replyReg = reply.addClickHandler(replyHandler);
                replyAllReg = replyAll.addClickHandler(replyAllHandler);
                forwardReg = forward.addClickHandler(forwardHandler);
@@ -708,6 +719,8 @@ public class ToolBarView extends Composi
                if(deleteReg != null){
                        deleteReg.removeHandler();
                        markReg.removeHandler();
+                       deleteReg = null;
+                       markReg = null;
                }
        }
 
@@ -718,9 +731,17 @@ public class ToolBarView extends Composi
 =======
                mark.removeStyleName(style.disabledButton());
 <<<<<<< HEAD
+<<<<<<< HEAD
 >>>>>>> 1.do not select the message which is being focused on. 2.create the 
 >>>>>>> mark popup menu
 =======
                
+=======
+
+               if(markReg != null){
+                       deleteReg.removeHandler();
+                       markReg.removeHandler();
+               }
+>>>>>>> try to make messages list better for user experience
                markReg = mark.addClickHandler(markHandler);
                deleteReg = delete.addClickHandler(deleteHandler);
 >>>>>>> fixed issue#57 - really disable the tools in toolbar



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to