private static void initializeTheme() {
    ThemeConfigItem theme = BinDiffConfig.getInstance().getThemeSettings();

    String[] allFonts =
        GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    Arrays.sort(allFonts);

    Font uiFont = theme.getUiFont();
    if (Arrays.binarySearch(allFonts, uiFont.getFamily()) >= 0) {
      GuiHelper.setDefaultFont(uiFont);
    } else {
      logger.atWarning().log("Font not installed/found: %s", uiFont.getFontName());
    }
    final Font codeFont = theme.getCodeFont();
    if (Arrays.binarySearch(allFonts, codeFont.getFamily()) >= 0) {
      GuiHelper.setMonospacedFont(codeFont);
    } else {
      logger.atWarning().log("Font not installed/found: %s", codeFont.getFontName());
    }
    for (var fontName :
        new String[] {
          "Button.font",
          "CheckBox.font",
          "CheckBoxMenuItem.font",
          "ColorChooser.font",
          "ComboBox.font",
          "DesktopIcon.font",
          "InternalFrame.font",
          "InternalFrame.titleFont",
          "Label.font",
          "List.font",
          "Menu.font",
          "MenuBar.font",
          "MenuItem.font",
          "OptionPane.font",
          "Panel.font",
          "PasswordField.font",
          "PopupMenu.font",
          "ProgressBar.font",
          "RadioButton.font",
          "RadioButtonMenuItem.font",
          "ScrollPane.font",
          "TabbedPane.font",
          "Table.font",
          "TableHeader.font",
          "Text.font",
          "TextArea.font",
          "TextField.font",
          "TitledBorder.font",
          "ToggleButton.font",
          "ToolBar.font",
          "ToolTip.font",
          "Tree.font",
          "Viewport.font"
        }) {
      UIManager.put(fontName, GuiHelper.getDefaultFont());
    }
  }
Launcher class for BinDiff. Note: The name of this class is used directly as the application name
on macOS.
java/ui/src/main/java/com/google/security/zynamics/bindiff/BinDiff.java