Twitter4Jで何して遊ぼうかなーと考えてたのですが、PrimeFacesのリッチコンポにくっつけて表示してみようと思い、Carouselコンポーネントと合わせてみました。
別に明確な目的や意味はなくて、単にタイムラインを横に流してみただけ(^^;
こんな感じで表示されて
右上の矢印でスライド
だからどうしたって感じですが(^^;
ELでResponseListとバインドできるのでかなり簡単で、5分くらい作れました。
JSFのビューは
<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>PrimeFacesとTwitter4jで遊ぶ</title>
</h:head>
<h:body>
<h:form id="frm" style="font-size: 0.7em;">
<h:panelGrid columns="1">
<p:graphicImage id="profileImage" cache="true" value="#{twitterBean.profileImage}" />
<p:carousel id="carouselTweet" value="#{twitterBean.myTweetList}" var="myTweet"
circular="true" pageLinks="3"
headerText="#{twitterBean.user.name}" footerText="#{twitterBean.user.screenName}">
<p:panel id="pnlTweet">
<h:panelGrid columns="1">
<p:inputTextarea rows="6" value="#{myTweet.text}" />
<h:outputLabel value="#{myTweet.createdAt}" />
</h:panelGrid>
</p:panel>
</p:carousel>
</h:panelGrid>
</h:form>
</h:body>
</html>
サンプルなのでJSFの管理対象Beanを使って
package jp.co.hoge.bean;
import java.io.IOException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import lombok.Getter;
import lombok.Setter;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;
@ManagedBean
@SessionScoped
public class TwitterBean implements Serializable{
private Twitter twitter;
@Setter @Getter
private User user;
@Setter @Getter
private StreamedContent profileImage;
@Setter @Getter
private ResponseList<Status> myTweetList;
@PostConstruct
public void init() throws TwitterException, MalformedURLException, IOException{
twitter = new TwitterFactory().getInstance();
user = twitter.verifyCredentials();
String imageUrl = user.getProfileImageURL();
URL url = new URL(imageUrl);
profileImage = new DefaultStreamedContent(url.openStream(), "image/jpeg");
myTweetList = twitter.getUserTimeline();
}
}
なんかもう少し本気で遊んでみて自分用のツイート画面作ってみようかなー。