@Override
 public void run() {
   if (myWasInvoked) return;
   if (!getWholePanel().isDisplayable()) return;
   myWasInvoked = true;
   ChangeCounter.getOrCreate(myMergePanel.getMergeList()).removeListener(this);
   int doApply =
       Messages.showOkCancelDialog(
           getWholePanel(),
           DiffBundle.message(
               "merge.all.changes.have.processed.save.and.finish.confirmation.text"),
           DiffBundle.message("all.changes.processed.dialog.title"),
           DiffBundle.message("merge.save.and.finish.button"),
           DiffBundle.message("merge.continue.button"),
           Messages.getQuestionIcon());
   if (doApply != Messages.OK) return;
   myDialogWrapper.close(DialogWrapper.OK_EXIT_CODE);
 }
 @Nullable
 private static String addReadOnly(@Nullable String title, @Nullable Editor editor) {
   if (editor == null || title == null) {
     return title;
   }
   boolean readonly = editor.isViewer() || !editor.getDocument().isWritable();
   if (readonly) {
     title += " " + DiffBundle.message("diff.content.read.only.content.title.suffix");
   }
   return title;
 }
 private static boolean askForceOpenDiff(DiffRequest data) {
   byte[] bytes1;
   byte[] bytes2;
   try {
     bytes1 = data.getContents()[0].getBytes();
     bytes2 = data.getContents()[1].getBytes();
   } catch (IOException e) {
     MessagesEx.error(data.getProject(), e.getMessage()).showNow();
     return false;
   }
   String message =
       Arrays.equals(bytes1, bytes2)
           ? DiffBundle.message("diff.contents.are.identical.message.text")
           : DiffBundle.message(
               "diff.contents.have.differences.only.in.line.separators.message.text");
   return Messages.showYesNoDialog(
           data.getProject(),
           message + "\n" + DiffBundle.message("show.diff.anyway.dialog.message"),
           DiffBundle.message("no.differences.dialog.title"),
           Messages.getQuestionIcon())
       == Messages.YES;
 }
 public String getNumDifferencesText() {
   return DiffBundle.message("diff.count.differences.status.text", getLineBlocks().getCount());
 }
 public LineSeparatorsOnlyDiffPanel() {
   myLabel.setText(
       DiffBundle.message(
           "diff.contents.have.differences.only.in.line.separators.message.text"));
 }
 public FileContentsAreIdenticalDiffPanel() {
   myLabel.setText(DiffBundle.message("diff.contents.are.identical.message.text"));
 }