Package nl.topicus.onderwijs.dashboard.web.components.twitter

Source Code of nl.topicus.onderwijs.dashboard.web.components.twitter.TwitterPanel

package nl.topicus.onderwijs.dashboard.web.components.twitter;

import java.util.List;

import nl.topicus.onderwijs.dashboard.datasources.TwitterMentions;
import nl.topicus.onderwijs.dashboard.datasources.TwitterTimeline;
import nl.topicus.onderwijs.dashboard.datatypes.TwitterStatus;
import nl.topicus.onderwijs.dashboard.keys.Key;
import nl.topicus.onderwijs.dashboard.modules.DashboardRepository;
import nl.topicus.onderwijs.dashboard.web.WicketApplication;
import nl.topicus.onderwijs.dashboard.web.components.JsonResourceBehavior;

import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.odlabs.wiquery.core.IWiQueryPlugin;
import org.odlabs.wiquery.core.javascript.JsQuery;
import org.odlabs.wiquery.core.javascript.JsStatement;
import org.odlabs.wiquery.core.options.Options;
import org.odlabs.wiquery.ui.commons.WiQueryUIPlugin;
import org.odlabs.wiquery.ui.widget.WidgetJavaScriptResourceReference;

@WiQueryUIPlugin
public class TwitterPanel extends Panel implements IWiQueryPlugin {
  private static final long serialVersionUID = 1L;
  private JsonResourceBehavior<List<TwitterStatus>> timelineDataResource;
  private JsonResourceBehavior<List<TwitterStatus>> mentionsDataResource;

  public TwitterPanel(String id, final Key key) {
    super(id);

    this.timelineDataResource = new JsonResourceBehavior<List<TwitterStatus>>(
        new AbstractReadOnlyModel<List<TwitterStatus>>() {
          private static final long serialVersionUID = 1L;

          @Override
          public List<TwitterStatus> getObject() {
            DashboardRepository repository = WicketApplication
                .get().getRepository();
            return repository.getData(TwitterTimeline.class)
                .get(key).getValue();
          }
        });
    add(timelineDataResource);

    this.mentionsDataResource = new JsonResourceBehavior<List<TwitterStatus>>(
        new AbstractReadOnlyModel<List<TwitterStatus>>() {
          private static final long serialVersionUID = 1L;

          @Override
          public List<TwitterStatus> getObject() {
            DashboardRepository repository = WicketApplication
                .get().getRepository();
            return repository.getData(TwitterMentions.class)
                .get(key).getValue();
          }
        });
    add(mentionsDataResource);
  }

  @Override
  public void renderHead(IHeaderResponse response) {
    response.renderJavaScriptReference(WidgetJavaScriptResourceReference
        .get());
    response.renderJavaScriptReference(new JavaScriptResourceReference(
        TwitterPanel.class, "jquery.ui.dashboardtwitter.js"));
  }

  @Override
  public JsStatement statement() {
    Options options = new Options();
    options.putLiteral("timelineUrl", timelineDataResource.getCallbackUrl()
        .toString());
    options.putLiteral("mentionsUrl", mentionsDataResource.getCallbackUrl()
        .toString());
    JsQuery jsq = new JsQuery(this);
    return jsq.$()
        .chain("dashboardTwitter", options.getJavaScriptOptions());
  }
}
TOP

Related Classes of nl.topicus.onderwijs.dashboard.web.components.twitter.TwitterPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.