private void BookmarksDataGridView_DragDrop(object sender, DragEventArgs e) { // The mouse locations are relative to the screen, so they must be // converted to client coordinates. Point clientPoint = BookmarksDataGridView.PointToClient(new Point(e.X, e.Y)); // Get the row index of the item the mouse is below. RowIndexOfItemUnderMouseToDrop = BookmarksDataGridView.HitTest(clientPoint.X, clientPoint.Y).RowIndex; // If the drag operation was a move then remove and insert the row. if (e.Effect == DragDropEffects.Move) { DataGridViewRow rowToMove = e.Data.GetData(typeof(DataGridViewRow)) as DataGridViewRow; Bookmark bookmark = (Bookmark)Bookmarks.ElementAt(rowToMove.Index).Clone(); Bookmarks.RemoveAt(rowToMove.Index); if (RowIndexOfItemUnderMouseToDrop >= 0) { Bookmarks.Insert(RowIndexOfItemUnderMouseToDrop, bookmark); } else { Bookmarks.Add(bookmark); } } BookmarksBindingSource.ResetBindings(false); }
private void BookmarksDataGridView_MouseMove(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { // If the mouse moves outside the rectangle, start the drag. if (DragBoxFromMouseDown != Rectangle.Empty && !DragBoxFromMouseDown.Contains(e.X, e.Y)) { // Proceed with the drag and drop, passing in the list item. DragDropEffects dropEffect = BookmarksDataGridView.DoDragDrop(BookmarksDataGridView.Rows[RowIndexFromMouseDown], DragDropEffects.Move); } } }
private void SaveBookmarksButton_Click(object sender, EventArgs e) { BookmarksDataGridView.EndEdit(); BookmarkManager.Instance.ClearBookmarks(); Bookmarks.ForEach(bookmark => { BookmarkManager.Instance.AddBookmark(bookmark); }); BookmarkManager.Instance.SaveBookmarks(); NotificationCenter.Instance.PostNotification("vagrant-manager.bookmarks-updated"); this.Close(); }
private void ManageBookmarksWindow_Load(object sender, EventArgs e) { CancelScan = new CancellationTokenSource(); Bookmarks = new List <Bookmark>(BookmarkManager.Instance.GetBookmarks().Select(bookmark => (Bookmark)bookmark.Clone())); ((DataGridViewComboBoxColumn)BookmarksDataGridView.Columns["ProviderIdentifier"]).Items.AddRange(VagrantManager.Instance.GetProviderIdentifiers()); BookmarksBindingSource = new BindingSource() { DataSource = Bookmarks }; BookmarksDataGridView.DataSource = BookmarksBindingSource; BookmarksDataGridView.ColumnHeaderMouseClick += (s, args) => { BookmarksDataGridView.EndEdit(); foreach (DataGridViewColumn column in BookmarksDataGridView.Columns) { if (column == BookmarksDataGridView.Columns[args.ColumnIndex]) { column.Tag = column.Tag != null && ((SortOrder)column.Tag) == SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending; column.HeaderCell.SortGlyphDirection = (SortOrder)column.Tag; Bookmarks.Sort((a, b) => { PropertyInfo bookmarkProperty = typeof(Bookmark).GetProperty(column.DataPropertyName); return(String.Compare(bookmarkProperty.GetValue(a).ToString(), bookmarkProperty.GetValue(b).ToString())); }); if (column.HeaderCell.SortGlyphDirection == SortOrder.Descending) { Bookmarks.Reverse(); } } else { column.HeaderCell.SortGlyphDirection = SortOrder.None; column.Tag = null; } } BookmarksDataGridView.Refresh(); }; BookmarksDataGridView.CellValueChanged += (s, args) => { if (BookmarksDataGridView.Columns["ProviderIdentifier"].Index == args.ColumnIndex) { Bookmarks.ElementAt(args.RowIndex).ProviderIdentifier = (string)BookmarksDataGridView.Rows[args.RowIndex].Cells[args.ColumnIndex].Value; BookmarksDataGridView.Refresh(); } }; RecursiveScanCheckbox.Checked = Properties.Settings.Default.RecursiveBookmarkScan; }