// Once we have a full tweet, setup the rest of the view.
        void SetTweet(Tweet fullTweet)
        {
            this.tweet = fullTweet;
            userTimeline.UserReference = User.FromId(tweet.UserId);

            shortProfileView.UpdateFromUserId(tweet.UserId);
            shortProfileView.PictureTapped += delegate { PictureViewer.Load(this, tweet.UserId); };
            shortProfileView.Tapped        += LoadFullProfile;
            shortProfileView.UrlTapped     += delegate { WebViewController.OpenUrl(this, User.FromId(tweet.UserId).Url); };

            if (tweet.InReplyToStatus != 0)
            {
                var in_reply = new ConversationRootElement(Locale.Format("In reply to: {0}", tweet.InReplyToUserName), tweet);

                main.Add(in_reply);
            }
        }
        // Once we have a full tweet, setup the rest of the view.
        void SetTweet(Tweet fullTweet)
        {
            this.tweet = fullTweet;
            userTimeline.UserReference = User.FromId (tweet.UserId);

            shortProfileView.UpdateFromUserId (tweet.UserId);
            shortProfileView.PictureTapped += delegate { PictureViewer.Load (this, tweet.UserId); };
            shortProfileView.Tapped += LoadFullProfile;
            shortProfileView.UrlTapped += delegate { WebViewController.OpenUrl (this, User.FromId (tweet.UserId).Url); };

            if (tweet.InReplyToStatus != 0){
                var in_reply = new ConversationRootElement (Locale.Format ("In reply to: {0}", tweet.InReplyToUserName), tweet);

                main.Add (in_reply);
            }
        }
        public DetailTweetViewController(Tweet tweet)
            : base(UITableViewStyle.Grouped, null, true)
        {
            this.tweet = tweet;
            var handlers = new EventHandler [] { Reply, Retweet, Direct };
            var profileRect = new RectangleF (PadX, 0, View.Bounds.Width-30-PadX*2, 100);
            var detailRect = new RectangleF (PadX, 0, View.Bounds.Width-30-PadX*2, 0);

            var shortProfileView = new ShortProfileView (profileRect, tweet.UserId, true);
            shortProfileView.PictureTapped += delegate { PictureViewer.Load (this, tweet.UserId); };
            shortProfileView.Tapped += LoadFullProfile;
            shortProfileView.UrlTapped += delegate { WebViewController.OpenUrl (this, User.FromId (tweet.UserId).Url); };

            var main = new Section (shortProfileView){
                new UIViewElement (null, new DetailTweetView (detailRect, tweet, ContentHandler, this), false) {
                    Flags = UIViewElement.CellFlags.DisableSelection
                }
            };
            if (tweet.InReplyToStatus != 0){
                var in_reply = new ConversationRootElement (Locale.Format ("In reply to: {0}", tweet.InReplyToUserName), tweet);

                main.Add (in_reply);
            }

            Section replySection = new Section ();
            if (tweet.Kind == TweetKind.Direct)
                replySection.Add (new StringElement (Locale.GetText ("Direct Reply"), delegate { Direct (this, EventArgs.Empty); }));
            else
                replySection.Add (new UIViewElement (null, new ButtonsView (buttons, handlers), true) {
                    Flags = UIViewElement.CellFlags.DisableSelection | UIViewElement.CellFlags.Transparent
                });

            Root = new RootElement (tweet.Screename){
                main,
                replySection,
                new Section () {
                    TimelineRootElement.MakeTimeline (tweet.Screename, Locale.GetText ("User's timeline"), "http://api.twitter.com/1/statuses/user_timeline.json?skip_user=true&id=" + tweet.UserId, User.FromId (tweet.UserId))
                }
            };
        }