public OptionForm(MainSettings mainSettings, ConfigFileUse configFileUse) { originalConfigFileUse = configFileUse; InitializeComponent(); // Put data in the list controls cboConnectivityMode.DataSource = Enum.GetValues(typeof(ConnectivityMode)); cboEncodingType.DataSource = Enum.GetValues(typeof(EncodingType)); cboConfigFile.DataSource = ConfigUseForUI; foreach (var item in ConfigurationHelper.Entities) { cboSelectedEntities.Items.Add(item); } foreach (var item in ConfigurationHelper.MessageCounts) { cboSelectedMessageCounts.Items.Add(item); } MainSettings = mainSettings; ConfigFileUse = configFileUse; cboConfigFile.SelectedIndex = GetIndexForConfigFileUseUIString(ConfigFileUse); NodesColorInfoBindingList.ListChanged += NodesColorsListChanged; nodeColorsBindingSource.DataSource = NodesColorInfoBindingList; ShowSettings(mainSettings); }
public static void UpdateServiceBusNamespace(ConfigFileUse configFileUse, string key, string newKey, string newValue, WriteToLogDelegate writeToLog) { var configuration = TwoFilesConfiguration.Create(configFileUse, writeToLog); configuration.UpdateEntryInDictionarySection(SERVICEBUS_SECTION_NAME, key, newKey, newValue, writeToLog); }
// This is the normal way to create it public static TwoFilesConfiguration Create(ConfigFileUse configFileUse, WriteToLogDelegate writeToLog = null) { var userConfigFilePath = GetUserSettingsFilePath(); return(Create(userConfigFilePath, configFileUse, writeToLog)); }
public static MainSettings GetMainProperties(ConfigFileUse configFileUse, MainSettings currentSettings, WriteToLogDelegate writeToLog) { var configuration = TwoFilesConfiguration.Create(configFileUse, writeToLog); return(GetMainSettingsUsingConfiguration(configuration, currentSettings, writeToLog)); }
TwoFilesConfiguration(ConfigFileUse configFileUse, Configuration applicationConfiguration, string userConfigFilePath, Configuration userConfiguration) { ConfigFileUse = configFileUse; this.applicationConfiguration = applicationConfiguration; this.userConfigFilePath = userConfigFilePath; this.userConfiguration = userConfiguration; }
/// <summary> /// This method is meant to only be called for unit testing, to avoid polluting /// neither the application config file for the executable running the unit /// tests nor the user config file. /// </summary> public static TwoFilesConfiguration Create(string userConfigFilePath, ConfigFileUse configFileUse, WriteToLogDelegate writeToLog = null) { var applicationConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); return(CreateConfiguration(applicationConfiguration, userConfigFilePath, configFileUse, writeToLog)); }
public ConnectForm(ServiceBusHelper serviceBusHelper, ConfigFileUse configFileUse) { InitializeComponent(); this.configFileUse = configFileUse; SetConfigFileUseLabelText(lblConfigFileUse); this.serviceBusHelper = serviceBusHelper; cboServiceBusNamespace.Items.Add(SelectServiceBusNamespace); cboServiceBusNamespace.Items.Add(EnterConnectionString); if (serviceBusHelper.ServiceBusNamespaces != null) { // ReSharper disable CoVariantArrayConversion cboServiceBusNamespace.Items.AddRange(serviceBusHelper.ServiceBusNamespaces.Keys.OrderBy(s => s).ToArray()); // ReSharper restore CoVariantArrayConversion } ConnectivityMode = ServiceBusHelper.ConnectivityMode; cboConnectivityMode.DataSource = Enum.GetValues(typeof(ConnectivityMode)); cboConnectivityMode.SelectedItem = ConnectivityMode; UseAmqpWebSockets = ServiceBusHelper.UseAmqpWebSockets; useAmqpWebSocketsCheckBox.Checked = UseAmqpWebSockets; cboTransportType.DataSource = Enum.GetValues(typeof(TransportType)); var settings = new MessagingFactorySettings(); cboTransportType.SelectedItem = settings.TransportType; cboServiceBusNamespace.SelectedIndex = connectionStringIndex > 0 ? connectionStringIndex : 0; if (cboServiceBusNamespace.Text == EnterConnectionString) { txtUri.Text = connectionString; } txtQueueFilterExpression.Text = FilterExpressionHelper.QueueFilterExpression; txtTopicFilterExpression.Text = FilterExpressionHelper.TopicFilterExpression; txtSubscriptionFilterExpression.Text = FilterExpressionHelper.SubscriptionFilterExpression; btnOk.Enabled = cboServiceBusNamespace.SelectedIndex > 1 || (cboServiceBusNamespace.Text == EnterConnectionString && !string.IsNullOrWhiteSpace(connectionString)); foreach (var item in ConfigurationHelper.Entities) { cboSelectedEntities.Items.Add(item); } foreach (var item in MainForm.SingletonMainForm.SelectedEntities) { cboSelectedEntities.CheckBoxItems[item].Checked = true; } }
static TwoFilesConfiguration CreateConfiguration(Configuration applicationConfiguration, string userConfigFilePath, ConfigFileUse configFileUse, WriteToLogDelegate writeToLog = null) { if (!userConfigPathHasBeenShown && writeToLog != null) { userConfigPathHasBeenShown = true; string configFileUseInfo; switch (configFileUse) { case ConfigFileUse.ApplicationConfig: configFileUseInfo = $"The file {applicationConfiguration.FilePath} is used" + " for the configuration settings."; break; case ConfigFileUse.UserConfig: configFileUseInfo = $"The file {userConfigFilePath} is used" + " for the configuration settings."; break; case ConfigFileUse.BothConfig: configFileUseInfo = $"The files {userConfigFilePath} and {applicationConfiguration.FilePath} are used" + " for the configuration settings."; break; default: throw new InvalidOperationException("Unexptected value"); } writeToLog(configFileUseInfo); if (UseUserConfig(configFileUse) && !File.Exists(userConfigFilePath)) { writeToLog($" The file {userConfigFilePath} does not currently exist though, but will be" + " automatically created if any connection string or setting is changed."); } } if (File.Exists(userConfigFilePath)) { Configuration userConfiguration = OpenUserConfiguration(userConfigFilePath); return(new TwoFilesConfiguration(configFileUse, applicationConfiguration, userConfigFilePath, userConfiguration)); } return(new TwoFilesConfiguration(configFileUse, applicationConfiguration, userConfigFilePath, null)); }
int GetIndexForConfigFileUseUIString(ConfigFileUse configFileUse) { switch (configFileUse) { case ConfigFileUse.None: case ConfigFileUse.ApplicationConfig: return(ApplicationConfigFileIndex); case ConfigFileUse.UserConfig: return(UserConfigFileIndex); case ConfigFileUse.BothConfig: return(BothConfigFileIndex); default: throw new InvalidDataException("Unexpected value passed to " + nameof(GetIndexForConfigFileUseUIString)); } }
void cboConfigFile_SelectionChangeCommitted(object sender, EventArgs e) { // Check if there is a difference compared to the configuration we are switching to var defaultProperties = new MainSettings(); defaultProperties.SetDefault(); var resultingProperties = ConfigurationHelper.GetMainProperties( GetConfigFileUseFromUIIndex(cboConfigFile.SelectedIndex), defaultProperties, null); if (MainSettings.Equals(resultingProperties)) { lastConfigFileIndex = cboConfigFile.SelectedIndex; ConfigFileUse = GetConfigFileUseFromUIIndex(lastConfigFileIndex); return; } var answer = MessageBox.Show("One or more settings are different in the configuration file selected. " + "Do you want to use the settings from " + $"{ConfigUseForUI[cboConfigFile.SelectedIndex]}?", "Use new config file settings", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); switch (answer) { case DialogResult.Yes: GetAndShowProperties(cboConfigFile.SelectedIndex); break; case DialogResult.No: break; case DialogResult.Cancel: cboConfigFile.SelectedIndex = lastConfigFileIndex; return; // Don't do anything else default: throw new InvalidDataException("Unexpected value returned from MessageBox."); } // We get if either Yes or No was selected lastConfigFileIndex = cboConfigFile.SelectedIndex; ConfigFileUse = GetConfigFileUseFromUIIndex(lastConfigFileIndex); }
public OptionForm(MainSettings mainSettings, ConfigFileUse configFileUse) { InitializeComponent(); // Put data in the list controls cboConnectivityMode.DataSource = Enum.GetValues(typeof(ConnectivityMode)); cboEncodingType.DataSource = Enum.GetValues(typeof(EncodingType)); cboConfigFile.DataSource = ConfigUseForUI; foreach (var item in ConfigurationHelper.Entities) { cboSelectedEntities.Items.Add(item); } MainSettings = mainSettings; ConfigFileUse = configFileUse; cboConfigFile.SelectedIndex = GetIndexForConfigFileUseUIString(ConfigFileUse); ShowSettings(mainSettings); }
public static void SaveConfigFileUse(ConfigFileUse configFileUse) { // If it is userconfig then we put it in the user config file. // If it is bothconfig then we also put it in the user config file. // But if it is applicationconfig then we remove the setting from the user file and // set it in the application file. if (UseUserConfig(configFileUse)) { var configuration = Create(ConfigFileUse.UserConfig); configuration.SetValue(ConfigurationParameters.ConfigurationConfigFileParameter, configFileUse); } else // Put it in the application config file and remove it from the user config { var userConfiguration = Create(ConfigFileUse.ApplicationConfig); userConfiguration.SetValue(ConfigurationParameters.ConfigurationConfigFileParameter, configFileUse); var appConfiguration = Create(ConfigFileUse.UserConfig); appConfiguration.SetValue(ConfigurationParameters.ConfigurationConfigFileParameter, configFileUse); } }
void SaveSettings(ConfigFileUse configFileUse) { var defaultSettings = MainSettings.GetDefault(); var readSettings = ConfigurationHelper.GetMainProperties(configFileUse, defaultSettings, writeToLog: null); var configuration = TwoFilesConfiguration.Create(configFileUse); configuration.SetValue(ConfigurationParameters.ConfigurationConfigFileParameter, configFileUse); SaveSetting(configuration, readSettings, ConfigurationParameters.LogFontSize, MainSettings.LogFontSize); SaveSetting(configuration, readSettings, ConfigurationParameters.TreeViewFontSize, MainSettings.TreeViewFontSize); SaveSetting(configuration, readSettings, ConfigurationParameters.ShowMessageCountParameter, MainSettings.ShowMessageCount); SaveSetting(configuration, readSettings, ConfigurationParameters.SaveMessageToFileParameter, MainSettings.SaveMessageToFile); SaveSetting(configuration, readSettings, ConfigurationParameters.UseAsciiParameter, MainSettings.UseAscii); SaveSetting(configuration, readSettings, ConfigurationParameters.SavePropertiesToFileParameter, MainSettings.SavePropertiesToFile); SaveSetting(configuration, readSettings, ConfigurationParameters.SaveCheckpointsToFileParameter, MainSettings.SaveCheckpointsToFile); SaveSetting(configuration, readSettings, ConfigurationParameters.RetryCountParameter, MainSettings.RetryCount); SaveSetting(configuration, readSettings, ConfigurationParameters.RetryTimeoutParameter, MainSettings.RetryTimeout); SaveSetting(configuration, readSettings, ConfigurationParameters.TopParameter, MainSettings.TopCount); SaveSetting(configuration, readSettings, ConfigurationParameters.ReceiveTimeoutParameter, MainSettings.ReceiveTimeout); SaveSetting(configuration, readSettings, ConfigurationParameters.ServerTimeoutParameter, MainSettings.ServerTimeout); SaveSetting(configuration, readSettings, ConfigurationParameters.SenderThinkTimeParameter, MainSettings.SenderThinkTime); SaveSetting(configuration, readSettings, ConfigurationParameters.ReceiverThinkTimeParameter, MainSettings.ReceiverThinkTime); SaveSetting(configuration, readSettings, ConfigurationParameters.MonitorRefreshIntervalParameter, MainSettings.MonitorRefreshInterval); SaveSetting(configuration, readSettings, ConfigurationParameters.PrefetchCountParameter, MainSettings.PrefetchCount); SaveSetting(configuration, readSettings, ConfigurationParameters.LabelParameter, MainSettings.Label); SaveSetting(configuration, readSettings, ConfigurationParameters.MessageParameter, MainSettings.MessageText); SaveSetting(configuration, readSettings, ConfigurationParameters.FileParameter, MainSettings.MessageFile); SaveSetting(configuration, readSettings, ConfigurationParameters.ConnectivityMode, MainSettings.ConnectivityMode); SaveSetting(configuration, readSettings, ConfigurationParameters.Encoding, MainSettings.EncodingType); SaveListSetting(configuration, readSettings, ConfigurationParameters.SelectedEntitiesParameter, MainSettings.SelectedEntities); SaveSetting(configuration, readSettings, ConfigurationParameters.MessageBodyType, MainSettings.MessageBodyType); configuration.Save(); }
public static void RemoveServiceBusNamespace(ConfigFileUse configFileUse, string key, WriteToLogDelegate writeToLog) { var configuration = TwoFilesConfiguration.Create(configFileUse, writeToLog); configuration.RemoveEntryFromDictionarySection(SERVICEBUS_SECTION_NAME, key, writeToLog); }
void SaveSettings(ConfigFileUse configFileUse) { var defaultSettings = MainSettings.GetDefault(); var readSettings = ConfigurationHelper.GetMainProperties(configFileUse, defaultSettings, writeToLog: null); // Special case: if we have switched from user config file to application config file, // we still have to update that particular setting in the user config file, or it won't // persist through program restart. if (originalConfigFileUse != ConfigFileUse.ApplicationConfig && configFileUse == ConfigFileUse.ApplicationConfig) { var userConfiguration = TwoFilesConfiguration.Create(ConfigFileUse.UserConfig); userConfiguration.SetValue(ConfigurationParameters.ConfigurationConfigFileParameter, configFileUse); userConfiguration.Save(); } var configuration = TwoFilesConfiguration.Create(configFileUse); configuration.SetValue(ConfigurationParameters.ConfigurationConfigFileParameter, configFileUse); SaveSetting(configuration, readSettings, ConfigurationParameters.LogFontSize, MainSettings.LogFontSize); SaveSetting(configuration, readSettings, ConfigurationParameters.TreeViewFontSize, MainSettings.TreeViewFontSize); SaveSetting(configuration, readSettings, ConfigurationParameters.ShowMessageCountParameter, MainSettings.ShowMessageCount); SaveSetting(configuration, readSettings, ConfigurationParameters.SaveMessageToFileParameter, MainSettings.SaveMessageToFile); SaveSetting(configuration, readSettings, ConfigurationParameters.UseAsciiParameter, MainSettings.UseAscii); SaveSetting(configuration, readSettings, ConfigurationParameters.SavePropertiesToFileParameter, MainSettings.SavePropertiesToFile); SaveSetting(configuration, readSettings, ConfigurationParameters.SaveCheckpointsToFileParameter, MainSettings.SaveCheckpointsToFile); SaveSetting(configuration, readSettings, ConfigurationParameters.RetryCountParameter, MainSettings.RetryCount); SaveSetting(configuration, readSettings, ConfigurationParameters.RetryTimeoutParameter, MainSettings.RetryTimeout); SaveSetting(configuration, readSettings, ConfigurationParameters.TopParameter, MainSettings.TopCount); SaveSetting(configuration, readSettings, ConfigurationParameters.ReceiveTimeoutParameter, MainSettings.ReceiveTimeout); SaveSetting(configuration, readSettings, ConfigurationParameters.ServerTimeoutParameter, MainSettings.ServerTimeout); SaveSetting(configuration, readSettings, ConfigurationParameters.SenderThinkTimeParameter, MainSettings.SenderThinkTime); SaveSetting(configuration, readSettings, ConfigurationParameters.ReceiverThinkTimeParameter, MainSettings.ReceiverThinkTime); SaveSetting(configuration, readSettings, ConfigurationParameters.MonitorRefreshIntervalParameter, MainSettings.MonitorRefreshInterval); SaveSetting(configuration, readSettings, ConfigurationParameters.PrefetchCountParameter, MainSettings.PrefetchCount); SaveSetting(configuration, readSettings, ConfigurationParameters.LabelParameter, MainSettings.Label); SaveSetting(configuration, readSettings, ConfigurationParameters.MessageParameter, MainSettings.MessageText); SaveSetting(configuration, readSettings, ConfigurationParameters.FileParameter, MainSettings.MessageFile); SaveSetting(configuration, readSettings, ConfigurationParameters.MessageContentTypeParameter, MainSettings.MessageContentType); SaveSetting(configuration, readSettings, ConfigurationParameters.ConnectivityMode, MainSettings.ConnectivityMode); SaveSetting(configuration, readSettings, ConfigurationParameters.UseAmqpWebSockets, MainSettings.UseAmqpWebSockets); SaveSetting(configuration, readSettings, ConfigurationParameters.Encoding, MainSettings.EncodingType); SaveListSetting(configuration, readSettings, ConfigurationParameters.SelectedEntitiesParameter, MainSettings.SelectedEntities); SaveListSetting(configuration, readSettings, ConfigurationParameters.SelectedMessageCountsParameter, MainSettings.SelectedMessageCounts); SaveSetting(configuration, readSettings, ConfigurationParameters.MessageBodyType, MainSettings.MessageBodyType); SaveSetting(configuration, readSettings, ConfigurationParameters.DisableAccidentalDeletionPrevention, MainSettings.DisableAccidentalDeletionPrevention); SaveSetting(configuration, readSettings, ConfigurationParameters.ProxyOverrideDefault, MainSettings.ProxyOverrideDefault); SaveSetting(configuration, readSettings, ConfigurationParameters.ProxyAddress, MainSettings.ProxyAddress); SaveSetting(configuration, readSettings, ConfigurationParameters.ProxyBypassList, MainSettings.ProxyBypassList); SaveSetting(configuration, readSettings, ConfigurationParameters.ProxyBypassOnLocal, MainSettings.ProxyBypassOnLocal); SaveSetting(configuration, readSettings, ConfigurationParameters.ProxyUseDefaultCredentials, MainSettings.ProxyUseDefaultCredentials); SaveSetting(configuration, readSettings, ConfigurationParameters.ProxyUserName, MainSettings.ProxyUserName); SaveSetting(configuration, readSettings, ConfigurationParameters.ProxyPassword, MainSettings.ProxyPassword); SaveSetting(configuration, readSettings, ConfigurationParameters.NodesColors, NodeColorInfo.FormatAll(MainSettings.NodesColors)); configuration.Save(); }
public static void AddServiceBusNamespace(ConfigFileUse configFileUse, string key, string value, WriteToLogDelegate writeToLog) { var configuration = TwoFilesConfiguration.Create(configFileUse, writeToLog); configuration.AddEntryToDictionarySection(SERVICEBUS_SECTION_NAME, key, value); }
static bool UseUserConfig(ConfigFileUse configFileUse) { return((configFileUse & ConfigFileUse.AccessUserConfig) != ConfigFileUse.None); }