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 =
        e.getRequiredData(VcsDataKeys.UPDATE_VIEW_FILES_ITERABLE);
    final Label before = (Label) e.getRequiredData(VcsDataKeys.LABEL_BEFORE);
    final Label after = (Label) e.getRequiredData(VcsDataKeys.LABEL_AFTER);
    final String selectedUrl = VcsDataKeys.UPDATE_VIEW_SELECTED_PATH.getData(dc);

    MyDiffRequestChain requestChain =
        new MyDiffRequestChain(project, iterable, before, after, selectedUrl);
    DiffManager.getInstance().showDiff(project, requestChain, DiffDialogHints.FRAME);
  }
  @Override
  public void actionPerformed(@NotNull AnActionEvent e) {
    Project project = e.getProject();
    assert project != null;

    Navigatable navigatable = e.getRequiredData(CommonDataKeys.NAVIGATABLE);
    openEditor(project, navigatable);
  }
  public void actionPerformed(@NotNull AnActionEvent e) {
    Project project = e.getRequiredData(CommonDataKeys.PROJECT);

    if (!ChangeListManager.getInstance(project).isFreezedWithNotification(null)) {
      List<VirtualFile> files = e.getRequiredData(ChangesListView.UNVERSIONED_FILES_DATA_KEY);
      ChangesBrowserBase<?> browser = e.getData(ChangesBrowserBase.DATA_KEY);
      Runnable callback =
          browser == null
              ? null
              : () -> {
                browser.rebuildList();
                //noinspection unchecked
                browser.getViewer().excludeChanges((List) files);
              };

      IgnoreUnversionedDialog.ignoreSelectedFiles(project, files, callback);
    }
  }