private void OnNewSpellButtonClick(object sender, EventArgs e)
 {
     if (DataChangeWarning() == false)
     {
         return;
     }
     AllowChangeEvents          = false;
     Model                      = new SpellModel();
     SpellListBox.SelectedIndex = -1;
     PopulateFields("");
     SpellNameInputBox.Focus();
     DataHasChanged    = false;
     AllowChangeEvents = true;
 }
        private void TextBoxChange(object sender, InputType type)
        {
            string newStringValue;

            switch (type)
            {
            case InputType.SpellName:
            {
                newStringValue = SpellNameInputBox.Text;
                if (newStringValue != Model.SpellName)
                {
                    if (newStringValue == DatabaseName)
                    {
                        Model.SpellName             = newStringValue;
                        SpellNameInputBox.BackColor = Color.White;
                        SaveFeedbackLabel.Text      = "";
                        break;
                    }
                    if (CheckForUniqueness(newStringValue, InputType.SpellName) == true)
                    {
                        Model.SpellName             = newStringValue;
                        DataHasChanged              = true;
                        SpellNameInputBox.BackColor = Color.White;
                        SaveFeedbackLabel.Text      = "";
                    }
                    else
                    {
                        //Let the user know he needs to choose a new name.
                        AllowChangeEvents           = false;
                        SpellNameInputBox.Text      = Model.SpellName;
                        SpellNameInputBox.BackColor = Color.OrangeRed;
                        SaveFeedbackLabel.Text      = "Error: Name is already in use, please choose another";
                        AllowChangeEvents           = true;
                        SpellNameInputBox.Focus();
                    }
                }
                else
                {
                    SpellNameInputBox.BackColor = Color.White;
                    SaveFeedbackLabel.Text      = "";
                }
                break;
            }

            case InputType.IconName:
            {
                Model.IconFilename = SpellIconInputBox.Text;
                SpellIcon          = new IconClass("Spells\\" + Model.IconFilename);
                SpellIcon.SetLocation(this.Width, this.Height, IconLocation);
                //redraw the icon
                Invalidate();
                DataHasChanged = true;
                break;
            }

            case InputType.Duration:
            {
                Model.Duration = DurationInputTextBox.Text;
                DataHasChanged = true;
                break;
            }

            default:
            {
                Debug.WriteLine("Error: Unknown Type in Text Box Change");
                break;
            }
            }
        }