package org.bndtools.utils.jface;

import org.eclipse.jface.preference.JFacePreferences;
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.StyledString.Styler;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.TextStyle;

public class BoldStyler extends Styler {

    public static BoldStyler INSTANCE_DEFAULT = new BoldStyler(JFaceResources.DEFAULT_FONT, null, null);
    public static BoldStyler INSTANCE_COUNTER = new BoldStyler(JFaceResources.DEFAULT_FONT, JFacePreferences.COUNTER_COLOR, null);

    private final String fontName;
    private final String fForegroundColorName;
    private final String fBackgroundColorName;

    public BoldStyler(String fontName, String foregroundColorName, String backgroundColorName) {
        this.fontName = fontName;
        fForegroundColorName = foregroundColorName;
        fBackgroundColorName = backgroundColorName;
    }

    @Override
    public void applyStyles(TextStyle textStyle) {
        ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
        Font font = JFaceResources.getFontRegistry()
            .getBold(fontName);
        if (fForegroundColorName != null) {
            textStyle.foreground = colorRegistry.get(fForegroundColorName);
        }
        if (fBackgroundColorName != null) {
            textStyle.background = colorRegistry.get(fBackgroundColorName);
        }
        textStyle.font = font;
    }
}