private void createConfiguration(final Configuration configuration) {
    configurationService.saveConfiguration(
        configuration,
        new AsyncCallback<Configuration>() {
          public void onFailure(Throwable caught) {
            Window.alert("Error while creating configuration: " + caught.getMessage());
          }

          public void onSuccess(Configuration configuration) {
            addConfig(configuration);
            selectLastConfig();
          }
        });
  }
  private void populateConfigList() {
    configurationService.listConfigurations(
        new AsyncCallback<List<Configuration>>() {
          public void onFailure(Throwable caught) {
            Window.alert("Error while retrieving configurations: " + caught.getMessage());
          }

          public void onSuccess(List<Configuration> configurations) {
            for (Configuration config : configurations) addConfig(config);

            reloadParameters();
          }
        });
  }
  private void updateConfiguration(final Configuration configuration) {
    configurationService.updateConfiguration(
        configuration,
        new AsyncCallback<Configuration>() {
          public void onFailure(Throwable caught) {
            Window.alert("Error while saving configuration: " + caught.getMessage());
          }

          public void onSuccess(Configuration configuration) {
            configurations.put(configuration.getName(), configuration);
            disableSaveButton();
          }
        });
  }
  private void deleteConfiguration(final Configuration configuration) {
    configurationService.deleteConfiguration(
        configuration,
        new AsyncCallback<Void>() {
          public void onFailure(Throwable caught) {
            Window.alert("Error while deleting configuration: " + caught.getMessage());
          }

          public void onSuccess(Void success) {
            removeSelectedConfig();
            selectFirstConfig();
            reloadParameters();
          }
        });
  }