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

import com.dlsc.flexgantt.model.TimeSpan;
import com.dlsc.flexgantt.model.gantt.DefaultGanttChartModel;
import com.dlsc.flexgantt.model.gantt.DefaultGanttChartNode;
import com.dlsc.flexgantt.model.gantt.DefaultTimelineObject;
import com.dlsc.flexgantt.model.gantt.Layer;

public class RelationshipGanttChartModel
        extends
        DefaultGanttChartModel<DefaultGanttChartNode<String, DefaultTimelineObject>, DefaultTimelineObject> {

    private static final Layer DEFAULT_LAYER = new Layer("Default");

    public RelationshipGanttChartModel() {
        super(new DefaultGanttChartNode<String, DefaultTimelineObject>("Root"));

        // ROOT
        DefaultGanttChartNode<String, DefaultTimelineObject> ROOT = getRoot();

        
        DefaultGanttChartNode<String, DefaultTimelineObject> A = new DefaultGanttChartNode<String, DefaultTimelineObject>(
                "A");
        DefaultGanttChartNode<String, DefaultTimelineObject> A1 = new DefaultGanttChartNode<String, DefaultTimelineObject>(
                "A1");
        DefaultGanttChartNode<String, DefaultTimelineObject> A2 = new DefaultGanttChartNode<String, DefaultTimelineObject>(
                "A2");
        DefaultGanttChartNode<String, DefaultTimelineObject> A3 = new DefaultGanttChartNode<String, DefaultTimelineObject>(
                "A3");


        // Keys
        ROOT.setKey(ROOT.getTypedUserObject());

        A.setKey(A.getTypedUserObject());
        A1.setKey(A1.getTypedUserObject());
        A2.setKey(A2.getTypedUserObject());
        A3.setKey(A3.getTypedUserObject());

        // Parent / Children
        A1.setAllowsChildren(false);
        A2.setAllowsChildren(false);
        A3.setAllowsChildren(false);

        // Hierarchy
        A.add(A1);
        A.add(A2);
        A.add(A3);

        ROOT.add(A);

        TimeSpan spanA1 = new TimeSpan(2008, 0, 7, 2008, 0, 12);
        DefaultTimelineObject tloA1 = new DefaultTimelineObject<String>(spanA1);
        A1.addTimelineObject(DEFAULT_LAYER, tloA1);

        TimeSpan spanA2 = new TimeSpan(2008, 0, 14, 2008, 0, 16);
        DefaultTimelineObject tloA2 = new DefaultTimelineObject<String>(spanA2);
        A2.addTimelineObject(DEFAULT_LAYER, tloA2);

        TimeSpan spanA3 = new TimeSpan(2008, 0, 16, 2008, 0, 17);
        DefaultTimelineObject tloA3 = new DefaultTimelineObject<String>(spanA3);
        A3.addTimelineObject(DEFAULT_LAYER, tloA3);

        DefaultTimelineObject tloA = new DefaultTimelineObject<String>(spanA3);
        A.addTimelineObject(DEFAULT_LAYER, tloA);
        tloA.addChild(tloA1);
        tloA.addChild(tloA2);
        tloA.addChild(tloA3);

        addLayer(DEFAULT_LAYER);
    }
}
