private TreeGridItem GetCommentTree(Comment comment) { List<string> top5 = comment.GetTopNWords(5); TreeGridItem tgi = new TreeGridItem(); if (top5.Count > 0) { string all5 = string.Empty; foreach (string s in top5) { all5 += s + " "; } tgi.Values = new object[] { all5 }; RichTextArea rta = new RichTextArea(); rta.Text = comment.Text; tgi.Children.Add(new TreeGridItem() { Values = new object[] { comment.Text } }); foreach (Comment commentChild in comment.Comments) { TreeGridItem tgic = GetCommentTree(commentChild); tgi.Children.Add(tgic); } } else { tgi.Tag = "empty"; } return tgi; }
private TreeGridItem GetCommentTree(children child) { List<string> top5 = child.GetTopNWords(5); TreeGridItem tgi = new TreeGridItem(); if (top5.Count > 0) { string all5 = string.Empty; foreach (string s in top5) { all5 += s + " "; } tgi.Values = new object[] { all5 }; RichTextArea rta = new RichTextArea(); rta.Text = WebUtility.HtmlDecode(child.text); tgi.Children.Add(new TreeGridItem() { Values = new object[] {WebUtility.HtmlDecode(child.text) } }); foreach (children commentchild in child.Children) { TreeGridItem tgic = GetCommentTree(commentchild); tgi.Children.Add(tgic); } } else { tgi.Tag = "empty"; } return tgi; }
public RichTextAreaSection() { var richText = new RichTextArea(); richText.Size = new Size(-1, 300); richText.Text = LoremText; var range = new Range<int>(6, 10); var buffer = richText.Buffer; buffer.SetFont(range, Fonts.Cursive(20, FontStyle.Bold, FontDecoration.Underline)); buffer.SetForeground(range, Colors.Blue); buffer.SetBackground(range, Colors.Yellow); buffer.SetBold(new Range<int>(11, 16), true); buffer.SetItalic(new Range<int>(18, 20), true); buffer.SetUnderline(new Range<int>(22, 25), true); buffer.SetStrikethrough(new Range<int>(28, 38), true); richText.CaretIndex = LoremText.Length - 1; richText.SelectionChanged += (sender, e) => { UpdateBindings(BindingUpdateMode.Destination); Log.Write(sender, "SelectionChanged: {0}", richText.Selection); }; var boldButton = new CheckBox { Text = "Bold" }; boldButton.CheckedBinding.Bind(richText, r => r.SelectionBold); boldButton.CheckedChanged += (sender, e) => { richText.Focus(); UpdateBindings(BindingUpdateMode.Destination); }; var italicButton = new CheckBox { Text = "Italic" }; italicButton.CheckedBinding.Bind(richText, r => r.SelectionItalic); italicButton.CheckedChanged += (sender, e) => { richText.Focus(); UpdateBindings(BindingUpdateMode.Destination); }; var underlineButton = new CheckBox { Text = "Underline" }; underlineButton.CheckedBinding.Bind(richText, r => r.SelectionUnderline); underlineButton.CheckedChanged += (sender, e) => richText.Focus(); var strikethroughButton = new CheckBox { Text = "Strikethrough" }; strikethroughButton.CheckedBinding.Bind(richText, r => r.SelectionStrikethrough); strikethroughButton.CheckedChanged += (sender, e) => richText.Focus(); var backgroundButton = new ColorPicker { }; backgroundButton.ValueBinding.Bind(() => richText.SelectionBackground, val => richText.SelectionBackground = val, h => Binding.AddPropertyEvent(richText, r => r.SelectionBackground, h), h => Binding.RemovePropertyEvent(richText, h)); backgroundButton.ValueChanged += (sender, e) => richText.Focus(); var foregroundButton = new ColorPicker { }; foregroundButton.ValueBinding.Bind(richText, r => r.SelectionForeground); foregroundButton.ValueChanged += (sender, e) => richText.Focus(); var fontButton = new Button(); fontButton.Bind(c => c.Text, new DelegateBinding<string>(() => { var font = richText.SelectionFont; if (font == null) return "<No Font>"; return string.Format("{0}, {1}, {2:0.00}pt", font.FamilyName, font.Typeface.Name, font.Size); })); var fd = new FontDialog(); fontButton.Click += (sender, e) => { fd.Font = richText.SelectionFont; fd.FontChanged += (s, ee) => { richText.SelectionFont = fd.Font; UpdateBindings(BindingUpdateMode.Destination); }; if (fd.ShowDialog(this) == DialogResult.Ok) richText.Focus(); }; var familyDropDown = new DropDown(); familyDropDown.DataStore = Fonts.AvailableFontFamilies.OrderBy(r => r.Name); familyDropDown.SelectedValueBinding.Bind(richText, r => r.SelectionFamily); familyDropDown.SelectedValueChanged += (sender, e) => { richText.Focus(); UpdateBindings(BindingUpdateMode.Destination); }; var formatEnum = new EnumDropDown<RichTextAreaFormat>(); formatEnum.SelectedValue = RichTextAreaFormat.Rtf; var loadButton = new Button { Text = "Load" }; loadButton.Enabled = buffer.SupportedFormats.Contains(formatEnum.SelectedValue); loadButton.Click += (sender, e) => buffer.Load(new MemoryStream(Encoding.UTF8.GetBytes(formatEnum.SelectedValue == RichTextAreaFormat.Rtf ? RtfString : LoremText)), formatEnum.SelectedValue); var saveButton = new Button { Text = "Save" }; saveButton.Enabled = buffer.SupportedFormats.Contains(formatEnum.SelectedValue); saveButton.Click += (sender, e) => { var stream = new MemoryStream(); buffer.Save(stream, formatEnum.SelectedValue); stream.Position = 0; Log.Write(richText, "Saved {0}:\n{1}", formatEnum.SelectedValue, new StreamReader(stream).ReadToEnd()); }; formatEnum.SelectedValueChanged += (sender, e) => saveButton.Enabled = loadButton.Enabled = buffer.SupportedFormats.Contains(formatEnum.SelectedValue); var clearButton = new Button { Text = "Clear" }; clearButton.Click += (sender, e) => buffer.Clear(); var formatting1 = new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, boldButton, italicButton, underlineButton, strikethroughButton, null } }; var formatting2 = new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, new Label { Text = "Foreground", VerticalAlignment = VerticalAlignment.Center }, TableLayout.AutoSized(foregroundButton, centered: true), new Label { Text = "Background", VerticalAlignment = VerticalAlignment.Center }, TableLayout.AutoSized(backgroundButton, centered: true), null } }; var formatting3 = new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, fontButton, familyDropDown, null } }; var buttons = new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, formatEnum, loadButton, saveButton, clearButton, null } }; Content = new StackLayout { Padding = new Padding(10), Spacing = 5, HorizontalContentAlignment = HorizontalAlignment.Stretch, Items = { buttons, TextAreaSection.TextAreaOptions(richText), TextAreaSection.TextAreaOptions2(richText), TextAreaSection.TextAreaOptions3(richText), formatting1, formatting2, formatting3, new StackLayoutItem(richText, expand: true) } }; }