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

import java.awt.Component;
import java.awt.Graphics;

import javax.swing.Icon;
import javax.swing.ImageIcon;

import com.dlsc.flexgantt.model.gantt.DefaultTimelineObject;
import com.dlsc.flexgantt.model.gantt.TimelineObjectPath;
import com.dlsc.flexgantt.swing.layer.timeline.DefaultActivityObjectRenderer;
import com.dlsc.flexgantt.swing.layer.timeline.TimelineObjectLayer;

public class NavigationDemoTimelineObjectRenderer extends
        DefaultActivityObjectRenderer {
    
    public static final Icon warningIcon = new ImageIcon(
            NavigationDemoTimelineObjectRenderer.class
                    .getResource("blue-bullet.png"));
    public static final Icon errorIcon = new ImageIcon(
            NavigationDemoTimelineObjectRenderer.class
                    .getResource("red-bullet.png"));
    public static final Icon infoIcon = new ImageIcon(
            NavigationDemoTimelineObjectRenderer.class
                    .getResource("green-bullet.png"));

    private boolean info;
    private boolean warning;
    private boolean error;

    public NavigationDemoTimelineObjectRenderer() {
        setRoundedCorners(false);
        setBarHeight(14);
    }
    
    @Override
    public Component getTimelineObjectRendererComponent(
            TimelineObjectLayer layer, TimelineObjectPath path,
            boolean selected, boolean hasFocus, boolean highlighted, int row) {
        Component comp = super.getTimelineObjectRendererComponent(layer, path,
                selected, hasFocus, highlighted, row);
        DefaultTimelineObject tlo = (DefaultTimelineObject) getTimelineObject();
        Object status = tlo.getStatus();
        warning = (status != null && status
                .equals(NavigationGanttChartModel.WARNING));
        error = (status != null && status
                .equals(NavigationGanttChartModel.ERROR));
        info = (status != null && status
                .equals(NavigationGanttChartModel.INFO));
        return comp;
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        if (error) {
            errorIcon.paintIcon(this, g, 0, -1);
        } else if (warning) {
            warningIcon.paintIcon(this, g, 0, -1);
        } else if (info) {
            infoIcon.paintIcon(this, g, 0, -1);
        }
    }
}
