uidate: fix newsfeed images 73/17773/3
Simon Marchetto [Fri, 5 Feb 2016 15:17:30 +0000 (16:17 +0100)]
Change-Id: I3402ba3a16492ff0366463d23d246f41b7b97fc8

scilab/modules/ui_data/etc/newsfeed.css
scilab/modules/ui_data/etc/newsfeed.xml
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/newsfeed/News.java
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/newsfeed/NewsFeedWidget.java
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/newsfeed/NewsFetcher.java
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/newsfeed/NewsMediaContent.java [new file with mode: 0644]

index c0d0aa6..dbdd228 100644 (file)
@@ -1,16 +1,3 @@
-#navigation {
-    margin-bottom: 10px
-}
-
-#news_title {
-    font-weight: bold;
-    margin-bottom: 10px
-}
-
-#news_date {
-    font-weight: bold
-}
-
 #news_link {
     margin-top: 10px
 }
index 10ac65b..98e2c69 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <newsfeed>
    <!-- RSS Feed URL -->
-   <url>http://scilab.io/category/newsfeed/feed</url>
+   <url>http://news.scilab.io/feed</url>
    <!-- automatic news change interval time (in ms), set to -1 to disable -->
    <newsChangeTimeInterval>-1</newsChangeTimeInterval>
    <!-- periodic feed update interval time (in ms), set to -1 to disable -->
index 16f6d92..33ad377 100644 (file)
@@ -26,13 +26,15 @@ public class News {
     private Date date;
     private String description;
     private String content;
+    private NewsMediaContent mediaContent;
     private String link;
 
-    public News(String title, Date date, String description, String content, String link) {
+    public News(String title, Date date, String description, String content, NewsMediaContent mediaContent, String link) {
         this.title = title;
         this.date = date;
         this.description = description;
         this.content = content;
+        this.mediaContent = mediaContent;
         this.link = link;
     }
 
@@ -52,6 +54,10 @@ public class News {
         return content;
     }
 
+    NewsMediaContent getMediaContent() {
+        return mediaContent;
+    }
+
     String getLink() {
         return link;
     }
index 538645c..b9c6e75 100644 (file)
@@ -56,6 +56,7 @@ public class NewsFeedWidget extends JPanel implements NewsFeedEventListener, Hyp
     private static final String NEWS_DATE_HTML_ID = "news_date";\r
     private static final String NEWS_CONTENT_HTML_ID = "news_content";\r
     private static final String NEWS_LINK_HTML_ID = "news_link";\r
+    private static final String NEWS_MEDIA_CONTENT_HTML_ID = "news_media_content";\r
     private static final String NEWS_DESCRIPTION_HTML_ID = "news_description";\r
 \r
     private final NewsFeedController newsFeedController;\r
@@ -145,6 +146,12 @@ public class NewsFeedWidget extends JPanel implements NewsFeedEventListener, Hyp
             newsHtmlBuilder.append(getDivHtml(news.getDescription(), NEWS_DESCRIPTION_HTML_ID));\r
         }\r
 \r
+        // Add media content (image) if exist\r
+        NewsMediaContent mediaContent = news.getMediaContent();\r
+        if (mediaContent != null) {\r
+            newsHtmlBuilder.append(getDivHtml(getImageHtml(mediaContent.getURL(), mediaContent.getWidth(), mediaContent.getHeight()), NEWS_MEDIA_CONTENT_HTML_ID));\r
+        }\r
+\r
         // Add news link if exist\r
         if (news.getLink() != null) {\r
             newsHtmlBuilder.append(getDivHtml(getLinkHtml(news.getLink(), news.getLink()), NEWS_LINK_HTML_ID));\r
@@ -162,6 +169,11 @@ public class NewsFeedWidget extends JPanel implements NewsFeedEventListener, Hyp
         }, getHTML(newsHtmlBuilder));\r
     }\r
 \r
+    private String getImageHtml(String url, String width, String height) {\r
+        // Cannot setup border with CSS, limitation of CSS support of HTMLEditorKit\r
+        return String.format("<img src='%s' border='0' width='%s', height='%s'/>", url, width, height);\r
+    }\r
+\r
     private String getLinkHtml(String url, String description) {\r
         return String.format("<a href='%s'>%s</a>", url, description);\r
     }\r
index 9d09079..21653c1 100644 (file)
@@ -75,23 +75,38 @@ public class NewsFetcher {
             Date date = formatter.parse(dateStr);\r
             String description = getItemValue(item, "description");\r
             String content = getItemValue(item, "content:encoded");\r
+            // media content\r
+            NewsMediaContent mediaContent = null;\r
+            Node mediaContentNode = getItemNode(item, "media:content");\r
+            if (mediaContentNode != null) {\r
+                String url = mediaContentNode.getAttributes().getNamedItem("url").getNodeValue();\r
+                String width = mediaContentNode.getAttributes().getNamedItem("width").getNodeValue();\r
+                String height = mediaContentNode.getAttributes().getNamedItem("height").getNodeValue();\r
+                mediaContent = new NewsMediaContent(url, width, height);\r
+            }\r
             String link = getItemValue(item, "link");\r
-            newsList.add(new News(title, date, description, content, link));\r
+            newsList.add(new News(title, date, description, content, mediaContent, link));\r
         }\r
         return newsList;\r
     }\r
 \r
-    private String getItemValue(Element item, String nodeName) {\r
+    private Node getItemNode(Element item, String nodeName) {\r
         NodeList nodeList = item.getElementsByTagName(nodeName);\r
         if (nodeList.getLength() > 0) {\r
-            Node node = nodeList.item(0);\r
+            return nodeList.item(0);\r
+        } else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    private String getItemValue(Element item, String nodeName) {\r
+        Node node = getItemNode(item, nodeName);\r
+        if (node != null) {\r
             if (node.hasChildNodes()) {\r
                 return node.getFirstChild().getNodeValue();\r
-            } else {\r
-                return null;\r
             }\r
-        } else {\r
-            return null;\r
         }\r
+        return null;\r
     }\r
+\r
 }\r
diff --git a/scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/newsfeed/NewsMediaContent.java b/scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/newsfeed/NewsMediaContent.java
new file mode 100644 (file)
index 0000000..51a62b5
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2015 - Scilab Enterprises
+*
+ * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
+*
+*/
+
+package org.scilab.modules.ui_data.newsfeed;
+
+/**
+ * News media content (image essentially)
+ */
+public class NewsMediaContent {
+    private String url;
+    private String width;
+    private String height;
+
+    public NewsMediaContent(String url, String width, String height) {
+        this.url = url;
+        this.width = width;
+        this.height = height;
+    }
+
+    String getURL() {
+        return url;
+    }
+
+    String getWidth() {
+        return width;
+    }
+
+    String getHeight() {
+        return height;
+    }
+}