public RecipeItemParseResultsWizard(IAddIngredient ingredientAdder, IEnumerable <RecipeItemParseResult> results)
        {
            mIngredientAdder = ingredientAdder;
            InitializeComponent();

            mWizard      = new WizardControl();
            mWizard.Dock = DockStyle.Fill;
            Controls.Add(mWizard);

            var lookup = results.ToLookup(r => r.Success);

            foreach (var result in lookup[true])
            {
                var editor = new SelectableIngredientEdit();
                editor.Amount = $"{result.Quantity}";
                editor.Units  = $"{result.Unit.Display}";
                editor.Populate(result.Ingredients);
                editor.Dock = DockStyle.Fill;

                Action onCommit = () => UpdateResult(result, editor.Selected);
                mCommitActions.Add(onCommit);

                var page = new WizardPage();
                page.DescriptionText = "Select the ingredient that matches what you entered";
                page.Text            = result.Item.Text;
                page.Controls.Add(editor);

                mWizard.Pages.Add(page);
            }

            var failures = lookup[false].ToArray();

            if (failures.Length > 0)
            {
                var failureEditor = new UnknownRecipeItemEdit();
                failureEditor.Populate(failures);
                failureEditor.Dock            = DockStyle.Fill;
                failureEditor.IngredientAdder = mIngredientAdder;
                failureEditor.Committer       = this;

                var failurePage = new WizardPage();
                failurePage.DescriptionText = "The following item(s) could not be found";
                failurePage.Text            = "Failed to find";
                failurePage.Controls.Add(failureEditor);
                mWizard.Pages.Add(failurePage);
            }

            mWizard.SelectedPageIndex = 0;
        }
 public RecipeItemParseResultsWizard(IAddIngredient ingredientAdder, params RecipeItemParseResult[] results)
     : this(ingredientAdder, results.Select(r => r))
 {
 }