public static void ImportServersDialog(TreeNode parentGroup) { if (!ServerTree.Instance.AnyOpenedEditableFiles()) { NotifyUserFileNeeded(); return; } ServerPropertiesDialog dlg = ServerPropertiesDialog.NewImportDialog(GetParentGroupForServerAdd(parentGroup)); try { if (dlg.ShowDialog() == DialogResult.OK) { GroupBase group = dlg.PropertiesPage.ParentGroup; ServerTree.Instance.Operation(OperationBehavior.SuspendSort | OperationBehavior.SuspendUpdate | OperationBehavior.SuspendGroupChanged, delegate { Server server = dlg.AssociatedNode as Server; server.UpdateSettings(dlg); foreach (string serverName in (dlg.PropertiesPage as ImportServersPropertiesPage).ExpandedServerNames) { IEnumerable <Server> source = group.Nodes.OfType <Server>(); Func <Server, bool> predicate = (Server s) => s.ServerName == serverName; Server server2 = source.Where(predicate).FirstOrDefault(); if (server2 != null) { server2.UpdateFromTemplate(server); } else { Server.Create(serverName, dlg); } } }); FinishAddServers(group); } } finally { if (dlg != null) { ((IDisposable)dlg).Dispose(); } } }
public static void AddServersDialog(TreeNode suggestedParentNode) { if (!ServerTree.Instance.AnyOpenedEditableFiles()) { NotifyUserFileNeeded(); } else if (ServerTree.Instance.Nodes.OfType <FileGroup>().Any() || FormTools.YesNoDialog("RDCMan不允许混合使用服务器和组。 如果将服务器添加到顶级组,则将无法将任何组添加到该文件。 继续吗?") == DialogResult.Yes) { GroupBase groupBase = GetParentGroupForServerAdd(suggestedParentNode); ServerPropertiesDialog dlg = ServerPropertiesDialog.NewAddDialog(groupBase); if (dlg == null) { FormTools.InformationDialog(info1); return; } using (dlg) { if (dlg.ShowDialog() != DialogResult.OK) { return; } groupBase = dlg.PropertiesPage.ParentGroup; Server server = dlg.AssociatedNode as Server; server.UpdateSettings(dlg); ServerTree.Instance.Operation(OperationBehavior.SuspendSort | OperationBehavior.SuspendUpdate | OperationBehavior.SuspendGroupChanged, delegate { List <string> expandedServerNames = (dlg.PropertiesPage as ServerPropertiesTabPage).ExpandedServerNames; if (expandedServerNames.Count == 1) { Server.Create(dlg); } else { foreach (string item in expandedServerNames) { Server.Create(item, dlg); } } }); } FinishAddServers(groupBase); } }