public void SetAccViewDataStore() { var accs = LocalContext.GetAllAccounts().Select(acc => new AccountGridItem(acc, this)); filteredCollection = new SelectableFilterCollection <AccountGridItem>(AccountsView, accs); AccountsView.DataStore = filteredCollection; }
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); }
private void PopulateGridView() { var filtered = new SelectableFilterCollection <LogItem>(_gridView, ToolboxApp.Log.LiveLogItems); _gridView.DataStore = filtered; _control.TextChanged += (s, e) => { var filterItems = (_control.Text ?? string.Empty).Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (filterItems.Length == 0) { filtered.Filter = null; } else { filtered.Filter = i => { foreach (var filterItem in filterItems) { if (i.ToString().IndexOf(filterItem, StringComparison.CurrentCultureIgnoreCase) == -1) { return(false); } } return(true); } }; }; }
public ImportDialog(List <Server> servers) { _serversCombo = new ComboBox(); _projectCombo = new ComboBox(); _configCombo = new ComboBox(); _win32 = new CheckBox { Text = "Win 32-bit", Checked = true }; _win64 = new CheckBox { Text = "Win 64-bit", Checked = true }; _linux32 = new CheckBox { Text = "Linux 32-bit", Checked = true }; _linux64 = new CheckBox { Text = "Linux 64-bit", Checked = true }; _spinner = new Spinner { Size = new Size(30, 30), Visible = false }; _gridView = new GridView(); _dataStore = new SelectableFilterCollection <ArtifactTemplate>(_gridView); Init(servers); }
public ReferenceDialog(IController controller, string[] refs) { InitializeComponent(); _controller = controller; _dllFileFilter = new FileFilter("Dll Files (*.dll)", new[] { ".dll" }); _allFileFilter = new FileFilter("All Files (*.*)", new[] { ".*" }); var assemblyColumn = new GridColumn(); assemblyColumn.HeaderText = "Assembly"; assemblyColumn.DataCell = new TextBoxCell("Assembly"); assemblyColumn.Sortable = true; grid1.Columns.Add(assemblyColumn); var locationColumn = new GridColumn(); locationColumn.HeaderText = "Location"; locationColumn.DataCell = new TextBoxCell("Location"); locationColumn.Sortable = true; grid1.Columns.Add(locationColumn); grid1.DataStore = _dataStore = new SelectableFilterCollection <RefItem>(grid1); foreach (var rf in refs) { _dataStore.Add(new RefItem(Path.GetFileName(rf), _controller.GetFullPath(rf))); } }
TableLayout CreateOptions(GridView grid, SelectableFilterCollection <MyGridItem> filtered) { return(new TableLayout { Padding = Padding.Empty, Rows = { TableLayout.Horizontal( null, EnabledCheckBox(grid), EditableCheckBox(grid), AllowMultiSelectCheckBox(grid), ShowHeaderCheckBox(grid), GridLinesDropDown(grid), null ), TableLayout.Horizontal( null, CreateScrollToRow(grid), CreateBeginEditButton(grid), null ), CreateSearchBox(filtered) } }); }
public GridViewSection() { var gridView = CreateGrid(); var selectionGridView = CreateGrid(); // hook up selection of main grid to the selection grid gridView.SelectionChanged += (s, e) => selectionGridView.DataStore = gridView.SelectedItems.ToList(); var filteredCollection = new SelectableFilterCollection<MyGridItem>(gridView, CreateItems().ToList()); gridView.DataStore = filteredCollection; if (Platform.Supports<ContextMenu>()) gridView.ContextMenu = CreateContextMenu(gridView, filteredCollection); Content = new TableLayout { Padding = new Padding(10), Spacing = new Size(5, 5), Rows = { new TableRow( "Grid", new TableLayout( CreateOptions(gridView, filteredCollection), gridView ) ) { ScaleHeight = true }, new TableRow("Selected Items", selectionGridView) } }; }
Button AddItemButton(SelectableFilterCollection <MyGridItem> filtered) { var control = new Button { Text = "Add Item" }; control.Click += (sender, e) => filtered.Add(new MyGridItem(new Random(), filtered.Count + 1)); return(control); }
Control CreateSearchBox(SelectableFilterCollection <JourneyViewModel> 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.TextDescription.IndexOf(filterItem, StringComparison.OrdinalIgnoreCase) == -1) { return(false); } } return(true); } }; }; var panel = new Panel(); panel.Content = filterText; panel.Padding = new Padding(5, 5); return(panel); } ContextMenu CreateContextMenu() { var menu = new ContextMenu(); var deleteItem = new ButtonMenuItem { Text = "Delete" }; deleteItem.Click += (s, e) => { DeleteSelectedJourney(); }; menu.Items.Add(deleteItem); return(menu); } }
StackLayout CreateOptions(GridView grid, SelectableFilterCollection <MyGridItem> filtered) { return(new StackLayout { Spacing = 5, HorizontalContentAlignment = HorizontalAlignment.Stretch, Items = { TableLayout.Horizontal( 5, null, EnabledCheckBox(grid), EditableCheckBox(grid), AllowMultiSelectCheckBox(grid), ShowHeaderCheckBox(grid), GridLinesDropDown(grid), null ), TableLayout.Horizontal( 5, null, AddItemButton(filtered), CreateScrollToRow(grid), CreateBeginEditButton(grid), "Border", CreateBorderType(grid), null ), TableLayout.Horizontal( 5, null, ReloadDataButton(grid), null ), TableLayout.Horizontal( 5, null, "TextBoxCell:", "TextAlignment", TextAlignmentDropDown(grid), "VerticalAlignment", VerticalAlignmentDropDown(grid), null ), TableLayout.Horizontal( 5, null, "AutoSelectMode", AutoSelectModeDropDown(grid), null ), CreateSearchBox(filtered) } }); }
public void Setup() { TestUtils.Invoke(() => { grid = new GridView(); // Some platforms need at least one column for selection to work grid.Columns.Add(new GridColumn { HeaderText = "Text", DataCell = new TextBoxCell("Id") }); model = GridViewUtils.CreateModel(); // create our filtered collection filtered = new SelectableFilterCollection<DataItem>(grid, model); filtered.SelectionChanged += (s, e) => modelSelectionChangedCount++; grid.DataStore = filtered; grid.SelectionChanged += (s, e) => viewSelectionChangedCount++; modelSelectionChangedCount = viewSelectionChangedCount = 0; }); }
void PopulatePropertyView(bool v) { var coll = new SelectableFilterCollection <PropertyPOCO> (mPropertyGridView); for (int i = 0; i < 27; i++) { coll.Add(new PropertyPOCO("Name " + i.ToString(), "Integer", i % 4 == 0 ? "Group " + i.ToString() : "", i % 4 == 0 ? true : false, i % 2 == 0 ? true : false, true)); } mCheck.DataCell = new PropertyCustomCheckCell(); mName.DataCell = new TextBoxCell { Binding = Binding.Property <PropertyPOCO, string> (r => r.PropertyName) }; mType.DataCell = new TextBoxCell { Binding = Binding.Property <PropertyPOCO, string> (r => r.PropertyType) }; mPropertyGridView.DataStore = coll; }
public void Setup() { TestBase.Invoke(() => { grid = new GridView(); // Some platforms need at least one column for selection to work grid.Columns.Add(new GridColumn { HeaderText = "Text", DataCell = new TextBoxCell("Id") }); model = GridViewUtils.CreateModel(); // create our filtered collection filtered = new SelectableFilterCollection <DataItem>(grid, model); filtered.SelectionChanged += (s, e) => modelSelectionChangedCount++; grid.DataStore = filtered; grid.SelectionChanged += (s, e) => viewSelectionChangedCount++; modelSelectionChangedCount = viewSelectionChangedCount = 0; }); }
public GridViewSection() { var gridView = CreateGrid(); var selectionGridView = CreateGrid(); // hook up selection of main grid to the selection grid gridView.SelectionChanged += (s, e) => selectionGridView.DataStore = gridView.SelectedItems.ToList(); var filteredCollection = new SelectableFilterCollection <MyGridItem>(gridView, CreateItems().ToList()); gridView.DataStore = filteredCollection; if (Platform.Supports <ContextMenu>()) { gridView.ContextMenu = CreateContextMenu(gridView, filteredCollection); } Content = new TableLayout { Rows = { new TableRow( new Label { Text = "Grid" }, new TableLayout( CreateOptions(gridView, filteredCollection), gridView ) ) { ScaleHeight = true }, new TableRow( new Label { Text = "Selected Items" }, selectionGridView ) } }; }
StackLayout CreateOptions(GridView grid, SelectableFilterCollection <MyGridItem> filtered) { return(new StackLayout { Spacing = 5, HorizontalContentAlignment = HorizontalAlignment.Stretch, Items = { new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, EnabledCheckBox(grid), EditableCheckBox(grid), AllowMultiSelectCheckBox(grid), ShowHeaderCheckBox(grid), GridLinesDropDown(grid), null } }, new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, AddItemButton(filtered), CreateScrollToRow(grid), CreateBeginEditButton(grid), null } }, CreateSearchBox(filtered) } }); }
StackLayout CreateOptions(GridView grid, SelectableFilterCollection<MyGridItem> filtered) { return new StackLayout { Spacing = 5, HorizontalContentAlignment = HorizontalAlignment.Stretch, Items = { new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, EnabledCheckBox(grid), EditableCheckBox(grid), AllowMultiSelectCheckBox(grid), ShowHeaderCheckBox(grid), GridLinesDropDown(grid), null } }, new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { null, AddItemButton(filtered), CreateScrollToRow(grid), CreateBeginEditButton(grid), null } }, CreateSearchBox(filtered) } }; }
GridView WithContextMenuAndFilter() { var control = defaultGridView = Default(null); var filtered = new SelectableFilterCollection <MyGridItem>(control, CreateItems().ToArray()); control.DataStore = filtered; control.AllowMultipleSelection = true; // 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.CurrentCultureIgnoreCase) == -1) { return(false); } } return(true); } }; }; // Context menu var menu = new ContextMenu(); var item = new ButtonMenuItem { Text = "Click Me!" }; item.Click += delegate { if (control.SelectedRows.Any()) { Log.Write(item, "Click, Rows: {0}", SelectedRowsString(control)); } 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 = control.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 = control.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); control.ContextMenu = menu; return(control); }
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; }
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; }
public BuildDependencyManagerDialog(string fileName = null) { Application.Instance.UnhandledException += OnUnhandledException; Application.Instance.Initialized += OnApplicationInitialized; Application.Instance.Name = "Build Dependency Manager"; _artifacts = new List <ArtifactTemplate>(); Title = "Build Dependency Manager"; ClientSize = new Size(700, 400); Menu = new MenuBar { Items = { new ButtonMenuItem { Text = "&File", Items = { new Command(OnFileNew) { MenuText = "&New" }, new Command(OnFileOpen) { MenuText = "&Open..." }, new Command(OnFileSave) { MenuText = "&Save" }, new Command(OnFileSaveAs) { MenuText = "Save &As..." }, new Command(OnFileImport) { MenuText = "&Import..." }, } }, new ButtonMenuItem { Text = "&Tools", Items = { new Command(OnToolsServers) { MenuText = "&Servers" }, new Command(OnToolsSort) { MenuText = "S&ort" } } }, new ButtonMenuItem { Text = "&Help", Items = { new Command(OnHelpAbout) { MenuText = "&About" } } } }, QuitItem = new Command((sender, e) => Application.Instance.Quit()) { MenuText = "E&xit", } }; _spinner = new Spinner { Size = new Size(30, 30), Visible = false }; _gridView = new GridView { GridLines = GridLines.Both, ShowHeader = true, Size = new Size(680, 350) }; _dataStore = new SelectableFilterCollection <ArtifactTemplate>(_gridView, _artifacts); _gridView.DataStore = _dataStore; _gridView.CellDoubleClick += OnEditArtifact; _gridView.Columns.Add(new GridColumn { HeaderText = "Artifacts source", DataCell = new TextBoxCell("Source"), AutoSize = true, Resizable = true, Sortable = true, }); _gridView.Columns.Add(new GridColumn { HeaderText = "Artifacts path", DataCell = new TextBoxCell("PathRules"), //AutoSize = true, Resizable = true, Sortable = true }); _gridView.ContextMenu = new ContextMenu( new ButtonMenuItem(new Command(OnEditArtifact) { MenuText = "&Edit" }), new ButtonMenuItem(new Command(OnDeleteArtifact) { MenuText = "&Delete" })); var button = new Button { Text = "Add Artifact" }; button.Click += OnAddArtifact; var content = new TableLayout { Padding = new Padding(10, 10, 10, 5), Spacing = new Size(5, 5), Rows = { new TableRow(_gridView) { ScaleHeight = true }, new StackLayout { Orientation = Orientation.Horizontal, Spacing = 5, Items = { _spinner, null, button } } } }; Content = content; if (string.IsNullOrEmpty(fileName)) { OnFileNew(this, EventArgs.Empty); } else { FileName = fileName; _fileWaitingToBeLoaded = true; } }
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); }
private void SetDataStore() { filteredCollection = new SelectableFilterCollection <MyGridItem>(gridView, CreateItems()); gridView.DataStore = filteredCollection; }
Button AddItemButton(SelectableFilterCollection<MyGridItem> filtered) { var control = new Button { Text = "Add Item" }; control.Click += (sender, e) => filtered.Add(new MyGridItem(new Random(), filtered.Count + 1)); return control; }
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); }
public MainView() { ProcessStartInfo mongoDbProcessInfo = new ProcessStartInfo(); mongoDbProcessInfo.FileName = "/usr/local/Cellar/mongodb-community/4.2.1/bin/mongod"; mongoDbProcessInfo.Arguments = "--config /usr/local/etc/mongod.conf"; //mongoDbProcessInfo.FileName = "/opt/local/bin/mongod"; //mongoDbProcessInfo.Arguments = "--config /usr/local/etc/mongod.conf"; mongoDbProcessInfo.UseShellExecute = false; mongoDbProcessInfo.CreateNoWindow = true; mongoDbProcess = Process.Start(mongoDbProcessInfo); //p.WaitForExit(); MainViewModel = new MainViewModel(); this.DataContext = MainViewModel; Title = "iTrip"; ClientSize = new Size(1200, 600); var gridView = new GridView(); JourneyList = new SelectableFilterCollection <JourneyViewModel>(gridView, MainViewModel.Journeys); gridView.ShowHeader = false; gridView.DataStore = JourneyList; gridView.SelectedItemBinding.BindDataContext((MainViewModel m) => m.SelectedJourney); gridView.ContextMenu = CreateContextMenu(); gridView.AllowMultipleSelection = true; gridView.Style = "journeyList"; gridView.Columns.Add(new GridColumn { DataCell = new TextBoxCell { Binding = Binding.Property <JourneyViewModel, string>(r => r.Text) }, HeaderText = "Name", Editable = false, Resizable = false, Sortable = false, }); var searchBox = CreateSearchBox(JourneyList); var addButton = new Label(); addButton.Text = "+"; addButton.Font = new Font(FontFamilies.SansFamilyName, 30); addButton.TextColor = Colors.DarkGray; addButton.MouseUp += (sender, e) => { AddNewJourney(); ((Label)sender).TextColor = Colors.DarkGray; }; addButton.MouseDown += (sender, e) => ((Label)sender).TextColor = Colors.Black; var deleteButton = new Label(); deleteButton.Text = "–"; deleteButton.Font = new Font(FontFamilies.SansFamilyName, 32); deleteButton.TextColor = Colors.DarkGray; deleteButton.MouseUp += (sender, e) => { DeleteSelectedJourney(); ((Label)sender).TextColor = Colors.DarkGray; }; deleteButton.MouseDown += (sender, e) => ((Label)sender).TextColor = Colors.Black; TableLayout bottomBar = ViewHelper.AppendH(addButton, deleteButton) as TableLayout; bottomBar.Padding = new Padding(5, 0); var layout = new TableLayout { Rows = { new TableRow(searchBox) { ScaleHeight = false }, new TableRow(gridView) { ScaleHeight = true }, new TableRow(bottomBar) { ScaleHeight = false }, //new TableRow(new TableLayout { Rows = { new TableRow(addButton, deleteButton, null) } } ) { ScaleHeight = false } }, Padding = new Padding(0, 20, 0, 0) }; var splitter = new Splitter { Orientation = Orientation.Horizontal, Position = 200, FixedPanel = SplitterFixedPanel.Panel1, Panel1 = layout, }; splitter.BindDataContext(c => c.Panel2, (MainViewModel m) => m.SelectedJourneyControl); var mainLayout = new TableLayout { Rows = { new TableRow(splitter) { ScaleHeight = true }, //new TableRow(GetStatusBar()) { ScaleHeight = false } }, Padding = new Padding(0, 0, 0, 0), }; Content = mainLayout; Style = "main"; var addJourneyCommand = new Command { MenuText = "New Journey", Image = Icon.FromResource("iTrip.Images.AddIcon.png"), ToolBarText = "New Journey", Shortcut = Keys.Application | Keys.N }; addJourneyCommand.Executed += (sender, e) => AddNewJourney(); var saveJourneyCommand = new Command { MenuText = "Save Journey", ToolBarText = "Save Journey", Shortcut = Keys.Application | Keys.S }; saveJourneyCommand.Executed += (sender, e) => MainViewModel.Save(); var addEventCommand = new Command { MenuText = "Add Event", ToolBarText = "Add Event" }; addEventCommand.Executed += (sender, e) => MainViewModel.SelectedJourney?.AddEvent(); var addExpenseCommand = new Command { MenuText = "Add Expense", Image = Icon.FromResource("iTrip.Images.AddExpenseIcon.png"), ToolBarText = "Add Event" }; addExpenseCommand.Executed += (sender, e) => MainViewModel.SelectedJourney?.AddSpending(); var displayMapCommand = new Command { MenuText = "Map", ToolBarText = "Map" }; displayMapCommand.Executed += (sender, e) => DisplayMap(); var displayReporting = new Command { MenuText = "Reporting", ToolBarText = "Reporting" }; displayReporting.Executed += (sender, e) => DisplaySummary(); //var quitCommand = new Command { MenuText = "Quit", Shortcut = Application.Instance.CommonModifier | Keys.Q }; //quitCommand.Executed += (sender, e) => Quit(); var aboutCommand = new Command { MenuText = "About..." }; aboutCommand.Executed += (sender, e) => MessageBox.Show(this, "iTrip v1.5"); // create menu Menu = new MenuBar { Items = { // File submenu new ButtonMenuItem { Text = "&File", Items ={ addJourneyCommand, saveJourneyCommand, addEventCommand, addExpenseCommand } }, new ButtonMenuItem { Text = "&View", Items ={ displayMapCommand, displayReporting } } // new ButtonMenuItem { Text = "&Edit", Items = { /* commands/items */ } }, // new ButtonMenuItem { Text = "&View", Items = { /* commands/items */ } }, }, ApplicationItems = { // application (OS X) or file menu (others) new ButtonMenuItem { Text = "&Preferences..." }, }, //QuitItem = quitCommand, AboutItem = aboutCommand }; // create toolbar //ToolBar = new ToolBar { Items = { addJourneyCommand, new SeparatorToolItem() { Type = SeparatorToolItemType.FlexibleSpace }, saveJourneyCommand, addEventCommand, addExpenseCommand } }; }