/// <summary>
        /// Creates gantt item element for each stop and drive time between stops.
        /// </summary>
        /// <param name="route"></param>
        private void _CreateGanttItemElements(Route route)
        {
            // Sort route's tops.
            SortedDataObjectCollection <Stop> sortedStops = new SortedDataObjectCollection <Stop>(route.Stops, new StopsComparer());

            Debug.Assert(_ganttItemElements != null); // Must be initialized.

            foreach (Stop stop in sortedStops)
            {
                // Skip creating drive time element for the first stop.
                if (sortedStops.IndexOf(stop) > 0)
                {
                    _ganttItemElements.Add(new DriveTimeGanttItemElement(stop, this)); // Create drive time element previous to stop.
                }
                StopGanttItemElement newElement = new StopGanttItemElement(stop, this);

                _ganttItemElements.Add(newElement); // Add stop element.
            }

            if (_ganttItemElements.Count != 0)
            {
                // Define start time of gantt item.
                _startTime = _ganttItemElements[0].StartTime;

                // Define end time of gantt item.
                _endTime = _ganttItemElements[_ganttItemElements.Count - 1].EndTime;
            }

            // If route has not stops - add empty gantt item element to support common selection logic.
            if (sortedStops.Count == 0)
            {
                _ganttItemElements.Add(new EmptyGanttItemElement(this));
            }
        }