package org.gcube.portlets.user.newsfeed.client; import net.eliasbalasis.tibcopagebus4gwt.client.PageBusAdapter; import net.eliasbalasis.tibcopagebus4gwt.client.PageBusAdapterException; import net.eliasbalasis.tibcopagebus4gwt.client.PageBusEvent; import net.eliasbalasis.tibcopagebus4gwt.client.PageBusListener; import org.gcube.portal.databook.shared.ClientFeed; import org.gcube.portal.databook.shared.ClientFeed.ClientFeedJsonizer; import org.gcube.portlets.user.gcubewidgets.client.ClientScopeHelper; import org.gcube.portlets.user.newsfeed.client.event.PageBusEvents; import org.gcube.portlets.user.newsfeed.client.panels.NewsFeedPanel; import org.jsonmaker.gwt.client.Jsonizer; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Window.Location; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.RootPanel; /** * Entry point classes define onModuleLoad(). */ public class NewsFeed implements EntryPoint { private final String UNIQUE_DIV = "newsfeedDIV"; final public static PageBusAdapter pageBusAdapter = new PageBusAdapter(); NewsFeedPanel mainPanel; public void onModuleLoad() { ClientScopeHelper.getService().setScope(Location.getHref(), new AsyncCallback() { @Override public void onSuccess(Boolean result) { init(); } @Override public void onFailure(Throwable caught) { } }); } public void init() { mainPanel = new NewsFeedPanel(); mainPanel.setWidth("620px"); RootPanel.get(UNIQUE_DIV).add(mainPanel); ClientFeed notification = new ClientFeed(); //Subscribe to message and associate subsequent receptions with custom subscriber data try { pageBusAdapter.PageBusSubscribe(PageBusEvents.newPostCreated, null, null, notification, (Jsonizer)GWT.create(ClientFeedJsonizer.class)); } catch (PageBusAdapterException e1) { e1.printStackTrace(); } pageBusAdapter.addPageBusSubscriptionCallbackListener(new PageBusListener() { @Override public void onPageBusSubscriptionCallback(PageBusEvent event) { if(event.getSubject().equals(this.getName())){ // translate JavaScript message contents and subscriber data to their Java equivalents try { ClientFeed feed = (ClientFeed)event.getMessage((Jsonizer)GWT.create(ClientFeedJsonizer.class)); mainPanel.addJustAddedFeed(feed); // alert the User statistics portlet to increment the number of user's posts // TODO // pageBusAdapter.PageBusPublish(PageBusEvents.postIncrement, "", Defaults.STRING_JSONIZER); } catch (PageBusAdapterException e) { e.printStackTrace(); } } } @Override public String getName() { return PageBusEvents.newPostCreated; } }); } }