/**
   * Display build source info (url, reference and context dir).
   *
   * @param buildSource
   */
  private void setBuildSource(BuildSource buildSource) {
    view.setSourceUrl(buildSource.getGit().getUri());
    view.setSourceReference(buildSource.getGit().getRef());
    view.setSourceContextDir(buildSource.getContextDir());

    view.enableSaveButton(false);
    view.enableRestoreButton(false);
  }
 @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());
  }
 private void resetView() {
   this.buildConfig = null;
   view.setNoBuildConfigs(true);
   view.setSourceUrl(null);
   view.setSourceReference(null);
   view.setSourceContextDir(null);
   view.enableSaveButton(false);
   view.enableRestoreButton(false);
 }
 @Override
 public void onRestoreClicked() {
   setBuildSource(buildConfig.getSpec().getSource());
   view.enableRestoreButton(false);
   view.enableSaveButton(false);
 }