package net.thesocialos.client.view.deck; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import net.thesocialos.client.api.FacebookAPI.Post; import net.thesocialos.client.api.TwitterAPI.Tweet; import net.thesocialos.shared.model.Columns; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; public class DeckColumn extends Composite implements HasWidgets { interface DeckColumnUiBinder extends UiBinder<Widget, DeckColumn> { } private static DeckColumnUiBinder uiBinder = GWT.create(DeckColumnUiBinder.class); @UiField Label title; @UiField Label newCounts; @UiField VerticalPanel postsColumn; private Columns columns; private Set<Tweet> tweets = new HashSet<Tweet>(); private Set<Post> posts = new HashSet<Post>(); public DeckColumn() { initWidget(uiBinder.createAndBindUi(this)); } public DeckColumn(String title) { initWidget(uiBinder.createAndBindUi(this)); this.title.setText(title); } @Override public void add(Widget w) { postsColumn.add(w); } public void addTweet(Tweet tweet) { tweets.add(tweet); } public void addPost(Post post) { posts.add(post); } public void addTweets(Set<Tweet> tweetsSet) { tweets.addAll(tweetsSet); } public void addPosts(Set<Post> postsSet) { posts.addAll(postsSet); } @Override public void clear() { postsColumn.clear(); } public void clearTweets() { tweets.clear(); } public void clearPosts() { posts.clear(); } /** * @return the columns */ public Columns getColumns() { return columns; } @Override public String getTitle() { return title.getText(); } /** * @return the tweets */ public Set<Tweet> getTweets() { return tweets; } /** * @return the posts */ public Set<Post> getPosts() { return posts; } @Override public Iterator<Widget> iterator() { return postsColumn.iterator(); } public void loadAll() { Set<TimelinePost> tposts = new HashSet<TimelinePost>(); for (Post p : posts) tposts.add(new TimelinePost(p)); for (Tweet t : tweets) tposts.add(new TimelinePost(t)); postsColumn.clear(); for (TimelinePost tp : tposts) postsColumn.add(tp); } public void loadPosts() { Set<TimelinePost> tposts = new HashSet<TimelinePost>(); for (Post p : posts) tposts.add(new TimelinePost(p)); postsColumn.clear(); for (TimelinePost tp : tposts) postsColumn.add(tp); } public void loadTweets() { Set<TimelinePost> tposts = new HashSet<TimelinePost>(); for (Tweet t : tweets) tposts.add(new TimelinePost(t)); postsColumn.clear(); for (TimelinePost tp : tposts) postsColumn.add(tp); } @Override public boolean remove(Widget w) { return postsColumn.remove(w); } /** * @param columns * the columns to set */ public void setColumns(Columns columns) { this.columns = columns; } @Override public void setTitle(String title) { this.title.setText(title); } /** * @param tweets * the tweets to set */ public void setTweets(Set<Tweet> tweets) { this.tweets = tweets; } /** * @param tweets * the tweets to set */ public void setPosts(Set<Post> posts) { this.posts = posts; } }