Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
 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();
     }
 }
Beispiel #5
0
        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)));
        }
Beispiel #6
0
        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);
                }
            }
        }
Beispiel #7
0
        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);
     }
 }
Beispiel #10
0
        /// <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();
            }
        }
Beispiel #11
0
        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;
                }
            }
        }
Beispiel #12
0
        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个字节");
                }
            }
        }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
        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);
                }
            }
        }
Beispiel #15
0
 private void MyExpander_IsExpanded(object sender, RoutedEventArgs e)
 {
     RemoteItems.UpdateItemRemoteLink();
 }
Beispiel #16
0
 public void Save()
 {
     UserSettings.HomeRemoteTreeView_Width = Grid_Main.ColumnDefinitions[0].Width;
     RemoteItems.UpdateExpandTreeItem();
 }
Beispiel #17
0
 private void Text_Screen_TextChanged(object sender, TextChangedEventArgs e)
 {
     RemoteItems.Screening(Text_Screen.Text);
 }
Beispiel #18
0
 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);
     }
 }