internal IDisplayHistoryRow CreateDisplayHistoryRow(ITrailDetails trailDetails)
        {
            IDisplayHistoryRow row = m_Factory.Create(trailDetails.Interation,
                                                      trailDetails.Trail,
                                                      trailDetails.Length,
                                                      trailDetails.LengthDelta,
                                                      trailDetails.LengthDeltaInPercent,
                                                      trailDetails.Alpha,
                                                      trailDetails.Beta,
                                                      trailDetails.Gamma,
                                                      trailDetails.Type);

            return row;
        }
        internal ITrailDetails CreateTrailDetails(ColonyBestTrailMessage message)
        {
            ITrailDetails details = m_Factory.Create(message.Iteration,
                                                     message.Trail,
                                                     message.Length,
                                                     0.0,
                                                     0.0,
                                                     message.Type,
                                                     message.Alpha,
                                                     message.Beta,
                                                     message.Gamma);

            m_FirstTrailDetails = details;
            return details;
        }
        internal void Started()
        {
            lock ( this )
            {
                m_Logger.Info("Started called!");

                ReleaseTrailDetails();

                m_TrailDetails.Clear();
                m_Dictionary.Clear();

                m_FirstTrailDetails = TrailDetails.Unknown;
            }
        }
        internal List <ITrailDetails> CreateTrailDetailsList(ITrailDetails[] values)
        {
            var list = new List <ITrailDetails>();

            ITrailDetails firstDetails = TrailDetails.Unknown;

            for ( var i = 0 ; i < values.Length ; i++ )
            {
                ITrailDetails current = values [ i ];
                ITrailDetails trailDetails;

                if ( i == 0 )
                {
                    firstDetails = current;
                    trailDetails = current;
                }
                else
                {
                    trailDetails = CreateOtherTrailDetails(firstDetails,
                                                           current);
                }

                list.Add(trailDetails);
            }

            return list;
        }