Author: lucaa
Date: 2007-12-18 12:07:24 +0100 (Tue, 18 Dec 2007)
New Revision: 6399

Modified:
   
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/Config.java
   
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/articles/ArticleListWidget.java
   
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/menu/NavigationBarWidget.java
   
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/public/Watch.css
Log:
XWATCH-37, XWATCH-89: Added the buttons at the end of the articles list and 
displayed them only when they are necessary.


Modified: 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/Config.java
===================================================================
--- 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/Config.java
   2007-12-18 10:53:55 UTC (rev 6398)
+++ 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/Config.java
   2007-12-18 11:07:24 UTC (rev 6399)
@@ -37,6 +37,7 @@
     private List keywords;
     private Map groups;
     private List articles;
+    private boolean lastPage; 
 
     public Config() {
     }
@@ -68,6 +69,7 @@
         keywords = new ArrayList();
         groups = new HashMap();
         articles = new ArrayList();
+        this.lastPage = false;
     }
 
     /**
@@ -90,7 +92,9 @@
     
     public void refreshArticleList(final AsyncCallback cb) {
         FilterStatus fstatus = watch.getFilterStatus();
-        watch.getDataManager().getArticles(fstatus, watch.getArticleNbParam(), 
fstatus.getStart(), new AsyncCallback() {
+        //hack to test the existance of next articles: ask for one more: 
+        //if we get it, then we have more articles
+        watch.getDataManager().getArticles(fstatus, watch.getArticleNbParam() 
+ 1, fstatus.getStart(), new AsyncCallback() {
             public void onFailure(Throwable caught) {
                 if (cb != null) {
                     cb.onFailure(caught);
@@ -98,8 +102,20 @@
             }
 
             public void onSuccess(Object result) {
+                //test the size of the list
+                List resultList = (List)result;
+                if (resultList.size() == (watch.getArticleNbParam() + 1)) {
+                    //we have next
+                    lastPage = false;
+                } else {
+                    lastPage = true;
+                }
+                //remove the last element if fetched for next
+                if (!lastPage) {
+                    resultList.remove(resultList.size() - 1);
+                }
                 //update the article list
-                updateArticleList((List)result);
+                updateArticleList(resultList);
                 if (cb != null) {
                     cb.onSuccess(result);
                 }
@@ -205,4 +221,9 @@
         return articles;
     }
 
+    public boolean isLastPage()
+    {
+        return lastPage;
+    }
+
 }

Modified: 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/articles/ArticleListWidget.java
===================================================================
--- 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/articles/ArticleListWidget.java
    2007-12-18 10:53:55 UTC (rev 6398)
+++ 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/articles/ArticleListWidget.java
    2007-12-18 11:07:24 UTC (rev 6399)
@@ -27,13 +27,11 @@
 import com.xpn.xwiki.watch.client.ui.dialog.CommentAddDialog;
 import com.xpn.xwiki.watch.client.ui.dialog.EditTagsDialog;
 import com.xpn.xwiki.watch.client.Watch;
-import com.xpn.xwiki.watch.client.FilterStatus;
 import com.xpn.xwiki.watch.client.Constants;
 import com.xpn.xwiki.watch.client.Feed;
 import com.xpn.xwiki.watch.client.data.FeedArticle;
 import com.xpn.xwiki.watch.client.data.FeedArticleComment;
 import com.xpn.xwiki.gwt.api.client.app.XWikiAsyncCallback;
-import com.xpn.xwiki.gwt.api.client.Document;
 import com.xpn.xwiki.gwt.api.client.dialog.Dialog;
 import com.google.gwt.user.client.ui.*;
 import com.google.gwt.user.client.Window;
@@ -65,6 +63,9 @@
     public void refreshData() {
         List articlesList = watch.getConfig().getArticles();
         showArticles(articlesList);
+        //and refresh the contained nav-bar widgets
+        watch.getUserInterface().refreshData("navbar");
+        watch.getUserInterface().refreshData("navbar-bottom");
         resizeWindow();        
     }
 
@@ -84,6 +85,13 @@
             FeedArticle article = (FeedArticle)feedentries.get(i);
             showArticle(article);
         }
+        //put the navbar at the bottom as well
+        panel.add(new NavigationBarWidget(watch) {
+            public String getName()
+            {
+                return "navbar-bottom";
+            }
+        });
     }
 
     protected Widget getTitlePanel(FeedArticle article, Widget articlePanel, 
Widget contentZonePanel) {

Modified: 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/menu/NavigationBarWidget.java
===================================================================
--- 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/menu/NavigationBarWidget.java
      2007-12-18 10:53:55 UTC (rev 6398)
+++ 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/client/ui/menu/NavigationBarWidget.java
      2007-12-18 11:07:24 UTC (rev 6399)
@@ -63,15 +63,24 @@
                 watch.refreshOnNext();
             }
         });
-        previous.addStyleName(watch.getStyleName("navbar","next"));
+        next.addStyleName(watch.getStyleName("navbar","next"));
         panel.add(previous);
         panel.add(nbarticles);
         panel.add(next);
     }
 
     public void refreshData() {
-        
previous.removeStyleName(watch.getStyleName("navbar","previous-active"));
-        next.addStyleName(watch.getStyleName("navbar","next-active"));
+        if (watch.getFilterStatus().getStart() != 0) {
+            this.previous.addStyleName(watch.getStyleName("navbar", 
"previous-active"));
+        } else {
+            this.previous.removeStyleName(watch.getStyleName("navbar", 
"previous-active"));
+        }
+        //get the next
+        if (watch.getConfig().isLastPage()) {
+            this.next.removeStyleName(watch.getStyleName("navbar", 
"next-active"));
+        } else {
+            this.next.addStyleName(watch.getStyleName("navbar", 
"next-active"));
+        }
     }
 
     private void setPreviousActive(boolean active) {

Modified: 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/public/Watch.css
===================================================================
--- 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/public/Watch.css
     2007-12-18 10:53:55 UTC (rev 6398)
+++ 
xwiki-products/xwiki-watch/trunk/web/src/main/java/com/xpn/xwiki/watch/public/Watch.css
     2007-12-18 11:07:24 UTC (rev 6399)
@@ -247,23 +247,32 @@
 
 
 
-.watch-navbar {
+.watch-navbar, .watch-navbar-bottom {
  clear: both;
  padding: 8px 0 5px 0;
   text-align: center;
 
 }
-.watch-navbar div{
+.watch-navbar div, .watch-navbar-bottom div {
   display: inline;
   margin: 5px 20px;
 }
-.watch-navbar div a{
+.watch-navbar div a, .watch-navbar-bottom div a{
 text-decoration: none;
 text-transform: uppercase;
 color: #000;
 font-weight: bold;
 }
 
+.watch-navbar div.watch-navbar-previous, .watch-navbar div.watch-navbar-next, 
+.watch-navbar-bottom div.watch-navbar-previous, .watch-navbar-bottom 
div.watch-navbar-next {
+  display:none;
+}
+.watch-navbar div.watch-navbar-previous-active, .watch-navbar 
div.watch-navbar-next-active,
+.watch-navbar-bottom div.watch-navbar-previous-active, .watch-navbar-bottom 
div.watch-navbar-next-active {
+  display:inline;
+}
+
 .watch-articlelist {
     float: left;
 }

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to