private void FolderBrowerSidebar_Loaded(object sender, RoutedEventArgs e) { AppModel = mmApp.Model; Window = AppModel.Window; DataContext = this; FolderBrowserContextMenu = new FolderBrowserContextMenu(this); // Load explicitly here to fire *after* behavior has attached ComboFolderPath.PreviewKeyUp += ComboFolderPath_PreviewKeyDown; TreeFolderBrowser.GotFocus += TreeFolderBrowser_GotFocus; ComboFolderPath.GotFocus += TreeFolderBrowser_GotFocus; }
/// <summary> /// Handle edit click /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TextFileOrFolderName_MouseUpToEdit(object sender, MouseButtonEventArgs e) { // only if (e.ChangedButton == MouseButton.Left) { var selected = TreeFolderBrowser.SelectedItem as PathItem; var t = DateTime.Now; if (LastItem == selected) { if (t >= LastClickTime.AddMilliseconds(System.Windows.Forms.SystemInformation.DoubleClickTime + 200) && t <= LastClickTime.AddMilliseconds(System.Windows.Forms.SystemInformation.DoubleClickTime * 2 + 200)) { FolderBrowserContextMenu.MenuRenameFile_Click(null, null); } } LastItem = selected; LastClickTime = t; } }
private void FolderBrowserGrid_PreviewKeyDown(object sender, KeyEventArgs e) { var selected = TreeFolderBrowser.SelectedItem as PathItem; if (e.Key == Key.F1) { AppModel.Commands.HelpCommand.Execute("_4xs10gaui.htm"); e.Handled = true; } else if (e.Key == Key.F && Keyboard.IsKeyDown(Key.LeftCtrl)) { if (SearchPanel.Visibility == Visibility.Collapsed) { SearchPanel.Visibility = Visibility.Visible; TextSearch.Focus(); } else { SearchPanel.Visibility = Visibility.Collapsed; TextSearch.Text = string.Empty; } e.Handled = true; } // Copy File to 'clipboard' else if ((e.Key == Key.C || e.Key == Key.X) && Keyboard.IsKeyDown(Key.LeftCtrl)) { var menu = new FolderBrowserContextMenu(this); menu.FileBrowserCopyFile(e.Key == Key.X); e.Handled = true; } // Paste Files(s) from clipboard else if (e.Key == Key.V && Keyboard.IsKeyDown(Key.LeftCtrl)) { var menu = new FolderBrowserContextMenu(this); menu.FileBrowserPasteFile(); e.Handled = true; } }
private void TreeView_Keydown(object sender, KeyEventArgs e) { var selected = TreeFolderBrowser.SelectedItem as PathItem; // this works without a selection if (e.Key == Key.F2 && Keyboard.IsKeyDown(Key.LeftShift)) { if (selected == null || !selected.IsEditing) { FolderBrowserContextMenu.MenuAddFile_Click(sender, null); e.Handled = true; } return; } if (e.Key == Key.F8) { if (selected == null || !selected.IsEditing) { FolderBrowserContextMenu.MenuAddDirectory_Click(sender, null); e.Handled = true; } } if (selected == null) { return; } if (e.Key == Key.Enter || e.Key == Key.Tab) { if (!selected.IsEditing) { HandleItemSelection(forceEditorFocus: true); } else { RenameOrCreateFileOrFolder(); } e.Handled = true; } else if (e.Key == Key.Escape) { if (selected.IsEditing) { selected.IsEditing = false; if (!string.IsNullOrEmpty(selected.OriginalRenamePath)) { selected.FullPath = selected.OriginalRenamePath; selected.OriginalRenamePath = null; } else { selected.Parent?.Files?.Remove(selected); } } } else if (e.Key == Key.F2) { if (!selected.IsEditing) { FolderBrowserContextMenu.MenuRenameFile_Click(sender, null); } } else if (e.Key == Key.Delete) { if (!selected.IsEditing) { FolderBrowserContextMenu.MenuDeleteFile_Click(sender, null); } } else if (e.Key == Key.G && Keyboard.IsKeyDown(Key.LeftCtrl)) { if (!selected.IsEditing) { FolderBrowserContextMenu.MenuCommitGit_Click(null, null); e.Handled = true; } } else if (e.Key == Key.Z && Keyboard.IsKeyDown(Key.LeftCtrl)) { if (!selected.IsEditing) { FolderBrowserContextMenu.MenuUndoGit_Click(null, null); e.Handled = true; } } if (selected.IsEditing) { return; } // search key if (e.Key >= Key.A && e.Key <= Key.Z || e.Key >= Key.D0 && e.Key <= Key.D9 || e.Key == Key.OemPeriod || e.Key == Key.Space || e.Key == Key.Separator || e.Key == Key.OemMinus && (!Keyboard.IsKeyDown(Key.LeftCtrl) && !Keyboard.IsKeyDown(Key.LeftAlt))) { //Debug.WriteLine("Treeview TreeDown: " + e.Key + " shfit: " + Keyboard.IsKeyDown(Key.LeftShift)); var keyConverter = new KeyConverter(); string k; if (e.Key == Key.OemPeriod) { k = "."; } else if (e.Key == Key.OemMinus && Keyboard.IsKeyDown(Key.LeftShift)) { k = "_"; } else if (e.Key == Key.OemMinus) { k = "-"; } else if (e.Key == Key.Space) { k = " "; } else { k = keyConverter.ConvertToString(e.Key); } if (searchFilterLast > DateTime.Now.AddSeconds(-1.2)) { searchFilter += k.ToLower(); } else { searchFilter = k.ToLower(); } Window.ShowStatus("File search filter: " + searchFilter, 2000); var lowerFilter = searchFilter.ToLower(); var parentPath = selected.Parent; if (parentPath == null) { parentPath = ActivePathItem; // root } var item = parentPath.Files.FirstOrDefault(sf => sf.DisplayName.ToLower().StartsWith(lowerFilter)); if (item != null) { item.IsSelected = true; } searchFilterLast = DateTime.Now; } }
private void TreeFolderBrowser_ContextMenuOpening(object sender, ContextMenuEventArgs e) { FolderBrowserContextMenu.ShowContextMenu(); }