private void btnInsertInItinerary_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = this.lbxAllCountries.SelectedIndex;

            if (selectedIndex == -1)
            {
                return;
            }

            int selectedItinIndex = this.lbxItinerary.SelectedIndex;

            if (selectedItinIndex < 0)
            {
                return;
            }

            Country selectedCountry = AllData.AllCountries[selectedIndex];

            var insertBeforeNode = AllData.ItineraryBuilder.GetNthNode(selectedItinIndex);

            AllData.ItineraryBuilder.AddBefore(insertBeforeNode, selectedCountry);
            var change = new ItineraryChange(
                ChangeType.Insert, selectedItinIndex, selectedCountry);

            AllData.ChangeLog.Push(change);

            this.UpdateAllLists();
        }
Exemple #2
0
        private void addCountryToItineraryWithChangeLog(AppData appData, Country country)
        {
            appData.ItineraryBuilder.AddLast(country);
            var change = new ItineraryChange(ChangeType.Append,
                                             appData.ItineraryBuilder.Count,
                                             country);

            appData.ChangeLog.Push(change);
        }
        private void btnUndo_Click(object sender, RoutedEventArgs e)
        {
            if (AllData.ChangeLog.Count == 0)
				return;

			ItineraryChange lastChange = AllData.ChangeLog.Pop();
			ChangeUndoer.Undo(AllData.ItineraryBuilder, lastChange);
			this.UpdateAllLists();
		}
		private void btnRemoveFromItinerary_Click(object sender, RoutedEventArgs e)
			{
			int selectedItinIndex = this.lbxItinerary.SelectedIndex;
			if (selectedItinIndex < 0)
				return;

			var nodeToRemove = AllData.ItineraryBuilder.GetNthNode(selectedItinIndex);
			AllData.ItineraryBuilder.Remove(nodeToRemove);

			var change = new ItineraryChange(ChangeType.Remove, selectedItinIndex, nodeToRemove.Value);
			AllData.ChangeLog.Push(change);

			this.UpdateAllLists();
			}
		private void btnAddToItinerary_Click(object sender, RoutedEventArgs e)
		{
			int selectedIndex = this.lbxAllCountries.SelectedIndex;
			if (selectedIndex == -1)
				return;

			Country selectedCountry = AllData.AllCountries[selectedIndex];
			AllData.ItineraryBuilder.AddLast(selectedCountry);

			var change = new ItineraryChange(ChangeType.Append, AllData.ItineraryBuilder.Count, selectedCountry);
			AllData.ChangeLog.Push(change);

			this.UpdateAllLists();
		}
        public void Run()
        {
            CsvReader reader = new CsvReader(@".\Resources\PopByLargest.csv");

            this.AllCountries = reader.ReadAllCountries().OrderBy(x => x.Name).ToList();
            var dict = AllCountries.ToDictionary(x => x.Code);

            this.AllCountriesByKey = dict;

            Console.WriteLine("-----------------ADD-------------------------");
            Country selectedCountry  = AllCountries[4];
            Country selectedCountry1 = AllCountries[14];
            Country selectedCountry2 = AllCountries[24];
            Country selectedCountry3 = AllCountries[34];

            //Add at the end of LL
            this.ItineraryBuilder.AddLast(selectedCountry);
            var change = new ItineraryChange(ChangeType.Append, this.ItineraryBuilder.Count, selectedCountry);

            this.ChangeLog.Push(change);

            this.ItineraryBuilder.AddLast(selectedCountry1);
            var change1 = new ItineraryChange(ChangeType.Append, this.ItineraryBuilder.Count, selectedCountry1);

            this.ChangeLog.Push(change1);

            this.ItineraryBuilder.AddLast(selectedCountry2);
            var change2 = new ItineraryChange(ChangeType.Append, this.ItineraryBuilder.Count, selectedCountry2);

            this.ChangeLog.Push(change2);

            this.ItineraryBuilder.AddLast(selectedCountry3);
            var change3 = new ItineraryChange(ChangeType.Append, this.ItineraryBuilder.Count, selectedCountry3);

            this.ChangeLog.Push(change3);

            foreach (var item in this.ItineraryBuilder)
            {
                Console.WriteLine($"{item.Code}:{item.Name}");
            }
            Console.WriteLine("---stack----");
            foreach (var item in ChangeLog)
            {
                Console.WriteLine(item);
            }


            Console.WriteLine("-----------------REMOVE-------------------------");
            int selectedIndex = 1;
            var nodeToRemove  = this.ItineraryBuilder.GetNthNode(selectedIndex);

            this.ItineraryBuilder.Remove(nodeToRemove);
            var change4 = new ItineraryChange(ChangeType.Remove, selectedIndex, nodeToRemove.Value);

            this.ChangeLog.Push(change4);
            foreach (var item in this.ItineraryBuilder)
            {
                Console.WriteLine($"{item.Code}:{item.Name}");
            }
            Console.WriteLine("---stack----");
            foreach (var item in ChangeLog)
            {
                Console.WriteLine(item);
            }


            Console.WriteLine("----------------------INSERT------------------------------");
            int selectedIndex1 = 1;

            this.AllCountriesByKey.TryGetValue(new CountryCode("USA"), out Country result);
            var insertBeforeNode = this.ItineraryBuilder.GetNthNode(selectedIndex1);

            this.ItineraryBuilder.AddBefore(insertBeforeNode, result);
            var change5 = new ItineraryChange(ChangeType.Insert, selectedIndex1, insertBeforeNode.Value);

            this.ChangeLog.Push(change5);
            foreach (var item in this.ItineraryBuilder)
            {
                Console.WriteLine($"{item.Code}:{item.Name}");
            }
            Console.WriteLine("---stack----");
            foreach (var item in ChangeLog)
            {
                Console.WriteLine(item);
            }


            Console.WriteLine("---------------------UNDO-------------------------------");
            ItineraryChange lastChange = this.ChangeLog.Pop();

            ChangeUndoer.Undo(this.ItineraryBuilder, lastChange);
            ItineraryChange lastChange2 = this.ChangeLog.Pop();

            ChangeUndoer.Undo(this.ItineraryBuilder, lastChange2);
            ItineraryChange lastChange3 = this.ChangeLog.Pop();

            ChangeUndoer.Undo(this.ItineraryBuilder, lastChange3);
            ChangeUndoer.Undo(this.ItineraryBuilder, this.ChangeLog.Pop());

            foreach (var item in this.ItineraryBuilder)
            {
                Console.WriteLine($"{item.Code}:{item.Name}");
            }
            Console.WriteLine("---stack----");
            foreach (var item in ChangeLog)
            {
                Console.WriteLine(item);
            }
        }