/**
 * 
 */
package icy.gui.component.renderer;

import icy.math.MathUtil;
import icy.type.collection.array.Array1DUtil;
import icy.type.collection.array.ArrayUtil;

import javax.swing.SwingConstants;

import org.pushingpixels.substance.api.renderers.SubstanceDefaultTableCellRenderer;

/**
 * @author Stephane
 */
public class NativeArrayTableCellRenderer extends SubstanceDefaultTableCellRenderer
{
    /**
     * 
     */
    private static final long serialVersionUID = 7536618123117211456L;

    final boolean signed;

    public NativeArrayTableCellRenderer(boolean signed)
    {
        super();

        this.signed = signed;

        setHorizontalAlignment(SwingConstants.TRAILING);
    }

    public NativeArrayTableCellRenderer()
    {
        this(true);
    }

    @Override
    protected void setValue(Object value)
    {
        if ((value != null) && (ArrayUtil.getDim(value) == 1))
        {
            final int len = ArrayUtil.getLength(value);

            String s;

            if (len == 0)
                s = "";
            else if (len == 1)
                s = Double.toString(MathUtil.roundSignificant(Array1DUtil.getValue(value, 0, signed), 5));
            else
            {
                s = "[" + Double.toString(MathUtil.roundSignificant(Array1DUtil.getValue(value, 0, signed), 5));
                for (int i = 1; i < len; i++)
                    s += " " + MathUtil.roundSignificant(Array1DUtil.getValue(value, i, signed), 5);
                s += "]";
            }

            setText(s);
        }
        else
            super.setValue(value);
    }
}