private void AddDb_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                NpgsqlConnectionStringBuilder connectionBuilder;
                var addDbWindow = new AddDbWindow();
                if (addDbWindow.ShowDialog() == true)
                {
                    connectionBuilder = NpgsqlCommunication.CreateConnectionStringBuilder(
                        addDbWindow.Server, addDbWindow.Port, addDbWindow.Database,
                        addDbWindow.User, addDbWindow.Password);

                    var connection = new NpgsqlConnection(connectionBuilder.ConnectionString);
                    connection.Open();

                    if (connection.State == ConnectionState.Open)
                    {
                        MessageBox.Show("The connection to " + addDbWindow.Database + " was successful. Database saved",
                                        "Connected", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Failed to connect to database, maybe server is closed or your input is wrong.",
                                        "Failure", MessageBoxButton.OK, MessageBoxImage.Warning);
                        return;
                    }
                    connection.Close();
                }
                else
                {
                    return;
                }

                var communication =
                    new NpgsqlCommunication(addDbWindow.Database, addDbWindow.User,
                                            addDbWindow.Server, addDbWindow.Port, addDbWindow.Password);

                // Create recording in the DbCourseWork.exe.Config
                var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var settings   = configFile.ConnectionStrings.ConnectionStrings;
                if (settings[addDbWindow.Database] == null)
                {
                    settings.Add(new ConnectionStringSettings(addDbWindow.Database, connectionBuilder.ConnectionString));
                    settings[addDbWindow.Database].ProviderName = "PostgreSQL";

                    PostgreCommunications.Add(addDbWindow.Database, communication);
                    PostgreCommunications[addDbWindow.Database].FillDs();

                    BuildTreeView(DatabasesTreeView, communication);
                }

                else
                {
                    settings[addDbWindow.Database].Name             = addDbWindow.Database;
                    settings[addDbWindow.Database].ConnectionString = connectionBuilder.ConnectionString;
                    settings[addDbWindow.Database].ProviderName     = "PostgreSQL";

                    PostgreCommunications.Remove(addDbWindow.Database);
                    PostgreCommunications.Add(addDbWindow.Database, communication);
                    PostgreCommunications[addDbWindow.Database].FillDs();

                    RemoveTreeView(DatabasesTreeView, addDbWindow.Database);
                    BuildTreeView(DatabasesTreeView, communication);
                }

                configFile.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("connectionStrings");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }