private void MoveToSelectedItem(ServerTreeViewModel serverTreeViewModel) { ServersTreeView.BringIntoView(serverTreeViewModel, false, true, ScrollToPosition.Center); ServersTreeView.SelectedItems.Clear(); ServersTreeView.SelectedItem = serverTreeViewModel; ServersTreeView_OnSelectionChanged(this, new ItemSelectionChangedEventArgs()); }
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; } } })); }
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; }
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(); }
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; }
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; }
public new void Load(ServersTreeView tree, Tabs _tabs) { this.Tree = tree; this.tabs = _tabs; }
public new void Load(ServersTreeView tree, Tabs _tabs) { this.Tree = tree; this.tabs = _tabs; }