@Override
 public void onSourceDataChanged() {
   BuildSource buildSource = buildConfig.getSpec().getSource();
   boolean changed =
       !(buildSource.getContextDir().equals(view.getSourceContextDir())
           && buildSource.getGit().getRef().equals(view.getSourceReference())
           && buildSource.getGit().getUri().equals(view.getSourceUrl()));
   view.enableSaveButton(changed);
   view.enableRestoreButton(changed);
 }
  @Override
  public void onSaveClicked() {
    buildConfig.getSpec().getSource().setContextDir(view.getSourceContextDir());
    buildConfig.getSpec().getSource().getGit().setRef(view.getSourceReference());
    buildConfig.getSpec().getSource().getGit().setUri(view.getSourceUrl());

    service
        .updateBuildConfig(buildConfig)
        .then(
            new Operation<BuildConfig>() {
              @Override
              public void apply(BuildConfig arg) throws OperationException {
                buildConfig = arg;
                setBuildSource(buildConfig.getSpec().getSource());
              }
            })
        .catchError(onFail());
  }