@Nullable
  public Action getResolveAction(@NotNull final MergeResult result) {
    String caption = MergeUtil.getResolveActionTitle(result, myMergeRequest, myMergeContext);
    return new AbstractAction(caption) {
      @Override
      public void actionPerformed(ActionEvent e) {
        if ((result == MergeResult.LEFT || result == MergeResult.RIGHT) &&
            !MergeUtil.showConfirmDiscardChangesDialog(myPanel.getRootPane(),
                                                       result == MergeResult.LEFT
                                                       ? DiffBundle.message("button.merge.resolve.accept.left")
                                                       : DiffBundle.message("button.merge.resolve.accept.right"),
                                                       myContentModified)) {
          return;
        }
        if (result == MergeResult.RESOLVED &&
            (getChangesCount() > 0 || getConflictsCount() > 0) &&
            !MessageDialogBuilder.yesNo(DiffBundle.message("apply.partially.resolved.merge.dialog.title"), DiffBundle
                .message("merge.dialog.apply.partially.resolved.changes.confirmation.message", getChangesCount(), getConflictsCount()))
              .yesText(DiffBundle.message("apply.changes.and.mark.resolved"))
              .noText(DiffBundle.message("continue.merge"))
              .ask(myPanel.getRootPane())) {
          return;
        }
        if (result == MergeResult.CANCEL &&
            !MergeUtil.showExitWithoutApplyingChangesDialog(myTextMergeViewer, myMergeRequest, myMergeContext, myContentModified)) {
          return;
        }
        doFinishMerge(result, MergeResultSource.DIALOG_BUTTON);
      }
    };
  }
@Nullable
  public Action getResolveAction(@NotNull final MergeResult result)