package org.limewire.ui.swing.components;

import java.awt.Component;

import javax.swing.JLabel;
import javax.swing.JPanel;

import net.miginfocom.swing.MigLayout;

/**
 * A simple component that can be used to inset a text label with an arbitrary number of components.
 * 
 * <p>Components are loaded in order in the places of the string marked by {c}.
 * 
 * <p>Example String:
 * <p>"the label generated by this string will be {c} embedded with its first component at the point with the symbol"
 * 
 * TODO: THIS IS NOT YET FULLY TRANSLATION SAFE!!
 *       
 *       Obvious limitation is components use tag {c} and their order, if translated, can not be changed 
 *        from this.  In future, if needed, this could be extended to use {cX} where X is the component number.
 *        This would be much more translation friendly but currently this component is only used for 2 bt settings.
 */
public class EmbeddedComponentLabel extends JPanel {

    public EmbeddedComponentLabel(String message, Component... components) {
     
        super(new MigLayout("insets 0, gap 0"));
        
        setOpaque(false);
        
        String[] labelParts = message.split("\\{c\\}");
        
        int i = 0;
        for ( String part : labelParts ) {
            add(new JLabel(part));
            if (i < components.length && components[i] != null) {
                add(components[i]);
                i++;
            }
        }
        
    }
    
}
