public void showAboutDialog() {
    final List<Pair<String, URL>> urls = new ArrayList<>();
    try {
      urls.add(new Pair<>("zynamics Website", new URL(Constants.ZYNAMICS_HOME_URL)));
      urls.add(
          new Pair<>("BinDiff Product Site", new URL(Constants.ZYNAMICS_BINDIFF_PRODUCT_SITE_URL)));
      urls.add(new Pair<>("Report Bugs", new URL(Constants.ZYNAMICS_SUPPORT_MAIL_URL)));
    } catch (final MalformedURLException e) {
      assert false : "Malformed URL in About dialog.";
    }

    final String message = Constants.PRODUCT_NAME_VERSION + "\n" + Constants.COPYRIGHT_TEXT;
    final String description =
        "\nParts of this software were created by third parties and may have "
            + "different licensing requirements.\n"
            + "Please see the manual for a complete list.\n";

    final CDialogAboutEx aboutDialog =
        new CDialogAboutEx(
            window,
            ResourceUtils.getImageIcon(Constants.ABOUT_BINDIFF_IMAGE_PATH, getMainWindow()),
            Constants.PRODUCT_NAME,
            message,
            description,
            urls);

    aboutDialog.setIconImage(ResourceUtils.getImage(Constants.APP_ICON_PATH_16X16));

    aboutDialog.setSize(aboutDialog.getWidth() - 8, aboutDialog.getHeight());

    GuiHelper.centerChildToParent(window, aboutDialog, true);
    aboutDialog.setVisible(true);
  }
Controller class with functions applicable to all "tab panels".
java/ui/src/main/java/com/google/security/zynamics/bindiff/gui/tabpanels/TabPanelFunctions.java