@Override
  public boolean performOk() {
    DataSourceProviderRegistry registry = DataSourceProviderRegistry.getInstance();
    java.util.List<DBPConnectionType> toRemove = new ArrayList<>();
    for (DBPConnectionType type : registry.getConnectionTypes()) {
      if (!changedInfo.values().contains(type)) {
        // Remove
        toRemove.add(type);
      }
    }
    for (DBPConnectionType connectionType : toRemove) {
      registry.removeConnectionType(connectionType);
    }

    for (DBPConnectionType changed : changedInfo.keySet()) {
      DBPConnectionType source = changedInfo.get(changed);
      if (source == changed) {
        // New type
        registry.addConnectionType(changed);
      } else {
        // Changed type
        source.setName(changed.getName());
        source.setDescription(changed.getDescription());
        source.setAutocommit(changed.isAutocommit());
        source.setConfirmExecute(changed.isConfirmExecute());
        source.setColor(changed.getColor());
      }
    }
    registry.saveConnectionTypes();
    return super.performOk();
  }
  private void showSelectedType(DBPConnectionType connectionType) {
    colorPicker.select(UIUtils.getConnectionTypeColor(connectionType));
    typeName.setText(connectionType.getName());
    typeDescription.setText(connectionType.getDescription());
    autocommitCheck.setSelection(connectionType.isAutocommit());
    confirmCheck.setSelection(connectionType.isConfirmExecute());

    deleteButton.setEnabled(!connectionType.isPredefined());
  }