public QuiverEditorMvc(
     Form parent,
     Canvas canvas,
     Label centerOfCanvasLabel,
     Label mousePointerOnCanvasLocationLabel,
     ListView vertexListView,
     Label vertexCountLabel,
     ListView arrowListView,
     Label arrowCountLabel,
     IReadOnlyDictionary <QuiverEditorTool, Button> toolButtons,
     IReadOnlyDictionary <QuiverEditorTool, IEnumerable <Control> > toolSettingsControlsDictionary,
     NumericUpDown vertexToAddNud,
     ToolStripMenuItem undoMenuItem,
     ToolStripMenuItem redoMenuItem,
     ToolStripMenuItem relabelVerticesMenuItem,
     ToolStripMenuItem rotateVerticesMenuItem,
     IReadOnlyDictionary <PredefinedQuiver, ToolStripMenuItem> predefinedQuiverMenuItems,
     ToolStripMenuItem importFromMutationAppFileToolStripMenuItem,
     OpenFileDialog importFromMutationAppFileOpenFileDialog,
     ToolStripMenuItem exportAsMutationAppFileMenuItem,
     SaveFileDialog exportAsMutationAppFileSaveFileDialog)
 {
     Model = new QuiverEditorModel(new QuiverInPlane <int>());
     View  = new QuiverEditorView(
         Model,
         parent,
         canvas,
         centerOfCanvasLabel,
         mousePointerOnCanvasLocationLabel,
         vertexListView,
         vertexCountLabel,
         arrowListView,
         arrowCountLabel,
         toolButtons,
         toolSettingsControlsDictionary,
         vertexToAddNud,
         undoMenuItem,
         redoMenuItem,
         relabelVerticesMenuItem,
         rotateVerticesMenuItem,
         predefinedQuiverMenuItems,
         importFromMutationAppFileToolStripMenuItem,
         importFromMutationAppFileOpenFileDialog,
         exportAsMutationAppFileMenuItem,
         exportAsMutationAppFileSaveFileDialog);
     Controller = new QuiverEditorController(Model, View);
 }
        public QuiverEditorController(QuiverEditorModel model, QuiverEditorView view)
        {
            this.model = model ?? throw new ArgumentNullException(nameof(model));
            this.view  = view ?? throw new ArgumentNullException(nameof(view));

            view.KeyDown += View_KeyDown;
            view.VertexListViewKeyDown          += View_VertexListViewKeyDown;
            view.ArrowListViewKeyDown           += View_ArrowListViewKeyDown;
            view.SelectToolKeyDown              += View_SelectToolKeyDown;
            view.VertexMouseDown                += View_VertexMouseDown;
            view.ArrowMouseDown                 += View_ArrowMouseDown;
            view.CanvasClicked                  += View_CanvasClicked;
            view.VertexSelectedInListView       += View_VertexSelectedInListView;
            view.ArrowSelectedInListView        += View_ArrowSelectedInListView;
            view.ToolButtonClicked              += View_ToolButtonClicked;
            view.VertexToAddChanged             += View_VertexToAddNudValueChanged;
            view.UndoMenuItemClicked            += View_UndoMenuItemClicked;
            view.RedoMenuItemClicked            += View_RedoMenuItemClicked;
            view.RelabelVerticesMenuItemClicked += View_RelabelVerticesMenuItemClicked;
            view.RotateVerticesMenuItemClicked  += View_RotateVerticesMenuItemClicked;
            view.PredefinedQuiverDialogAccepted += View_PredefinedQuiverDialogAccepted;
            view.ImportQuiverFromMutationAppFileDialogAccepted += View_ImportQuiverFromMutationAppFileDialogAccepted;
            view.ExportQuiverAsMutationAppFileDialogAccepted   += View_ExportQuiverAsMutationAppFileDialogAccepted;
        }