diff -r 1349793e6b11 -r 3319dd953212 core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/extension/AbstractRSSPortalPageLayer.java --- a/core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/extension/AbstractRSSPortalPageLayer.java Fri Aug 13 15:37:14 2010 -0500 +++ b/core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/extension/AbstractRSSPortalPageLayer.java Mon Aug 16 09:03:23 2010 -0500 @@ -26,8 +26,13 @@ import java.util.Set; import java.util.regex.Pattern; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; +import org.eclipse.swt.widgets.Display; import com.nokia.carbide.discovery.ui.Activator; import com.nokia.carbide.discovery.ui.Messages; @@ -109,14 +114,24 @@ } protected void readRSS() { - URL url = getURL(); + final URL url = getURL(); if (url != null) { - try { - rss = SimpleRSSReader.readRSS(url); - displayRSS(); - } catch (Exception e) { - Activator.logError(MessageFormat.format(Messages.AbstractRSSPortalPageLayer_RSSReadError, url), e); - } + Job j = new Job("Getting RSS feed") { + + @Override + protected IStatus run(IProgressMonitor monitor) { + try { + rss = SimpleRSSReader.readRSS(url); + displayRSS(); + } catch (Exception e) { + Activator.logError(MessageFormat.format(Messages.AbstractRSSPortalPageLayer_RSSReadError, url), e); + } + return Status.OK_STATUS; + } + + }; + j.setUser(true); + j.schedule(); } } @@ -152,7 +167,13 @@ buf.append(""); //$NON-NLS-1$ } buf.append(HTML_BODY_FOOTER); - browser.setText(buf.toString()); + final String s = buf.toString(); + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + browser.setText(s); + } + }); } private String clean(String s) {