package org.chartsy.main.welcome.ui; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.SpringLayout; import org.chartsy.main.welcome.Feeds; import org.chartsy.main.welcome.content.Constants; import org.chartsy.main.welcome.content.Feed; import org.chartsy.main.welcome.content.FeedEvent; import org.chartsy.main.welcome.content.FeedListener; import org.chartsy.main.welcome.content.FeedMessage; import org.chartsy.main.welcome.content.SpringUtilities; import org.chartsy.main.welcome.content.WebLink; import org.openide.util.ImageUtilities; /** * * @author Viorel */ public class LatestNews extends JPanel implements Constants, FeedListener { private JLabel loading; public LatestNews() { super(new SpringLayout()); setOpaque(false); setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); initComponents(); Feeds.getDefault().addFeedListener(Feeds.latestNewsFeed, (FeedListener) this); } private void initComponents() { JLabel label; label = new JLabel(ImageUtilities.loadImageIcon(NEWS_ICON, true)); label.setHorizontalAlignment(JLabel.LEFT); label.setOpaque(false); label.setBorder(BorderFactory.createEmptyBorder()); add(label); loading = new JLabel("Loading content ..."); loading.setHorizontalAlignment(JLabel.LEFT); loading.setOpaque(false); loading.setBorder(BorderFactory.createEmptyBorder()); loading.setFont(LINK_FONT); loading.setForeground(LINK_COLOR); add(loading); SpringUtilities.makeCompactGrid(this, getComponentCount(), 1, 5, 5, 5, 5); } @Override public void fireFeedParsed(FeedEvent event) { Feed feed = (Feed) event.getSource(); if (feed.getFeedName().equals(Feeds.latestNewsFeed)) { remove(loading); if (!feed.getMessages().isEmpty()) { int i = 0; for (FeedMessage message : feed.getMessages()) { add(WebLink.createWebLink(message.getTitle(), message.getLink(), true)); if (i == 0) { JTextArea textArea = new JTextArea(); textArea.setText(message.getDescription()); textArea.setEditable(false); textArea.setOpaque(false); textArea.setFont(RSS_DESCRIPTION_FONT); textArea.setForeground(LINK_COLOR); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); JScrollPane scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.getViewport().setOpaque(false); scrollPane.getViewport().setBorder(null); scrollPane.setOpaque(false); scrollPane.setBorder(null); add(scrollPane); } i++; } SpringUtilities.makeCompactGrid(this, getComponentCount(), 1, 5, 5, 5, 5); } revalidate(); repaint(); } } }