public void actionPerformed(AnActionEvent e) {
    final DataContext dc = e.getDataContext();
    if ((!isVisible(dc)) || (!isEnabled(dc))) return;

    final Project project = CommonDataKeys.PROJECT.getData(dc);
    final Iterable<Pair<VirtualFilePointer, FileStatus>> iterable =
        VcsDataKeys.UPDATE_VIEW_FILES_ITERABLE.getData(dc);
    final Label before = (Label) VcsDataKeys.LABEL_BEFORE.getData(dc);
    final Label after = (Label) VcsDataKeys.LABEL_AFTER.getData(dc);

    final String selectedUrl = VcsDataKeys.UPDATE_VIEW_SELECTED_PATH.getData(dc);

    ShowDiffAction.showDiffForChange(
        new MyIterableWrapper(iterable.iterator(), before, after),
        new MySelectionMarker(selectedUrl),
        project,
        new ShowDiffUIContext(true));
  }
 public static void showDiffForChange(
     final Change[] changes,
     int index,
     final Project project,
     @NotNull ShowDiffUIContext context) {
   final Change selected = index >= 0 ? changes[index] : null;
   /*if (isBinaryDiff(project, changes, index)) {
     showBinaryDiff(project, changes[index]);
     return;
   }*/
   showDiffForChange(
       Arrays.asList(changes),
       new Condition<Change>() {
         @Override
         public boolean value(final Change change) {
           return selected != null && selected.equals(change);
         }
       },
       project,
       context);
 }
 public static void showDiffForChange(
     final Change[] changes, final int index, final Project project) {
   showDiffForChange(changes, index, project, new ShowDiffUIContext(true));
 }