/// <summary>
        /// Initializes the ViewModel, setting the Model data.
        /// </summary>
        public SystemComponent()
        {
            this.InitializeComponent();

            data = new SystemComponentData();

            this.DataContext = data;
            this.GroupImage.DataContext = this;
        }
        /// <summary>
        /// Called when a system component is processing a Job.
        /// </summary>
        /// <param name="component">Next component to process job</param>
        /// <param name="job">Job being processed</param>
        /// <param name="isMac">If it's the Mac, set SystemEntryTime and increment number of jobs in system for W and L</param>
        /// <returns></returns>
        private KeyValuePair<double, Job> SystemComponentJobProcess(SystemComponentData component, Job job, bool isMac)
        {
            if (isMac)
            {
                job.SystemEntryTime = SimClock;
                jobsInSystem++;
            }

            // BUSY
            if (SimClock < component.TimeIdleAgain)
            {
                job.ArrivalTime = component.TimeIdleAgain + PseudoRandomGenerator.ExponentialRVG(component.ProcessMean);
            }
            // IDLE
            else
            {
                component.TotalTimeIdle += (SimClock - component.TimeIdleAgain);
                job.ArrivalTime += PseudoRandomGenerator.ExponentialRVG(component.ProcessMean);
            }

            component.TimeIdleAgain = job.ArrivalTime;
            job.LocationInSystem = component;

            return new KeyValuePair<double,Job>(job.ArrivalTime, job);
        }