Ejemplo n.º 1
0
        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);
            });
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }