예제 #1
0
        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);
        }
예제 #3
0
        // 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));
        }
예제 #5
0
 TwoFilesConfiguration(ConfigFileUse configFileUse, Configuration applicationConfiguration,
                       string userConfigFilePath, Configuration userConfiguration)
 {
     ConfigFileUse = configFileUse;
     this.applicationConfiguration = applicationConfiguration;
     this.userConfigFilePath       = userConfigFilePath;
     this.userConfiguration        = userConfiguration;
 }
예제 #6
0
        /// <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));
        }
예제 #7
0
        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;
            }
        }
예제 #8
0
        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));
        }
예제 #9
0
        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));
            }
        }
예제 #10
0
        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);
        }
예제 #11
0
        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);
        }
예제 #12
0
        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);
            }
        }
예제 #13
0
        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);
        }
예제 #15
0
        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);
        }
예제 #17
0
 static bool UseUserConfig(ConfigFileUse configFileUse)
 {
     return((configFileUse & ConfigFileUse.AccessUserConfig) != ConfigFileUse.None);
 }