protected void LoadConnectionGroups(
			ConnectionType     connectionType,
			ConnectionsManager connectionsManager)
		{
			List<ConnectionGroupInfo> groups = connectionsManager
				.GetDirectGroups(connectionType.Id);

			foreach (ConnectionGroupInfo groupInfo in groups)
			{
				List<InstanceInfo> instances     = groupInfo.Connections;
				InstanceInfo       firstInstance = instances.FirstOrDefault();

				if (firstInstance != null)
				{
					if (instances.Count == 1 && firstInstance.GetConnectionString().Equals(groupInfo.Name))
					{
						continue;
					}

					if (!instances.TrueForAll(i => i.IsDynamicConnection))
					{
						this.cmbConnection.Items.Add(groupInfo);
					}
				}
			}
		}
		protected void LoadConnectionInstances(
			ConnectionType     connectionType,
			ConnectionsManager connectionsManager
		)
		{
			// get distinct instances from sqlite database
			List<InstanceInfo> instances = connectionsManager
				.GetDistinctInstances(connectionType.Id);

			foreach (InstanceInfo instance in instances)
			{
				this.cmbConnection.Items.Add(instance);
			}
		}
		private void FillConnections(ConnectionType connectionType)
		{
			this.cmbConnection.Items.Clear();

			LoadConnectionGroups(connectionType, this._connectionsManager);
			LoadConnectionInstances(connectionType, this._connectionsManager);

			lstConnectionStrings.Items.Clear();

			foreach (InstanceInfo instance in this._connectionGroup.Connections)
			{
				lstConnectionStrings.Items.Add(instance);
			}
		}
		public List<BindingWrapper<ModuleType>> GetModuleTypes(ConnectionType connectionType)
		{
			List<BindingWrapper<ModuleType>> moduleTypes = new List<BindingWrapper<ModuleType>>();

			if (connectionType != null && connectionType.ModuleTypes != null && connectionType.ModuleTypes.Any())
			{
				foreach (ModuleType moduleType in connectionType.ModuleTypes)
				{
					BindingWrapper<ModuleType> wrapper = new BindingWrapper<ModuleType>(
						moduleType,
						m =>
						{
							i18n localeItem = m.Locales.FirstOrDefault(
								l => l.Language == Settings.InterfaceLanguage
							);

							string displayName = localeItem != null
								? localeItem.Text
								: m.Id;

							return displayName.RemoveWhitespaces();
						}
					);

					moduleTypes.Add(wrapper);
				}
			}

			return moduleTypes;
		}