private TypeViewModelAbstract GetExpandableByIndex(int index) { TypeViewModelAbstract viewModelItem; if (_previousTypes.Count > 0) { bool foundExpandable = false; int offset = 0; while ((index + offset) <= _currentItem.Children.Count && !foundExpandable) { TypeViewModelAbstract child = _currentItem.Children[offset]; if (!child.CanExpand) { offset += 1; } else { foundExpandable = true; } } viewModelItem = _currentItem.Children[index + offset - 1]; } else { viewModelItem = TypesTreeViewModel.Items[index - 1]; } return(viewModelItem); }
public void Run() { GetFileFromUser(); TypesTreeViewModel.ExtractData(); PrintHeaders(TypesTreeViewModel.Items); while (true) { TypeViewModelAbstract temp = _currentItem; _currentItem = NewChosen(); if (_isGoingBack) { } else { _previousTypes.Push(temp); } if (_currentItem != null) { PrintTypeWithChildren(_currentItem); } else { _previousTypes.Clear(); PrintHeaders(TypesTreeViewModel.Items); } } }
private TypeViewModelAbstract NewChosen() { _isGoingBack = false; TypeViewModelAbstract viewModelItem = null; bool didUserChoose = false; do { string chosen = Console.ReadLine(); bool isNumber = int.TryParse(chosen, out int parsedNumber); if (isNumber) { if (parsedNumber > 0) { viewModelItem = GetExpandableByIndex(parsedNumber); if (viewModelItem != null) { didUserChoose = true; } } if (parsedNumber == 0) { _isGoingBack = true; if (_previousTypes.Count != 0) { viewModelItem = _previousTypes.Pop(); } else { viewModelItem = _currentItem; } didUserChoose = true; } } else if (chosen != null) { if (SerializationMode.Equals(chosen.ToUpper())) { HandleSerializationMode(); return(null); } if (DeserializationMode.Equals(chosen.ToUpper())) { HandleDeserializationMode(); return(null); } } } while (!didUserChoose); return(viewModelItem); }
private void PrintTypeWithChildren(TypeViewModelAbstract item) { string itemString = ""; string name = item.Description; int index = 1; itemString += item.Description + " " + item.TypeName + " " + item.Name + Environment.NewLine; item.IsExpanded = true; foreach (TypeViewModelAbstract tva in item.Children) { if (tva.Description != name) { itemString += Environment.NewLine; name = tva.Description; } if (tva.CanExpand) { itemString += index.ToString(); if (index < 10) { itemString += " "; } index++; } else { itemString += " "; } itemString += " " + tva.Description + " " + tva.TypeName + " " + tva.Name + Environment.NewLine; } itemString += GetMainMenuString(); Console.Clear(); Console.WriteLine(itemString); }