package scriptbuilder.structures;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import scriptbuilder.gui.ScriptBuilderGuiConstants;

/**
 *
 * @author Greg Eddington <geddingt@calpoly.edu>
 */
public class TimeSlice
{
    public List<ScriptEvent> events;
    private int seconds;

    public void addEvent(ScriptEvent event)
    {
        events.add(event);
        Collections.sort(events);
    }

    public int getX()
    {
        return seconds / ScriptBuilderGuiConstants.HORIZONTAL_TICK_RESOLUTION *
                ScriptBuilderGuiConstants.PIXEL_WIDTH_PER_HORIZONTAL_TICK;
    }

    public void shift(int amnt)
    {
        seconds += amnt;
    }

    public TimeSlice(int seconds)
    {
        this.seconds = seconds;
        events = new ArrayList<ScriptEvent>();
    }

    public String getToolTipText(int y)
    {
        int i = (y - ScriptBuilderGuiConstants.SCRIPT_EVENT_ICON_TOP_MARGIN);
        if (i < 0)
        {
            if (i > (-1 * ScriptBuilderGuiConstants.SCRIPT_EVENT_ICON_STEP))
            {
                String s = toString();
                if (s.equals(""))
                    return null;

                return"<html>" + s.replace("\n", "<br/>") + "</html>";
            }
            else
                return null;
        }
        
        i /= ScriptBuilderGuiConstants.SCRIPT_EVENT_ICON_STEP;
        if (i < events.size())
            return events.get(i).toString();
        return null;
    }

    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        
        for (ScriptEvent event : events)
        {
            sb.append(event.toString());
            sb.append('\n');
        }

        return sb.toString();
    }
}
