private void MoveToSelectedItem(ServerTreeViewModel serverTreeViewModel)
 {
     ServersTreeView.BringIntoView(serverTreeViewModel, false, true, ScrollToPosition.Center);
     ServersTreeView.SelectedItems.Clear();
     ServersTreeView.SelectedItem = serverTreeViewModel;
     ServersTreeView_OnSelectionChanged(this, new ItemSelectionChangedEventArgs());
 }
Exemplo n.º 2
0
        private void MoveToSelectedItem(IVirtualTree serverTreeViewModel)
        {
            serverTreeViewModel.IsExpanded = true;
            var parent = serverTreeViewModel.Parent;

            while (parent != null)
            {
                parent.IsExpanded = true;
                parent            = parent.Parent;
            }

            Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Render, new Action(() =>
            {
                var treeViewItem = ServersTreeView.GetContainerFromItem(serverTreeViewModel);
                if (treeViewItem != null)
                {
                    ServersTreeView.BringIntoView(treeViewItem);
                    if (ServersTreeView.SelectedItems.Count == 1 && ReferenceEquals(ServersTreeView.SelectedItem, treeViewItem.Header))
                    {
                        //Fix a weird selection action
                    }
                    else
                    {
                        ServersTreeView.ClearSelection();
                        serverTreeViewModel.IsSelected = true;
                    }
                }
            }));
        }
Exemplo n.º 3
0
 public RemoteServerNode(ServersTreeView treeView, Data.RemoteServer _serverData)
     : base(treeView, "/", _serverData, _serverData.ToString())
 {
     this.ServerData         = _serverData;
     this.ImageIndex         = ServersTreeView.RemoteServerIcon;
     this.SelectedImageIndex = this.ImageIndex;
 }
 public RemoteServerNode(ServersTreeView treeView, Data.RemoteServer _serverData)
     : base(treeView, "/", _serverData, _serverData.ToString())
 {
     this.ServerData = _serverData;
     this.ImageIndex = ServersTreeView.RemoteServerIcon;
     this.SelectedImageIndex = this.ImageIndex;
 }
 public ServerNode(ServersTreeView treeView, DirectoryInfo directoryInfo, Data.Server _serverData)
     : base(treeView, directoryInfo, _serverData.ToString())
 {
     this.serverData = _serverData;
     this.directory = directoryInfo;
     this.ImageIndex = ServersTreeView.LocalServerIcon;
     this.SelectedImageIndex = this.ImageIndex;
 }
 public ServerNode(ServersTreeView treeView, DirectoryInfo directoryInfo, Data.Server _serverData)
     : base(treeView, directoryInfo, _serverData.ToString())
 {
     this.serverData         = _serverData;
     this.directory          = directoryInfo;
     this.ImageIndex         = ServersTreeView.LocalServerIcon;
     this.SelectedImageIndex = this.ImageIndex;
 }
Exemplo n.º 7
0
 public ServerNode(ServersTreeView treeView, DirectoryInfo directoryInfo, Data.Server _serverData)
     : base(treeView, directoryInfo, _serverData.ToString())
 {
     IgnoredFiles.Add("ServerManagerData.xml");
     IgnoredFiles.Add("eula.txt");
     IgnoredFiles.Add("server.jar");
     serverData = _serverData;
     directory = directoryInfo;
     ImageIndex = ServersTreeView.LocalServerIcon;
     SelectedImageIndex = ImageIndex;
 }
        public DirectoryNode(ServersTreeView treeView, DirectoryInfo directoryInfo, string name)
            : base(name)
        {
            directory = directoryInfo;

            timer.Tick += new EventHandler(timer_tick);
            timer.Interval = 100;
            timer.Start();

            treeView.Nodes.Add(this);

            Virtualize();
        }
        public DirectoryNode(ServersTreeView treeView, DirectoryInfo directoryInfo, string name)
            : base(name)
        {
            this.directory = directoryInfo;

            this.timer.Tick    += new EventHandler(timer_tick);
            this.timer.Interval = 100;
            this.timer.Start();

            treeView.Nodes.Add(this);

            Virtualize();
        }
