Author: norman
Date: Sat Jul  4 14:09:45 2009
New Revision: 791130

URL: http://svn.apache.org/viewvc?rev=791130&view=rev
Log:
First version of supporting search operations

Modified:
    labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java
    labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties
    labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java
    
labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java
    labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java
    
labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java
    labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java
    labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java

Modified: labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java Sat Jul  
4 14:09:45 2009
@@ -60,4 +60,6 @@
        
        public String loading();
        public String loginInvalid();
+
+       public String searchButton();
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties Sat 
Jul  4 14:09:45 2009
@@ -18,4 +18,5 @@
 mailTableSubject=Subject
 mailTableDate=Date
 loading=Loading....
-loginInvalid=Unable to login, please check username and password
\ No newline at end of file
+loginInvalid=Unable to login, please check username and password
+searchButton=Search in message
\ No newline at end of file

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java 
Sat Jul  4 14:09:45 2009
@@ -42,7 +42,7 @@
        public void fetchMessages(final Event<MessageListModelData,HupaAction> 
event) {
            MessageListModelData data = event.getValue();
            
-               
service.getMessages(data.getUser(),data.getFolder(),data.getStart(),data.getEnd(),
+               
service.getMessages(data.getUser(),data.getFolder(),data.getStart(),data.getEnd(),data.getSearchString(),
                                new AsyncCallback<ResultList<IMAPMessage>>() {
 
                                        public void onFailure(Throwable caught) 
{

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java 
Sat Jul  4 14:09:45 2009
@@ -28,12 +28,18 @@
     private IMAPFolder folder;
     private int start;
     private int end;
+       private String searchString;
 
     public MessageListModelData(IMAPUser user,IMAPFolder folder, int start, 
int end) {
+       this(user,folder,start,end,null);
+    }
+    
+    public MessageListModelData(IMAPUser user,IMAPFolder folder, int start, 
int end,String searchString) {
         this.user = user;
         this.folder = folder;
         this.start =start;
         this.end = end;
+        this.searchString = searchString;
     }
     
     public IMAPUser getUser () {
@@ -52,4 +58,7 @@
         return end;
     }
 
+    public String getSearchString() {
+       return searchString;
+    }
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java 
Sat Jul  4 14:09:45 2009
@@ -38,7 +38,7 @@
        public List<IMAPFolder> getFolders(IMAPUser user)
                        throws IMAPServiceException;
 
-       public ResultList<IMAPMessage> getMessages(IMAPUser user,IMAPFolder 
folder, int start, int end) throws IMAPServiceException;
+       public ResultList<IMAPMessage> getMessages(IMAPUser user,IMAPFolder 
folder, int start, int end, String searchString) throws IMAPServiceException;
 
        public IMAPMessage exposeMessage(IMAPUser user,IMAPFolder 
folder,IMAPMessage message) throws IMAPServiceException;
 

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java 
Sat Jul  4 14:09:45 2009
@@ -37,7 +37,7 @@
                        AsyncCallback<List<IMAPFolder>> callback);
 
        public void getMessages(IMAPUser user, IMAPFolder folder, int start,
-                       int end, AsyncCallback<ResultList<IMAPMessage>> 
callback);
+                       int end,String searchString, 
AsyncCallback<ResultList<IMAPMessage>> callback);
 
        public void exposeMessage(IMAPUser user, IMAPFolder folder, IMAPMessage 
message, AsyncCallback<IMAPMessage> callback);
 

Modified: labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java Sat Jul  
4 14:09:45 2009
@@ -36,13 +36,13 @@
 import org.apache.hupa.client.data.ResultList;
 import org.apache.hupa.client.data.IMAPMessage.IMAPFlag;
 import org.apache.hupa.client.model.FolderModel;
+import org.apache.hupa.client.model.LoginModel;
 import org.apache.hupa.client.model.LogoutModel;
 import org.apache.hupa.client.model.LogoutModelData;
 import org.apache.hupa.client.model.MessageListModel;
 import org.apache.hupa.client.model.MessageListModelData;
 import org.apache.hupa.client.model.MessageModel;
 import org.apache.hupa.client.model.MessageModelData;
-import org.apache.hupa.client.model.LoginModel;
 import org.apache.hupa.client.model.ModelReturnData;
 import org.apache.hupa.client.widgets.IMAPMessageWidget;
 import org.cobogw.gwt.user.client.ui.Button;
@@ -61,6 +61,8 @@
 import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
+import com.google.gwt.user.client.ui.SuggestBox;
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 import com.google.gwt.user.client.ui.VerticalPanel;
@@ -76,7 +78,7 @@
        private Tree folderTree = new Tree(tImages, true);
        private HupaConstants constants = GWT.create(HupaConstants.class);
        private RoundedPanel west;
-       private HorizontalPanel north;
+       private VerticalPanel north;
        private RoundedPanel center;
        private DateTimeFormat dFormat = 
DateTimeFormat.getShortDateTimeFormat();
        
@@ -89,6 +91,8 @@
        private IMAPMessageWidget msgWidget = new IMAPMessageWidget();
        private VerticalPanel centerVP = new VerticalPanel();
        private Maskable masker = new LoadingMasker();
+       private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" 
,@");  
+       private SuggestBox searchBox = new SuggestBox(oracle);
        private Cell cell;
        private IMAPUser user;
 
@@ -175,18 +179,8 @@
                        public void onClick(ClickEvent event) {
 
                                cell = mailTable.getCellForEvent(event);
-                               if (cell.getRowIndex() > 0) {
-                               
-                                       if (cell.getCellIndex() == 0) {
-
-                                               /*
-                                               
mailTable.getRowFormatter().setStyleName(
-                                                               
cell.getRowIndex(),
-                                                               
"hupa-Mailtable-row-selected");
-                                               */
-                                       } else {
-                                               controller.call(new 
Event<MessageModelData, HupaAction>(HupaAction.EXPOSE_MESSAGE,new 
MessageModelData(user,folder,getSelectedMessage()),masker));
-                                       }
+                               if (cell.getRowIndex() > 0 && 
cell.getCellIndex() != 0) {
+                                       controller.call(new 
Event<MessageModelData, HupaAction>(HupaAction.EXPOSE_MESSAGE,new 
MessageModelData(user,folder,getSelectedMessage()),masker));
                                }
 
                        }
@@ -199,13 +193,15 @@
        }
 
        private void createNorth() {
-               north = new HorizontalPanel();
-               north.setSpacing(5);
-               north.setStyleName("hupa-Northpanel");
-               north.setHorizontalAlignment(HorizontalPanel.ALIGN_LEFT);
-
+               north = new VerticalPanel();
                north.setWidth("100%");
-               north.add(new Label(constants.productName()));
+               HorizontalPanel northTop = new HorizontalPanel();
+               northTop.setSpacing(5);
+               northTop.setStyleName("hupa-Northpanel");
+               northTop.setHorizontalAlignment(HorizontalPanel.ALIGN_LEFT);
+
+               northTop.setWidth("100%");
+               northTop.add(new Label(constants.productName()));
 
                Button logoutButton = new Button(constants.logoutButton());
                logoutButton.addClickHandler(new ClickHandler() {
@@ -215,9 +211,35 @@
                        }
                        
                });
-               north.add(logoutButton);
-               north.setCellHorizontalAlignment(logoutButton,
+               northTop.add(logoutButton);
+               northTop.setCellHorizontalAlignment(logoutButton,
                                VerticalPanel.ALIGN_RIGHT);
+               north.add(northTop);
+               
+               HorizontalPanel hPanel = new HorizontalPanel();
+               hPanel.setSpacing(5);
+               hPanel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
+               
+               searchBox.setWidth("150px");
+               searchBox.setLimit(20);
+               hPanel.add(searchBox);
+               
+               final Button searchButton = new 
Button(constants.searchButton());
+               searchButton.addClickHandler(new ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               controller.call(new Event<MessageListModelData, 
HupaAction>(
+                                               HupaAction.FETCH_MESSAGES,
+                                               new MessageListModelData(user, 
folder,
+                                                               0, 
20,searchBox.getValue()), masker));
+                               searchBox.setValue("");
+                       }
+                       
+               });
+               hPanel.add(searchButton);
+               
+               north.add(hPanel);
+               
        }
 
        /**
@@ -266,6 +288,7 @@
 
                        });
                        IMAPMessage message = result.get(i);
+                       fillOracle(message);
                        mMap.put(rows, message);
                        mailTable.setWidget(rows, 0, mCheckbox);
                        mailTable.setText(rows, 1, 
truncate(message.getIMAPHeader()
@@ -424,6 +447,11 @@
                center.clear();
                center.add(centerVP);
        }
+       
+       private void fillOracle(IMAPMessage msg) {
+               oracle.add(msg.getIMAPHeader().getFrom());
+               oracle.add(msg.getIMAPHeader().getSubject());
+       }
 
        public IMAPMessage getSelectedMessage() {
                return mMap.get(cell.getRowIndex());

Modified: labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java?rev=791130&r1=791129&r2=791130&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java Sat Jul 
 4 14:09:45 2009
@@ -101,7 +101,7 @@
 
        }
 
-       public ResultList<IMAPMessage> getMessages(IMAPUser user,IMAPFolder 
folder, int start, int end) throws IMAPServiceException {
+       public ResultList<IMAPMessage> getMessages(IMAPUser user,IMAPFolder 
folder, int start, int end,String searchString) throws IMAPServiceException {
                ResultList<IMAPMessage> mList = new ResultList<IMAPMessage>();
 
                IMAPProtocol proto = null;
@@ -119,8 +119,17 @@
                        if (end > exists) {
                                end = 0;
                        }
-
-                       SequenceSet sSet = new SequenceSet(exists - end, exists 
- start);
+                       SequenceSet sSet;
+                       if (searchString == null) {
+                               sSet = new SequenceSet(exists - end, exists - 
start);
+                       } else {
+                               Integer[] matchedIds = proto.search(new 
SearchKey[]{new SearchKey(SearchKey.BODY,searchString), new 
SearchKey(SearchKey.SUBJECT,searchString), new 
SearchKey(SearchKey.FROM,searchString)});
+                               if (matchedIds == null || matchedIds.length == 
0) {
+                                       return mList;
+                               }
+                               sSet = new SequenceSet(matchedIds);
+                       }
+                       
                        org.columba.ristretto.imap.IMAPHeader[] headers = proto
                                        .fetchHeader(sSet);
                        IMAPFlags[] flags = proto.fetchFlags(sSet);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to