public void DisplayAddMemberAttribute(AddEditMemberAttribute attribute) { this.displayAddEditMemberOrBoat(true, AddEditMemberOrBoatMode.Add_Member, attribute); }
private void displayAddEditMemberOrBoat(bool clearAndRedrawView, AddEditMemberOrBoatMode addEditMode, AddEditMemberAttribute memberAttribute = AddEditMemberAttribute.None, Model.Member ifEditing_selectedMember = null, AddEditBoatAttribute boatAttribute = AddEditBoatAttribute.None, Model.Boat ifEditingBoat_selectedBoat = null) { //The collected function for adding/editing member or boat bool memberNotBoat = (addEditMode == AddEditMemberOrBoatMode.Add_Member || addEditMode == AddEditMemberOrBoatMode.Edit_Member); bool addNotEdit = (addEditMode == AddEditMemberOrBoatMode.Add_Boat || addEditMode == AddEditMemberOrBoatMode.Add_Member); if (clearAndRedrawView) { System.Console.Clear(); System.Console.WriteLine(""); System.Console.WriteLine((addNotEdit ? "Add a new " : "Edit existing ") + (memberNotBoat ? "member" : "boat")); System.Console.WriteLine("************************"); System.Console.WriteLine(""); if (!addNotEdit) //if editing, or adding/editing boat { System.Console.WriteLine("-> " + m_memberView.GetMemberPresentation(ifEditing_selectedMember, DisplayMembersMode.Compact)); if (addEditMode == AddEditMemberOrBoatMode.Edit_Boat) { System.Console.WriteLine(" -> " + m_memberView.GetBoatPresentation(ifEditingBoat_selectedBoat)); } System.Console.WriteLine(""); } } else { System.Console.WriteLine(""); } View.ActionEnum backAction; View.ActionEnum anyInputEnteredAction = View.ActionEnum.NotSpecified; List<InputAction> specificInputs = new List<InputAction>(); string attributeName = (memberNotBoat ? memberAttribute.ToString() : boatAttribute.ToString()).ToLower().Replace("_", " "); System.Console.Write("Please enter a " + (!addNotEdit ? "new " : "") + attributeName + (addNotEdit ? " for the new " + (memberNotBoat ? "member" : "boat") : "")); System.Console.Write(" ("); //if adding/editing boat type, display the boat types with a number and add that number as possible input if (!memberNotBoat && boatAttribute == AddEditBoatAttribute.Type) { View.ActionEnum action = (addNotEdit ? View.ActionEnum.MemberBoatAddingType : View.ActionEnum.MemberBoatEditedType); foreach (Model.Boat.BoatType type in Enum.GetValues(typeof(Model.Boat.BoatType))) { if (type != Model.Boat.BoatType.Undefined) { this.displayInputCharacters("", ((int)type).ToString(), " " + type.ToString().Replace("__", "/") + ", ", false); //add input action to list specificInputs.Add(new InputAction(((int)type).ToString(), action)); } } } if (!addNotEdit) { System.Console.Write("empty to leave unchanged, "); } this.displayInputCharacters("or ", "b", " to go back): ", false); //set the back action and the "any input" action depending on adding/editing member/boat if (memberNotBoat) //if member { if (addNotEdit) //if add mode { backAction = View.ActionEnum.GoToMainMenu; if (memberAttribute == AddEditMemberAttribute.Name) { anyInputEnteredAction = View.ActionEnum.MemberAddingName; } else if (memberAttribute == AddEditMemberAttribute.Personal_Number) { anyInputEnteredAction = View.ActionEnum.MemberAddingPersonalNumber; } } else //if edit mode { backAction = View.ActionEnum.MemberSelected_ShowMenuAgain; if (memberAttribute == AddEditMemberAttribute.Name) { anyInputEnteredAction = View.ActionEnum.MemberEditedName; } else if (memberAttribute == AddEditMemberAttribute.Personal_Number) { anyInputEnteredAction = View.ActionEnum.MemberEditedPersonalNumber; } } } else //if boat { backAction = View.ActionEnum.MemberSelected_ShowMenuAgain; if (addNotEdit) //if add mode { if (boatAttribute == AddEditBoatAttribute.Type) { anyInputEnteredAction = View.ActionEnum.MemberBoatAddingType; } else if (boatAttribute == AddEditBoatAttribute.Length) { anyInputEnteredAction = View.ActionEnum.MemberBoatAddingLength; } } else //if edit mode { if (boatAttribute == AddEditBoatAttribute.Type) { anyInputEnteredAction = View.ActionEnum.MemberBoatEditedType; } else if (boatAttribute == AddEditBoatAttribute.Length) { anyInputEnteredAction = View.ActionEnum.MemberBoatEditedLength; } } } if (anyInputEnteredAction == View.ActionEnum.NotSpecified) { //should never happen (as long as no new attributes are added without taking care of them here) throw new Exception("No action specified for attribute " + attributeName); } //add the any input action specificInputs.Add(new InputAction("", anyInputEnteredAction)); //set the current possible input this.setPossibleInputActions(specificInputs, backAction); }
//these four methods all calls displayAddEditMemberOrBoat with different parameters public void DisplayEditMemberAttribute(AddEditMemberAttribute attribute, Model.Member selectedMember) { this.displayAddEditMemberOrBoat(true, AddEditMemberOrBoatMode.Edit_Member, attribute, selectedMember); }