Exemplo n.º 10
0
        private void DeleteButton_Click(object sender, RoutedEventArgs e)
        {
            var deleteItems = ServersTreeView.SelectedItems.ToArray();

            foreach (var selectedItem in deleteItems)
            {
                if (selectedItem is ServerTreeViewModel st)
                {
                    ServerTreeViewModel.Remove(ServerViewModel.ServersTreeViewCollection, st);
                }
            }
            //Fix weird selections
            ServersTreeView.ClearSelection();
        }
        public RemoteDirectoryNode(ServersTreeView treeView, string _directory, Data.RemoteServer _data, string name)
            : base(name)
        {
            this.data      = _data;
            this.directory = _directory;

            this.timer.Tick    += new EventHandler(timer_tick);
            this.timer.Interval = 100;
            this.timer.Start();

            treeView.Nodes.Add(this);

            Virtualize();
        }
        public RemoteDirectoryNode(ServersTreeView treeView, string _directory, Data.RemoteServer _data, string name)
            : base(name)
        {
            this.data = _data;
            this.directory = _directory;

            this.timer.Tick += new EventHandler(timer_tick);
            this.timer.Interval = 100;
            this.timer.Start();

            treeView.Nodes.Add(this);

            Virtualize();
        }
        private void LoadCurrentConfiguration(bool scrollToSelectedItem)
        {
            _modifiedConfiguration = Global.Load();
            ServerConfigViewModel.ReadServers(_modifiedConfiguration.Configs);

            ServersTreeView.ExpandAll();
            ServersTreeView.CollapseAll();

            if (scrollToSelectedItem)
            {
                MoveToSelectedItem(_modifiedConfiguration.Index);
            }

            ApplyButton.IsEnabled = false;
        }
Exemplo n.º 14
0
        private void ServersTreeView_OnDragEnd(object sender, DragTreeViewItemAdvEventArgs e)
        {
            //Fix weird selections
            ServersTreeView.ClearSelection();

            var draggingItems = new List <ServerTreeViewModel>();

            foreach (var draggingItem in e.DraggingItems)
            {
                if (draggingItem.Header is ServerTreeViewModel st)
                {
                    draggingItems.Add(st);
                }
                else
                {
                    goto Skip;
                }
            }
            var types = new HashSet <ServerTreeViewType>(draggingItems.Select(items => items.Type));

            if (types.Count == 1)
            {
                var type = types.First();
                switch (type)
                {
                case ServerTreeViewType.Subtag:
                    e.Cancel = !(e.TargetDropItem is TreeViewAdv);
                    return;

                case ServerTreeViewType.Group:
                    //移到相同订阅组上会被吃掉
                    if (e.DropIndex < 0)
                    {
                        goto Skip;
                    }
                    //属于同样的订阅
                    if (e.TargetDropItem is TreeViewItemAdv treeViewItem)
                    {
                        if (treeViewItem.Header is ServerTreeViewModel st && st.Type == ServerTreeViewType.Subtag)
                        {
                            if (draggingItems.All(draggingItem => draggingItem.Parent == st))
                            {
                                e.Cancel = false;
                                return;
                            }
                        }
                    }
                    break;

                case ServerTreeViewType.Server:
                    //属于同一个订阅
                    var subs = new HashSet <string>();
                    foreach (var draggingItem in draggingItems)
                    {
                        var parent = draggingItem.Parent;
                        while (parent.Parent != null)
                        {
                            parent = parent.Parent;
                        }
                        if (parent is ServerTreeViewModel parentModel)
                        {
                            subs.Add(parentModel.Name);
                            continue;
                        }
                        goto Skip;
                    }
                    if (subs.Count != 1)
                    {
                        goto Skip;
                    }
                    var sub = subs.First();
                    //且 目标为群组或原版的订阅连接
                    if (e.TargetDropItem is TreeViewItemAdv treeViewItemAdv)
                    {
                        if (treeViewItemAdv.Header is ServerTreeViewModel st)
                        {
                            switch (st.Type)
                            {
                            case ServerTreeViewType.Subtag:
                            {
                                //移到相同订阅组上会被吃掉
                                if (e.DropIndex < 0)
                                {
                                    goto Skip;
                                }
                                //原版的订阅连接
                                if (draggingItems.All(draggingItem => draggingItem.Parent == st))
                                {
                                    e.Cancel = false;
                                    return;
                                }
                                break;
                            }

                            case ServerTreeViewType.Group:
                            {
                                //相同订阅组
                                if (st.Parent is ServerTreeViewModel targetParent && sub == targetParent.Name)
                                {
                                    //同一个组
                                    var parents = new HashSet <IVirtualTree>(draggingItems.Select(items => items.Parent));
                                    if (parents.Count != 1)
                                    {
                                        goto Skip;
                                    }
                                    var parent = parents.First();
                                    if (e.DropIndex < 0 && parent == st)
                                    {
                                        goto Skip;
                                    }

                                    foreach (var draggingItem in draggingItems)
                                    {
                                        var first = st.Nodes.FirstOrDefault();
                                        draggingItem.Server.Group = first != null ? first.Server.Group :
                                                                    st.Name != I18NUtil.GetAppStringValue(@"EmptyGroup") ? st.Name :
                                                                    string.Empty;
                                        draggingItem.Parent = st;
                                    }
                                    e.Cancel = false;
                                    return;
                                }
                                break;
                            }
                            }
                        }
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
Skip:
            e.Cancel = true;
        }
Exemplo n.º 15
0
 public new void Load(ServersTreeView tree, Tabs _tabs)
 {
     this.Tree = tree;
     this.tabs = _tabs;
 }
Exemplo n.º 16
0
 public new void Load(ServersTreeView tree, Tabs _tabs)
 {
     this.Tree = tree;
     this.tabs = _tabs;
 }