KbtterWPF.MainWindow.CreateTweetPanel C# (CSharp) Method

CreateTweetPanel() public method

public CreateTweetPanel ( TwitterStatus st ) : UIElement
st TwitterStatus
return UIElement
        public UIElement CreateTweetPanel(TwitterStatus st)
        {
            StackPanel s = new StackPanel();
            s.Margin = new Thickness(2);
            StackPanel sus = new StackPanel();
            sus.Orientation = Orientation.Horizontal;

            TextBlock te = new TextBlock();
            TextBlock us = new TextBlock();
            TextBlock ti = new TextBlock();
            Image im = new Image();
            BitmapImage bi = new BitmapImage(new Uri(st.User.ProfileImageUrlHttps));
            us.Text = String.Format(MessageInfoUserFormat, st.User.Name, st.User.ScreenName);
            us.FontSize = 18;
            us.VerticalAlignment = VerticalAlignment.Center;
            im.Source = bi;
            im.Width = 36;
            im.Height = 36;
            im.MouseDown += im_MouseDown;
            im.Tag = s;

            sus.Children.Add(im);
            sus.Children.Add(us);

            te.Text = st.GetUrlConvertedStatusText();
            te.TextWrapping = TextWrapping.WrapWithOverflow;

            ti.FontSize = 10;
            var dt = st.CreatedDate;
            //日本時間 UTC +09:00
            dt = dt.AddHours(9);
            ti.Text = dt.ToString();

            var urls = new StackPanel();
            foreach (var u in st.Entities.Urls)
            {
                Hyperlink h = new Hyperlink();
                h.NavigateUri = new Uri(u.ExpandedValue);
                h.RequestNavigate += h_RequestNavigate;
                h.Inlines.Add(u.DisplayUrl);
                urls.Children.Add(new Label { Content = h });
            }

            foreach (var u in st.Entities.Media)
            {

                Hyperlink h = new Hyperlink();
                h.NavigateUri = new Uri(u.ExpandedUrl);
                h.RequestNavigate += h_RequestNavigate;
                h.Inlines.Add(u.DisplayUrl);
                var ll = new Label { Content = h };

                UIElement i;
                if (TryGetMediaControl(u.MediaUrlHttps, out i))
                {
                    Expander e = new Expander();
                    e.HorizontalAlignment = HorizontalAlignment.Left;
                    e.Header = ll;
                    e.Content = i;
                    urls.Children.Add(e);
                }
                else
                {
                    urls.Children.Add(ll);
                }
            }

            var hashs = new StackPanel();
            foreach (var u in st.Entities.HashTags)
            {
                var t = new TextBlock();
                t.Text = "#" + u.Text;
                t.Foreground = Brushes.Red;
                t.MouseLeftButtonDown += t_MouseLeftButtonDown;
                hashs.Children.Add(t);
            }

            var fbt = GetTemplate("FlatButton");
            var ftbt = GetTemplate("FlatToggleButton");
            StackPanel bts = new StackPanel();
            bts.Orientation = Orientation.Horizontal;
            ToggleButton rt = new ToggleButton(), fav = new ToggleButton();
            Button del = new Button();
            del.Content = MessageInfoDeleteButtonText;
            del.Tag = s;
            del.Click += del_Click;
            del.Template = fbt;
            del.Background = Brushes.LightGray;

            rt.Content = MessageInfoRetweetButtonText;
            rt.Click += rt_Click;
            rt.Tag = new RetweetData { Original = st };
            rt.Template = ftbt;
            rt.Background = Brushes.LightGray;

            fav.Content = MessageInfoFavoriteButtonText;
            fav.Click += fav_Click;
            fav.Tag = s;
            fav.Template = ftbt;
            fav.Background = Brushes.LightGray;

            if (st.User == CurrentUser)
            {
                bts.Children.Add(del);
            }
            else
            {
                bts.Children.Add(rt);
            }
            bts.Children.Add(fav);

            Button descb = new Button();
            descb.Content = MessageInfoDescriptionButtonText;
            descb.Tag = st;
            descb.Click += descb_Click;
            descb.Template = fbt;
            descb.Background = Brushes.LightGray;

            bts.Children.Add(descb);

            s.Children.Add(sus);
            s.Children.Add(te);
            s.Children.Add(urls);
            s.Children.Add(hashs);
            s.Children.Add(ti);
            s.Children.Add(bts);
            s.Tag = st;
            s.Background = Brushes.LightCyan;
            s.HorizontalAlignment = HorizontalAlignment.Stretch;

            return s;
        }