private void Home_Tree_EditHeaderClosing(object sender, CancelEditEventArgs e) { e.Cancel = true; RemoteTreeViewItem treeItem = sender as RemoteTreeViewItem; if (treeItem == null) { return; } if (string.IsNullOrEmpty(e.NewValue)) { MainWindow.ShowNoticeDialog("提示", "名称不能为空"); return; } if (treeItem.RemoteType == RemoteType.dir) { RemoteItems.GetItemDirectory(treeItem.uuid); RemoteItems.ItemDirectory.Name = e.NewValue; RemoteItems.UpdateItemDirectory(); } else if (RemoteItems.ItemRemoteLink != null && RemoteItems.ItemRemoteLink.Id == treeItem.uuid) { RemoteItems.ItemRemoteLink.Name = e.NewValue; RemoteItems.UpdateItemRemoteLink(); TextBox_Name.Text = e.NewValue; } RemoteItems.SetItemName(treeItem, e.NewValue); }
private void NewRemoteItem(RemoteTreeViewItem selectItem, RemoteType type, string name = null) { if (name == null) { if (type == RemoteType.dir) { name = "新建目录"; } if (type == RemoteType.rdp) { name = "新建RDP连接"; } if (type == RemoteType.ssh) { name = "新建SSH连接"; } if (type == RemoteType.telnet) { name = "新建Telnet连接"; } } var treeViewItem = RemoteItems.Insert(type, selectItem, name); treeViewItem.UpdateLayout(); treeViewItem.HeaderEdit(Home_Tree_EditHeaderClosing); }
private void TextBox_LostFocus(object sender, RoutedEventArgs e) { if (sender == TextBox_Name) { if (string.IsNullOrEmpty(TextBox_Name.Text)) { MainWindow.ShowNoticeDialog("提示", "名称不能为空。"); TextBox_Name.Text = RemoteItems.ItemRemoteLink.Name; return; } else { RemoteItems.ItemRemoteLink.Name = TextBox_Name.Text; if (PART_RemoteTree.SelectedItem != null) { RemoteItems.UpdateItemRemoteLink(); RemoteItems.SetItemName((RemoteTreeViewItem)PART_RemoteTree.SelectedItem, RemoteItems.ItemRemoteLink.Name); return; } } } if (sender == TextBox_Password) { RemoteItems.ItemRemoteLink.Password = TextBox_Password.Password; } RemoteItems.UpdateItemRemoteLink(); }
private void CheckBox_PrivateKey_Click(object sender, RoutedEventArgs e) { if (CheckBox_PrivateKey.IsChecked.Value) { TextBox_PrivateKey.Visibility = Visibility.Visible; TextBox_Password.IsEnabled = false; TextBox_Password.Password = null; RemoteItems.ItemRemoteLink.Password = null; if (RemoteItems.ItemRemoteLink.PrivateKey == null) { RemoteItems.ItemRemoteLink.PrivateKey = ""; } TextBox_PrivateKey.Text = RemoteItems.ItemRemoteLink.PrivateKey; } else { TextBox_PrivateKey.Visibility = Visibility.Collapsed; TextBox_Password.IsEnabled = true; RemoteItems.ItemRemoteLink.PrivateKey = null; } if (sender != null) { RemoteItems.UpdateItemRemoteLink(); } }
public Home_Remote() { InitializeComponent(); RemoteItems.LoadTree(PART_RemoteTree); PART_SettingSsh = new SettingSsh(); PART_SettingRdp = new SettingRdp(); PART_SettingTelnet = new SettingTelnet(); DragDrop.SetDropHandler(PART_RemoteTree, new RemoteTreeDropTarget()); DragDrop.SetDropTargetAdornerBrush(PART_RemoteTree, new SolidColorBrush(Color.FromRgb(33, 150, 243))); }
private async void DeleteRemoteItem(RemoteTreeViewItem selectItem) { MainWindow mainWindow = Window.GetWindow(this) as MainWindow; if (mainWindow != null) { var result = await mainWindow.ShowMessageAsync("提示", $"是否要删除 “{selectItem.Header}”", MessageDialogStyle.AffirmativeAndNegative); if (result == MessageDialogResult.Affirmative) { RemoteItems.Delete(selectItem); } } }
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { if (e.NewValue != null) { RemoteTreeViewItem selectItem = (RemoteTreeViewItem)e.NewValue; if (selectItem.RemoteType != RemoteType.dir) { ScrollViewer.Visibility = Visibility.Visible; RemoteItems.GetItemRemoteLink(selectItem.uuid); ScrollViewer.DataContext = RemoteItems.ItemRemoteLink; TextBox_Password.Password = RemoteItems.ItemRemoteLink.Password; TextBox_Name.Text = RemoteItems.ItemRemoteLink.Name; TextBox_Password.IsEnabled = true; _currentSetControl?.UnLoaded(); Grid_PrivateKey.Visibility = Visibility.Collapsed; if (selectItem.RemoteType == RemoteType.rdp) { _currentSetControl = PART_SettingRdp; } if (selectItem.RemoteType == RemoteType.ssh) { //加载私钥 if (RemoteItems.ItemRemoteLink.PrivateKey == null) { CheckBox_PrivateKey.IsChecked = false; } else { CheckBox_PrivateKey.IsChecked = true; } CheckBox_PrivateKey_Click(null, null); _currentSetControl = PART_SettingSsh; Grid_PrivateKey.Visibility = Visibility.Visible; } if (selectItem.RemoteType == RemoteType.telnet) { _currentSetControl = PART_SettingTelnet; } Expander_Setting.Content = _currentSetControl; _currentSetControl?.Loaded(RemoteItems.ItemRemoteLink); } else { ScrollViewer.Visibility = Visibility.Collapsed; } } }
private void TreeView_KeyDown(object sender, KeyEventArgs e) { RemoteTreeViewItem selectItem = TreeView_Item.SelectedItem as RemoteTreeViewItem; if (selectItem == null) { return; } if (e.Key == Key.F2) { selectItem.HeaderEdit(Home_Tree_EditHeaderClosing); } if (e.Key == Key.Delete) { RemoteItems.Delete(selectItem); } }
private void TreeView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { try { Point point = e.GetPosition(TreeView_Item); RemoteTreeViewItem element = TreeView_Item.GetElementFromPoint <RemoteTreeViewItem>(point); if (element != null) { if (element.IsHeaderEdit == false && element.RemoteType != RemoteType.dir) { RemoteItems.OpenRemote((RemoteTreeViewItem)TreeView_Item.SelectedItem, DbItemSetting.OPEN_DEFAULT); } } } catch (Exception ex) { MainWindow.ShowMessageDialog("错误", ex.Message); } }
/// <summary> /// Connect with remote host /// </summary> /// <param name="obj"></param> private void Connect(PasswordBox obj) { if (!IsConnected) { try { if (ProtocolMode.Equals("SFTP")) { _protocol = new Sftp(); } if (ProtocolMode.Equals("FTP")) { _protocol = new Ftp(); } if (ProtocolMode.Equals("FTPS")) { _protocol = new Ftps(); } IsConnected = _protocol.Connect(Server, Port, User, obj.Password); RemotePath = _protocol.WorkingDirectory(); if (IsConnected) { RemoteItems = new ObservableCollection <ProtocolItem>(_protocol.ListDirectory(RemotePath)); } } catch (Exception) { // We need some data } } else { IsConnected = !_protocol.Disconnect(); _protocol = null; RemotePath = null; RemoteItems.Clear(); Tasks.Clear(); } }
public async void Load() { GlobalSetting.LoadSetiing(); Home_Items = new Home_Remote(); Home_Setting = new Home_Setting(); Home_About = new Home_About(); HamburgerMenu.Content = Home_Items; RemoteItems.LoadItems(Home_Items.TreeView_Item); DateTime localDateTime = DateTime.Today; //DateTime localDateTime = new DateTime();//测试使用 每次都检查更新 if (UserSettings.FinalCheckDateTime != localDateTime) { UserSettings.FinalCheckDateTime = localDateTime; if (await Home_About.CheckUpdates()) { HamburgerMenu.Content = Home_About; HamburgerMenu.SelectedIndex = 2; } } }
private void Button_PrivateKey_Upload_Click(object sender, RoutedEventArgs e) { OpenFileDialog op = new OpenFileDialog(); //op.InitialDirectory=默认的打开路径 op.RestoreDirectory = true; op.Filter = "所有文件(*.*)|*.*"; op.ShowDialog(); if (!string.IsNullOrEmpty(op.FileName)) { FileInfo fileInfo = new FileInfo(op.FileName); if (fileInfo.Length <= 10000) { RemoteItems.ItemRemoteLink.PrivateKey = File.ReadAllText(op.FileName); TextBox_PrivateKey.Text = RemoteItems.ItemRemoteLink.PrivateKey; RemoteItems.UpdateItemRemoteLink(); } else { MainWindow.ShowMessageDialog("错误", "密钥文件不能大于10000个字节"); } } }
private void MenuItem_Click(object sender, RoutedEventArgs e) { try { MenuItem menuItem = sender as MenuItem; if (menuItem == null) { return; } RemoteTreeViewItem selectItem = (RemoteTreeViewItem)TreeView_Item.SelectedItem; RemoteTreeViewItem treeViewItem; switch (menuItem.Header.ToString()) { case "新建目录": treeViewItem = RemoteItems.Insert(RemoteType.dir, selectItem, "新建目录");; if (treeViewItem.IsVisible) { treeViewItem.Loaded += (treeItemsender, treeIteme) => treeViewItem.HeaderEdit(Home_Tree_EditHeaderClosing); } break; case "RDP连接": treeViewItem = RemoteItems.Insert(RemoteType.rdp, selectItem, "新建RDP连接"); if (treeViewItem.IsVisible) { treeViewItem.Loaded += (treeItemsender, treeIteme) => treeViewItem.HeaderEdit(Home_Tree_EditHeaderClosing); } break; case "SSH连接": treeViewItem = RemoteItems.Insert(RemoteType.ssh, selectItem, "新建SSH连接"); if (treeViewItem.IsVisible) { treeViewItem.Loaded += (treeItemsender, treeIteme) => treeViewItem.HeaderEdit(Home_Tree_EditHeaderClosing); } break; case "Telnet连接": treeViewItem = RemoteItems.Insert(RemoteType.telnet, selectItem, "新建Telnet连接"); if (treeViewItem.IsVisible) { treeViewItem.Loaded += (treeItemsender, treeIteme) => treeViewItem.HeaderEdit(Home_Tree_EditHeaderClosing); } break; case "删除": RemoteItems.Delete(selectItem); break; case "打开": RemoteItems.OpenRemote(selectItem, DbItemSetting.OPEN_TAB); break; case "打开(后台)": RemoteItems.OpenRemote(selectItem, DbItemSetting.OPEN_TAB_BACKSTAGE); break; case "打开(外部)": RemoteItems.OpenRemote(selectItem, DbItemSetting.OPEN_WINDOW); break; case "重命名": selectItem.HeaderEdit(Home_Tree_EditHeaderClosing); break; } } catch (Exception ex) { MainWindow.ShowMessageDialog("错误", ex.Message); } }
private void TreeView_KeyDown(object sender, KeyEventArgs e) { var selectItem = PART_RemoteTree.SelectedItem as RemoteTreeViewItem; if (selectItem != null) { if (e.Key == Key.F2) { selectItem.HeaderEdit(Home_Tree_EditHeaderClosing); } if (e.Key == Key.Delete) { DeleteRemoteItem(selectItem); } if (e.Key == Key.Enter) { if (selectItem == null) { return; } if (selectItem.RemoteType == RemoteType.dir) { selectItem.IsExpanded = !selectItem.IsExpanded; } else { RemoteItems.Open((RemoteTreeViewItem)PART_RemoteTree.SelectedItem, DbItemSetting.OPEN_DEFAULT); } } } //Ctrl if (Keyboard.Modifiers == ModifierKeys.Control) { if (e.Key == Key.C) { RemoteItems.Copy(selectItem); } if (e.Key == Key.X) { RemoteItems.Shear(selectItem); } if (e.Key == Key.V) { RemoteItems.Paste(selectItem); } } //Ctrl+Shift if ((Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Shift)) == (ModifierKeys.Control | ModifierKeys.Shift)) { if (e.Key == Key.N) { NewRemoteItem(selectItem, RemoteType.dir); } if (e.Key == Key.R) { NewRemoteItem(selectItem, RemoteType.rdp); } if (e.Key == Key.S) { NewRemoteItem(selectItem, RemoteType.ssh); } if (e.Key == Key.T) { NewRemoteItem(selectItem, RemoteType.telnet); } } }
private void MyExpander_IsExpanded(object sender, RoutedEventArgs e) { RemoteItems.UpdateItemRemoteLink(); }
public void Save() { UserSettings.HomeRemoteTreeView_Width = Grid_Main.ColumnDefinitions[0].Width; RemoteItems.UpdateExpandTreeItem(); }
private void Text_Screen_TextChanged(object sender, TextChangedEventArgs e) { RemoteItems.Screening(Text_Screen.Text); }
private void MenuItem_Click(object sender, RoutedEventArgs e) { try { MenuItem menuItem = sender as MenuItem; if (menuItem == null) { return; } RemoteTreeViewItem selectItem = (RemoteTreeViewItem)PART_RemoteTree.SelectedItem; if (menuItem.Name == "MenuItem_NewDir") { NewRemoteItem(selectItem, RemoteType.dir); } else if (menuItem.Name == "MenuItem_Newrdp") { NewRemoteItem(selectItem, RemoteType.rdp); } else if (menuItem.Name == "MenuItem_Newssh") { NewRemoteItem(selectItem, RemoteType.ssh); } else if (menuItem.Name == "MenuItem_NewTelnet") { NewRemoteItem(selectItem, RemoteType.telnet); } else if (menuItem.Name == "MenuItem_Delete") { DeleteRemoteItem(selectItem); } else if (menuItem.Name == "MenuItem_Link") { RemoteItems.Open(selectItem, DbItemSetting.OPEN_TAB); } else if (menuItem.Name == "MenuItem_LinkBackend") { RemoteItems.Open(selectItem, DbItemSetting.OPEN_TAB_BACKSTAGE); } else if (menuItem.Name == "MenuItem_LinkSeparate") { RemoteItems.Open(selectItem, DbItemSetting.OPEN_WINDOW); } else if (menuItem.Name == "MenuItem_Rename") { selectItem.HeaderEdit(Home_Tree_EditHeaderClosing); } else if (menuItem.Name == "MenuItem_Shear") { RemoteItems.Shear(selectItem); } else if (menuItem.Name == "MenuItem_Copy") { RemoteItems.Copy(selectItem); } else if (menuItem.Name == "MenuItem_Paste") { RemoteItems.Paste(selectItem); } } catch (Exception ex) { MainWindow.ShowMessageDialog("错误", ex.Message); } }