public void DrawableCellAsFirstColumnShouldNotBeWhite() { ManualForm("Both cells should show the same", form => { TreeGridView tree = new TreeGridView(); // add first drawable (it will be rendered all white! var drawableCell1 = new DrawableCell(); drawableCell1.Paint += drawableCell_Paint; tree.Columns.Add(new GridColumn { HeaderText = "not working", DataCell = drawableCell1, Width = 200 }); // add the second drawable var drawableCell2 = new DrawableCell(); drawableCell2.Paint += drawableCell_Paint; tree.Columns.Add(new GridColumn { HeaderText = "working", DataCell = drawableCell2, Width = 200 }); // add some data to the tree just to populate it TreeGridItemCollection model = new TreeGridItemCollection(); TreeGridItem item1 = new TreeGridItem(); item1.Values = new object[] { "text" }; TreeGridItem item2 = new TreeGridItem(); item2.Values = new object[] { "text" }; item1.Children.Add(item2); item1.Expanded = true; model.Add(item1); tree.DataStore = model; return(tree); }); }
GridView Default(IEnumerable <object> items) { var control = new GridView { Size = new Size(300, 100), DataStore = items }; LogEvents(control); var dropDown = MyDropDown("DropDownKey"); control.Columns.Add(new GridColumn { DataCell = new CheckBoxCell("Check"), Editable = true, AutoSize = true, Resizable = false }); control.Columns.Add(new GridColumn { HeaderText = "Image", DataCell = new ImageViewCell("Image") }); control.Columns.Add(new GridColumn { HeaderText = "Text", DataCell = new TextBoxCell("Text"), Editable = true, Sortable = true }); control.Columns.Add(new GridColumn { HeaderText = "Drop Down", DataCell = dropDown, Editable = true, Sortable = true }); if (Platform.Supports <DrawableCell>()) { var drawableCell = new DrawableCell(); drawableCell.Paint += (sender, e) => { var m = e.Item as MyGridItem; if (m != null) { if (e.CellState.HasFlag(DrawableCellStates.Selected)) { e.Graphics.FillRectangle(Colors.Blue, e.ClipRectangle); } else { e.Graphics.FillRectangle(Brushes.Cached(m.Color), e.ClipRectangle); } var rect = e.ClipRectangle; rect.Inflate(-5, -5); e.Graphics.DrawRectangle(Colors.White, rect); e.Graphics.DrawLine(Colors.White, rect.Left, rect.Bottom, rect.MiddleX, rect.Top); e.Graphics.DrawLine(Colors.White, rect.Right, rect.Bottom, rect.MiddleX, rect.Top); } }; control.Columns.Add(new GridColumn { HeaderText = "Owner drawn", DataCell = drawableCell }); } return(control); }
GridView Default(bool addItems = true) { var control = new GridView { Size = new Size(300, 100) }; LogEvents(control); var dropDown = MyDropDown("DropDownKey"); control.Columns.Add(new GridColumn { DataCell = new CheckBoxCell("Check"), Editable = true, AutoSize = true, Resizable = false }); control.Columns.Add(new GridColumn { HeaderText = "Image", DataCell = new ImageViewCell("Image") }); control.Columns.Add(new GridColumn { HeaderText = "Text", DataCell = new TextBoxCell("Text"), Editable = true, Sortable = true }); control.Columns.Add(new GridColumn { HeaderText = "Drop Down", DataCell = dropDown, Editable = true, Sortable = true }); #if Windows // Drawable cells - need to implement on other platforms. var drawableCell = new DrawableCell { PaintHandler = args => { var m = args.Item as MyGridItem; if (m != null) { args.Graphics.FillRectangle(Brushes.Cached(m.Color) as SolidBrush, args.CellBounds); } } }; control.Columns.Add(new GridColumn { HeaderText = "Owner drawn", DataCell = drawableCell }); #endif if (addItems) { var items = new DataStoreCollection(); var rand = new Random(); for (int i = 0; i < 10000; i++) { items.Add(new MyGridItem(rand, i, dropDown)); } control.DataStore = items; } return(control); }
GridView CreateGrid() { var control = new GridView { Size = new Size(300, 100) }; LogEvents(control); var dropDown = MyDropDown("DropDownKey"); control.Columns.Add(new GridColumn { DataCell = new CheckBoxCell("Check"), AutoSize = true, Resizable = false }); control.Columns.Add(new GridColumn { HeaderText = "Image", DataCell = new ImageViewCell("Image"), Resizable = false }); control.Columns.Add(new GridColumn { HeaderText = "ImageText", DataCell = new ImageTextCell("Image", "Text") }); control.Columns.Add(new GridColumn { HeaderText = "Text", DataCell = new TextBoxCell("Text"), Sortable = true }); control.Columns.Add(new GridColumn { HeaderText = "Progress", DataCell = new ProgressCell("Progress") }); control.Columns.Add(new GridColumn { HeaderText = "Drop Down", DataCell = dropDown, Sortable = true }); if (Platform.Supports <CustomCell>()) { //control.ReloadSelectedCells = true; //control.SelectedRowsChanged += (sender, e) => control.ReloadData(control.SelectedRows); var col = new GridColumn { HeaderText = "Custom", Sortable = true, DataCell = new MyCustomCell() }; control.Columns.Add(col); } if (Platform.Supports <DrawableCell>()) { var drawableCell = new DrawableCell(); drawableCell.Paint += (sender, e) => { var m = e.Item as MyGridItem; if (m != null) { if (e.CellState.HasFlag(CellStates.Selected)) { e.Graphics.FillRectangle(Colors.Blue, e.ClipRectangle); } else { e.Graphics.FillRectangle(Brushes.Cached(m.Color), e.ClipRectangle); } var rect = e.ClipRectangle; rect.Inflate(-5, -5); var color = e.CellState.HasFlag(CellStates.Editing) ? Colors.Black : Colors.White; e.Graphics.DrawRectangle(color, rect); e.Graphics.DrawLine(color, rect.Left, rect.Bottom, rect.MiddleX, rect.Top); e.Graphics.DrawLine(color, rect.Right, rect.Bottom, rect.MiddleX, rect.Top); } }; control.Columns.Add(new GridColumn { HeaderText = "Owner drawn", DataCell = drawableCell }); } return(control); }
SearchBox CreateSearchBox(SelectableFilterCollection <MyGridItem> filtered) { var filterText = new SearchBox { PlaceholderText = "Filter" }; filterText.TextChanged += (s, e) => { var filterItems = (filterText.Text ?? "").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (filterItems.Length == 0) { filtered.Filter = null; } else { filtered.Filter = i => { // Every item in the split filter string should be within the Text property foreach (var filterItem in filterItems) { if (i.Text.IndexOf(filterItem, StringComparison.OrdinalIgnoreCase) == -1) { return(false); } } return(true); } }; }; return(filterText); } GridView CreateGrid() { var control = new GridView { Size = new Size(300, 100) }; LogEvents(control); var dropDown = MyDropDown("DropDownKey"); control.Columns.Add(new GridColumn { DataCell = new CheckBoxCell("Check"), AutoSize = true, Resizable = false }); control.Columns.Add(new GridColumn { HeaderText = "Image", DataCell = new ImageViewCell("Image") }); control.Columns.Add(new GridColumn { HeaderText = "ImageText", DataCell = new ImageTextCell("Image", "Text") }); control.Columns.Add(new GridColumn { HeaderText = "Text", DataCell = new TextBoxCell("Text"), Sortable = true }); control.Columns.Add(new GridColumn { HeaderText = "Progress", DataCell = new ProgressCell("Progress") }); control.Columns.Add(new GridColumn { HeaderText = "Drop Down", DataCell = dropDown, Sortable = true }); if (Platform.Supports <DrawableCell>()) { var drawableCell = new DrawableCell(); drawableCell.Paint += (sender, e) => { var m = e.Item as MyGridItem; if (m != null) { if (e.CellState.HasFlag(DrawableCellStates.Selected)) { e.Graphics.FillRectangle(Colors.Blue, e.ClipRectangle); } else { e.Graphics.FillRectangle(Brushes.Cached(m.Color), e.ClipRectangle); } var rect = e.ClipRectangle; rect.Inflate(-5, -5); e.Graphics.DrawRectangle(Colors.White, rect); e.Graphics.DrawLine(Colors.White, rect.Left, rect.Bottom, rect.MiddleX, rect.Top); e.Graphics.DrawLine(Colors.White, rect.Right, rect.Bottom, rect.MiddleX, rect.Top); } }; control.Columns.Add(new GridColumn { HeaderText = "Owner drawn", DataCell = drawableCell }); } return(control); } IEnumerable <MyGridItem> CreateItems() { var rand = new Random(); for (int i = 0; i < 10000; i++) { yield return(new MyGridItem(rand, i)); } } ContextMenu CreateContextMenu(GridView grid, SelectableFilterCollection <MyGridItem> filtered) { // Context menu var menu = new ContextMenu(); var item = new ButtonMenuItem { Text = "Click Me!" }; item.Click += (sender, e) => { if (grid.SelectedRows.Any()) { Log.Write(item, "Click, Rows: {0}", SelectedRowsString(grid)); } else { Log.Write(item, "Click, no item selected"); } }; menu.Items.Add(item); // Delete menu item: deletes the item from the store, the UI updates via the binding. var deleteItem = new ButtonMenuItem { Text = "Delete Item" }; deleteItem.Click += (s, e) => { var i = grid.SelectedItems.First() as MyGridItem; if (i != null) { filtered.Remove(i); } }; menu.Items.Add(deleteItem); // Insert item: inserts an item into the store, the UI updates via the binding. var insertItem = new ButtonMenuItem { Text = "Insert Item at the start of the list" }; insertItem.Click += (s, e) => { var i = grid.SelectedItems.First() as MyGridItem; if (i != null) { filtered.Insert(0, new MyGridItem(new Random(), 0)); } }; menu.Items.Add(insertItem); var subMenu = menu.Items.GetSubmenu("Sub Menu"); item = new ButtonMenuItem { Text = "Item 5" }; item.Click += (s, e) => Log.Write(item, "Clicked"); subMenu.Items.Add(item); item = new ButtonMenuItem { Text = "Item 6" }; item.Click += (s, e) => Log.Write(item, "Clicked"); subMenu.Items.Add(item); return(menu); }