// 
// Decompiled by Procyon v0.6.0
// 

package org.jline.style;

import java.util.logging.Level;
import java.util.Objects;
import java.util.logging.Logger;

public class Styler
{
    private static final Logger log;
    private static volatile StyleSource source;
    
    private Styler() {
    }
    
    public static StyleSource getSource() {
        return Styler.source;
    }
    
    public static void setSource(final StyleSource source) {
        Styler.source = Objects.requireNonNull(source);
        if (Styler.log.isLoggable(Level.FINE)) {
            Styler.log.fine("Source: " + source);
        }
    }
    
    public static StyleResolver resolver(final String group) {
        return new StyleResolver(Styler.source, group);
    }
    
    public static StyleFactory factory(final String group) {
        return new StyleFactory(resolver(group));
    }
    
    public static <T extends StyleBundle> T bundle(final Class<T> type) {
        return StyleBundleInvocationHandler.create(Styler.source, type);
    }
    
    public static <T extends StyleBundle> T bundle(final String group, final Class<T> type) {
        return StyleBundleInvocationHandler.create(resolver(group), type);
    }
    
    static {
        log = Logger.getLogger(Styler.class.getName());
        Styler.source = new NopStyleSource();
    }
}
