public static FileGroupPropertiesDialog NewPropertiesDialog(FileGroup group, Form parentForm) { FileGroupPropertiesDialog fileGroupPropertiesDialog = new FileGroupPropertiesDialog(group, group.Text + " File Properties", "OK", parentForm); fileGroupPropertiesDialog.CreateControls(group); return(fileGroupPropertiesDialog); }
public void PopulateCredentialsProfiles(FileGroup file) { if (file == null || _file != file) { _file = file; PopulateCredentialsProfilesWorker(); } }
protected void PopulateCredentialsProfiles(GroupBase group) { FileGroup file = group?.FileGroup; foreach (ICredentialsTabPage item in base.TabPages.OfType <ICredentialsTabPage>()) { item.PopulateCredentialsProfiles(file); } }
public static void RefreshAll(FileGroup fileGroup) { AllSmartGroups.ForEach(delegate(SmartGroup group) { if (group.FileGroup == fileGroup) { group.Refresh(); } }); }
internal FileGroup GetSelectedFile() { FileGroup result = null; TreeNode selectedNode = base.SelectedNode; if (selectedNode != null) { result = (selectedNode as RdcTreeNode).FileGroup; } return(result); }
private static void OnGroupChanged(GroupChangedEventArgs e) { if (e.ChangeType.HasFlag(ChangeType.TreeChanged) || e.ChangeType.HasFlag(ChangeType.PropertyChanged)) { FileGroup fileGroup = e.Group.FileGroup; if (fileGroup != null) { fileGroup.HasChangedSinceWrite = true; } } }
protected virtual void ReadXml(XmlNode xmlNode, FileGroup fileGroup, ICollection <string> errors) { if (!string.IsNullOrEmpty(XmlNodeName)) { ReadXml(NodeActions, xmlNode, errors); if (base.Properties.Expanded.Value) { Expand(); } } }
public static void CloseFileGroup(FileGroup file) { file.AnyOrAllConnected(out bool anyConnected, out bool _); if (anyConnected) { DialogResult dialogResult = FormTools.YesNoDialog("There are active connections from " + file.Text + ". Are you sure you want to close it?"); if (dialogResult == DialogResult.No) { return; } } if (SaveFileGroup(file) != 0) { ServerTree.Instance.RemoveNode(file); Program.Preferences.NeedToSave = true; } }
private static void OpenFiles() { List <string> filesToOpen = Preferences.FilesToOpen; if (filesToOpen != null) { bool flag = true; foreach (string item in filesToOpen) { FileGroup fileGroup = RdgFile.OpenFile(item); if (fileGroup != null && flag) { flag = false; ServerTree.Instance.SelectedNode = fileGroup; } } } }
public static FileGroup NewFile() { using (SaveFileDialog saveFileDialog = new SaveFileDialog()) { saveFileDialog.Title = "New File"; saveFileDialog.Filter = "RDCMan Groups (*.rdg)|*.rdg"; saveFileDialog.AddExtension = true; saveFileDialog.CheckPathExists = true; saveFileDialog.InitialDirectory = GetWorkingDirectory(); saveFileDialog.RestoreDirectory = false; if (saveFileDialog.ShowDialog() != DialogResult.OK) { return(null); } FileGroup fileGroup = new FileGroup(saveFileDialog.FileName); ServerTree.Instance.AddNode(fileGroup, ServerTree.Instance.RootNode); DoSaveWithRetry(fileGroup); return(fileGroup); } }
protected virtual void WriteXml(XmlTextWriter tw, FileGroup file) { if (!string.IsNullOrEmpty(XmlNodeName)) { tw.WriteStartElement(XmlNodeName); if (file == null) { WriteXmlSettingsGroups(tw); } foreach (TreeNode node2 in base.Nodes) { TServerRef node = node2 as TServerRef; if (ShouldWriteNode(node, file)) { tw.WriteElementString("server", node.ServerNode.FullPath); } } tw.WriteEndElement(); } }
public AddCredentialsDialog(RdcTreeNode node) : base("添加凭据", "保存") { _file = node.FileGroup; int rowIndex = 0; int tabIndex = 0; _profileNameTextBox = FormTools.AddLabeledTextBox(this, "配置文件名:", ref rowIndex, ref tabIndex); _profileNameTextBox.Enabled = true; RdcTextBox profileNameTextBox = _profileNameTextBox; EventHandler value = delegate { _profileNameUserCreated = true; }; profileNameTextBox.TextChanged += value; _profileNameTextBox.Validate = ValidateProfileName; _logonCredentialsUI.AddControlsToParent(this, LogonCredentialsDialogOptions.None, ref rowIndex, ref tabIndex); _logonCredentialsUI.UserNameTextBox.TextChanged += CredentialsChanged; _logonCredentialsUI.DomainTextBox.TextChanged += CredentialsChanged; _logonCredentialsUI.EnableDisableControls(enable: true); FinalizeLayout(rowIndex, tabIndex); }
private static bool ReadXml(XmlNode topNode, FileGroup fileGroup, ICollection <string> errors) { string text = "unknown"; int num = 0; try { XmlNode namedItem = topNode.Attributes.GetNamedItem("programVersion"); text = namedItem.InnerText; } catch { } try { XmlNode namedItem2 = topNode.Attributes.GetNamedItem("schemaVersion"); num = int.Parse(namedItem2.InnerText); } catch { } fileGroup.SchemaVersion = num; if (num > 3) { DialogResult dialogResult = FormTools.YesNoDialog("{0} was written by a newer version of RDCMan ({1}). It may not load properly. If it does and is saved by this version, it will revert to the older file schema possibly losing information. Continue?".CultureFormat(fileGroup.GetFilename(), text)); if (dialogResult == DialogResult.No) { return(false); } } GroupBase.SchemaVersion = num; if (GroupBase.SchemaVersion <= 2) { fileGroup.EncryptionSettings.InheritSettingsType.Mode = InheritanceMode.None; } Dictionary <string, Helpers.ReadXmlDelegate> nodeActions = new Dictionary <string, Helpers.ReadXmlDelegate>(); nodeActions["file"] = delegate(XmlNode childNode, RdcTreeNode group, ICollection <string> errors2) { (group as GroupBase).ReadXml(childNode, errors2); }; foreach (IBuiltInVirtualGroup virtualGroup in Program.BuiltInVirtualGroups.Where((IBuiltInVirtualGroup v) => !string.IsNullOrEmpty(v.XmlNodeName))) { Helpers.ReadXmlDelegate readXmlDelegate2 = nodeActions[virtualGroup.XmlNodeName] = delegate(XmlNode childNode, RdcTreeNode group, ICollection <string> errors2) { virtualGroup.ReadXml(childNode, fileGroup, errors2); }; } nodeActions["version"] = delegate { }; LongRunningActionForm.PerformOperation("Opening " + fileGroup.Pathname, showImmediately: false, delegate { foreach (XmlNode childNode in topNode.ChildNodes) { if (nodeActions.TryGetValue(childNode.Name, out Helpers.ReadXmlDelegate value)) { value(childNode, fileGroup, errors); } else { errors.Add("Unexpected Xml node {0} in '{1}'".CultureFormat(childNode.GetFullPath(), fileGroup.GetFilename())); } } });
bool IBuiltInVirtualGroup.ShouldWriteNode(ServerRef serverRef, FileGroup file) { return(ShouldWriteNode(serverRef, file)); }
void IBuiltInVirtualGroup.WriteXml(XmlTextWriter tw, FileGroup fileGroup) { WriteXml(tw, fileGroup); }
void IBuiltInVirtualGroup.ReadXml(XmlNode xmlNode, FileGroup fileGroup, ICollection <string> errors) { ReadXml(xmlNode, fileGroup, errors); }
protected virtual bool ShouldWriteNode(RdcTreeNode node, FileGroup file) { return(node.FileGroup == file); }
private void PopulateNodeContextMenu(ContextMenuStrip menu, RdcTreeNode node) { menu.Items.Clear(); if (node == null) { if (AnyOpenedEditableFiles()) { menu.Items.Add(new DelegateMenuItem("添加服务器", MenuNames.EditAddServer, AddNodeDialogHelper.AddServersDialog)); menu.Items.Add(new DelegateMenuItem("导入服务器配置", MenuNames.EditImportServers, AddNodeDialogHelper.ImportServersDialog)); menu.Items.Add("-"); menu.Items.Add(new DelegateMenuItem("添加群组", MenuNames.EditAddGroup, AddNodeDialogHelper.AddGroupDialog)); } else { ToolStripMenuItem toolStripMenuItem = new ToolStripMenuItem("Please open or create a file"); toolStripMenuItem.Enabled = false; menu.Items.Add(toolStripMenuItem); } return; } GroupBase groupBase = node as GroupBase; if (groupBase != null) { groupBase.AnyOrAllConnected(out bool anyConnected, out bool allConnected); ToolStripMenuItem toolStripMenuItem = new DelegateMenuItem("整组连接", MenuNames.SessionConnect, groupBase.Connect); toolStripMenuItem.Enabled = !allConnected; menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("连接组为...", MenuNames.SessionConnectAs, groupBase.DoConnectAs); toolStripMenuItem.Enabled = !allConnected; menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("重连整组", MenuNames.SessionReconnect, groupBase.Reconnect); toolStripMenuItem.Enabled = anyConnected; menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("断开整组", MenuNames.SessionDisconnect, groupBase.Disconnect); toolStripMenuItem.Enabled = anyConnected; menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("登出整组", MenuNames.SessionLogOff, groupBase.LogOff); toolStripMenuItem.Enabled = (!Policies.DisableLogOff && anyConnected); menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("添加服务器", MenuNames.EditAddServer, delegate { AddNodeDialogHelper.AddServersDialog(node); }); toolStripMenuItem.Enabled = groupBase.CanAddServers(); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("添加群组", MenuNames.EditAddGroup, delegate { AddNodeDialogHelper.AddGroupDialog(node); }); toolStripMenuItem.Enabled = groupBase.CanAddGroups(); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("添加智能群组", MenuNames.EditAddSmartGroup, delegate { AddNodeDialogHelper.AddSmartGroupDialog(node); }); toolStripMenuItem.Enabled = groupBase.CanAddGroups(); menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); FileGroup file = node as FileGroup; if (file != null) { toolStripMenuItem = new DelegateMenuItem("保存 " + file.GetFilename(), MenuNames.FileSave, delegate { Program.TheForm.DoFileSave(file); }); toolStripMenuItem.Enabled = file.AllowEdit(popUI: false); menu.Items.Add(toolStripMenuItem); menu.Items.Add(new DelegateMenuItem("关闭 " + file.GetFilename(), MenuNames.FileClose, delegate { Program.TheForm.DoFileClose(file); })); } else { toolStripMenuItem = new DelegateMenuItem("删除服务器", MenuNames.EditRemoveServers, delegate { DoRemoveChildren(node); }); toolStripMenuItem.Enabled = groupBase.CanRemoveChildren(); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("删除群组", MenuNames.EditRemove, delegate { ConfirmRemove(node, askUser: true); }); toolStripMenuItem.Enabled = node.CanRemove(popUI: false); menu.Items.Add(toolStripMenuItem); } menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("属性", MenuNames.EditProperties, node.DoPropertiesDialog); toolStripMenuItem.Enabled = node.HasProperties; menu.Items.Add(toolStripMenuItem); } else { ServerBase server = node as ServerBase; MenuHelper.AddSessionMenuItems(menu, server); menu.Items.Add("-"); MenuHelper.AddDockingMenuItems(menu, server); menu.Items.Add("-"); MenuHelper.AddMaintenanceMenuItems(menu, server); } }
protected FileGroupPropertiesDialog(FileGroup group, string dialogTitle, string acceptButtonText, Form parentForm) : base(group, dialogTitle, acceptButtonText, parentForm) { }
protected override bool ShouldWriteNode(RdcTreeNode node, FileGroup file) { return(file == null); }
public SaveCredentialsDialog(FileGroup file, string name) : base("保存配置: " + name, "保存") { _file = file; InitializeComponent(name); }
public static FileGroup OpenFile(string filename) { using (Helpers.Timer("reading {0}", filename)) { XmlDocument xmlDocument = new XmlDocument(); XmlTextReader xmlTextReader = null; XmlNode topNode; try { xmlTextReader = new XmlTextReader(filename); xmlTextReader.WhitespaceHandling = WhitespaceHandling.None; xmlTextReader.MoveToContent(); topNode = xmlDocument.ReadNode(xmlTextReader); } catch (Exception ex) { FormTools.ErrorDialog(ex.Message); return(null); } finally { xmlTextReader?.Close(); } if (topNode == null) { throw new FileLoadException(filename + ": File format error"); } FileGroup fileGroup = new FileGroup(filename); FileGroup fileGroup2 = (from f in ServerTree.Instance.Nodes.OfType <FileGroup>() where f.Pathname.Equals(fileGroup.Pathname, StringComparison.OrdinalIgnoreCase) select f).FirstOrDefault(); if (fileGroup2 == null) { try { List <string> errors = new List <string>(); ServerTree.Instance.Operation((OperationBehavior)31, delegate { ServerTree.Instance.AddNode(fileGroup, ServerTree.Instance.RootNode); if (!ReadXml(topNode, fileGroup, errors)) { throw new Exception(string.Empty); } }); if (errors.Count > 0) { StringBuilder stringBuilder = new StringBuilder("The following errors were encountered:").AppendLine().AppendLine(); foreach (string item in errors) { stringBuilder.AppendLine(item); } stringBuilder.AppendLine().Append("The file was not loaded completely. If it is saved it almost certainly means losing information. Continue?"); DialogResult dialogResult = FormTools.ExclamationDialog(stringBuilder.ToString(), MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { throw new Exception(string.Empty); } } using (Helpers.Timer("sorting root, builtin groups and file")) { ServerTree.Instance.SortRoot(); foreach (GroupBase builtInVirtualGroup in Program.BuiltInVirtualGroups) { ServerTree.Instance.SortGroup(builtInVirtualGroup); ServerTree.Instance.OnGroupChanged(builtInVirtualGroup, ChangeType.TreeChanged); } ServerTree.Instance.SortGroup(fileGroup, recurse: true); ServerTree.Instance.OnGroupChanged(fileGroup, ChangeType.TreeChanged); } SmartGroup.RefreshAll(fileGroup); fileGroup.VisitNodes(delegate(RdcTreeNode node) { GroupBase groupBase = node as GroupBase; if (groupBase != null && groupBase.Properties.Expanded.Value) { groupBase.Expand(); } }); Encryption.DecryptPasswords(); fileGroup.CheckCredentials(); fileGroup.VisitNodes(delegate(RdcTreeNode n) { n.ResetInheritance(); }); fileGroup.HasChangedSinceWrite = false; Program.Preferences.NeedToSave = true; return(fileGroup); } catch (Exception ex2) { if (!string.IsNullOrEmpty(ex2.Message)) { FormTools.ErrorDialog(ex2.Message); } ServerTree.Instance.RemoveNode(fileGroup); return(null); } } FormTools.InformationDialog("{0} is already open as '{1}'".CultureFormat(fileGroup.Pathname, fileGroup2.Text)); return(fileGroup2); } }
public void CreateControls(bool inputServerName, LogonCredentials logonCredentials, ConnectionSettings connectionSettings, FileGroup fileGroup) { QuickConnectTabPage = new QuickConnectTabPage(this, logonCredentials); QuickConnectTabPage.CreateControls(inputServerName, fileGroup); AddTabPage(QuickConnectTabPage); connectionSettings.InheritSettingsType.Mode = InheritanceMode.Disabled; AddTabPage(connectionSettings.CreateTabPage(this)); InitButtons(); }