private void EditTrain(string trainId)
        {
            Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_EnteringEditTrain, trainId);
            if (!Model.TrainList.Any(t => t.Id == trainId))
            {
                Log.Warn(CultureInfo.CurrentCulture, Resources.LogWarning_TrainDoesNotExist, trainId);
                return;
            }
            Train targetTrain = Model.TrainList.First(t => t.Id == trainId);
            Train copyTrain   = targetTrain.Copy();

            copyTrain.Id = GeneralHelper.GetNewId(Model.TrainList);
            TrainEditFormModel formModel = GetBaseTrainEditFormModel();

            formModel.Data = copyTrain;
            using (TrainEditForm tef = new TrainEditForm {
                Model = formModel
            })
            {
                DialogResult result = tef.ShowDialog();
                Log.Trace("TrainEditForm.ShowDialog() returned {0}", result);
                if (result != DialogResult.OK)
                {
                    return;
                }

                Model.TrainList.Remove(targetTrain);
                Model.TrainList.Add(tef.Model.Data);
            }
        }
        public void TrainEditFormModelClass_Constructor_SetsValidClassesPropertyToSecondParameter()
        {
            LocationCollection   testParam0 = new LocationCollection();
            TrainClassCollection testParam1 = new TrainClassCollection();
            IEnumerable <Note>   testParam2 = GetNotes();
            IEnumerable <Note>   testParam3 = GetNotes();

            TrainEditFormModel testOutput = new TrainEditFormModel(testParam0, testParam1, testParam2, testParam3);

            Assert.AreSame(testParam1, testOutput.ValidClasses);
        }
        public void TrainEditFormModelClass_Constructor_SetsValidTimingPointNotesToEmptyList_IfFourthParameterIsNull()
        {
            LocationCollection   testParam0 = new LocationCollection();
            TrainClassCollection testParam1 = new TrainClassCollection();
            IEnumerable <Note>   testParam2 = GetNotes();
            IEnumerable <Note>   testParam3 = null;

            TrainEditFormModel testOutput = new TrainEditFormModel(testParam0, testParam1, testParam2, testParam3);

            Assert.IsNotNull(testOutput.ValidTimingPointNotes);
            Assert.AreEqual(0, testOutput.ValidTimingPointNotes.Count);
        }
        public void TrainEditFormModelClass_Constructor_SetsValidTrainNotesToListContainingSameDataAsThirdParameter_IfThirdParameterIsNotNull()
        {
            LocationCollection   testParam0 = new LocationCollection();
            TrainClassCollection testParam1 = new TrainClassCollection();
            IEnumerable <Note>   testParam2 = GetNotes();
            IEnumerable <Note>   testParam3 = GetNotes();

            TrainEditFormModel testOutput = new TrainEditFormModel(testParam0, testParam1, testParam2, testParam3);

            Note[] testParamData = testParam2.ToArray();
            Assert.AreEqual(testParamData.Length, testOutput.ValidTrainNotes.Count);
            for (int i = 0; i < testParamData.Length; ++i)
            {
                Assert.AreSame(testParamData[i], testOutput.ValidTrainNotes[i]);
            }
        }
        private void AddTrain()
        {
            TrainEditFormModel formModel = GetBaseTrainEditFormModel();

            formModel.Data = new Train {
                Id = GeneralHelper.GetNewId(Model.TrainList)
            };
            using (TrainEditForm form = new TrainEditForm {
                Model = formModel
            })
            {
                DialogResult result = form.ShowDialog();
                Log.Trace("TrainEditForm.ShowDialog() returned {0}", result);
                if (result != DialogResult.OK)
                {
                    return;
                }

                if (form.Model != null && form.Model.Data != null)
                {
                    Model.TrainList.Add(form.Model.Data);
                }
            }
        }