/**
   * Registers a listener on the specified font chooser.
   *
   * <p>The specified listener will receive calls to its <code>setFont</code> method whenever the
   * font chooser has been updated.
   *
   * @param fontChooser chooser to monitor.
   * @param previewComponent component whose font should be tied to that of the chooser
   */
  protected void addFontChooserListener(FontChooser fontChooser, JComponent previewComponent) {
    // Update button font when a new font has been chosen in the FontChooser
    if (fontChooser != null) {
      ChangeListener listener;
      fontChooser.addChangeListener(listener = new PreviewFontChooserListener(previewComponent));
      previewComponent.setFont(fontChooser.getCurrentFont());

      // Hold a reference to this listener to prevent garbage collection
      listenerReferences.add(listener);
    }
  }
  /**
   * Creates a font chooser that will keep the specified font up-to-date in the current theme data.
   *
   * @param fontId identifier of the font this chooser will be editing.
   */
  protected FontChooser createFontChooser(int fontId) {
    FontChooser fontChooser; // Font chooser that will be returned.
    ChangeListener listener; // Internal listener.

    // Initialises the font chooser.
    fontChooser = new FontChooser(themeData.getFont(fontId));
    fontChooser.setBorder(BorderFactory.createTitledBorder(Translator.get("theme_editor.font")));
    fontChooser.addChangeListener(
        listener = new ThemeFontChooserListener(themeData, fontId, parent));

    // Hold a reference to this listener to prevent garbage collection
    listenerReferences.add(listener);

    return fontChooser;
  }