package com.dlsc.flexgantt.showcase.demo.spreadsheet;

import java.awt.Color;
import java.awt.Component;

import com.dlsc.flexgantt.icons.IconId;
import com.dlsc.flexgantt.icons.IconRegistry;
import com.dlsc.flexgantt.model.ITimeSpan;
import com.dlsc.flexgantt.swing.layer.system.DefaultSpreadsheetCellRenderer;
import com.dlsc.flexgantt.swing.layer.system.SpreadsheetLayer;

public class SpreadsheetValuesCellRenderer extends
        DefaultSpreadsheetCellRenderer {

    @Override
    public Component getSpreadsheetCellRendererComponent(
            SpreadsheetLayer spreadsheet, Object node, Object value,
            boolean selected, int row, ITimeSpan span, boolean hasFocus) {

        super.getSpreadsheetCellRendererComponent(spreadsheet, node, value,
                selected, row, span, hasFocus);

        setOpaque(false);
        setIcon(null);

        if (value != null) {
            SpreadsheetValues sv = (SpreadsheetValues) value;

            switch (sv) {
            case ZERO:
                setText("");
                break;
            case TEN:
                setText("10");
                break;
            case TWENTY:
                setText("20");
                break;
            case THIRTY:
                setText("30");
                break;
            case FOURTY:
                setText("40");
                break;
            case FIFTY:
                setText("50");
                break;
            case SIXTY:
                setText("60");
                break;
            case SEVENTY:
                setText("70");
                break;
            case EIGHTY:
                setText("80");
                break;
            case NINETY:
                setText("90");
                break;
            case HUNDRED:
                setText("100");
                break;
            case BROKEN:
                setText("");
                setIcon(IconRegistry.getIcon(IconId.WARNING));
            default:
                setText("");
                break;
            }
            setOpaque(!sv.equals(SpreadsheetValues.BROKEN));

            Color c = sv.getColor();

            /*
             * Modify color, make it transparent. This way background textures
             * (e.g. weekends) will still be visible.
             */
            setBackground(c);
        }

        return this;
    }
}
