/// <summary>
        /// This method is used to prepare this control.
        /// </summary>
        /// <param name="controllerArg"></param>
        /// <param name="projectArg"></param>
        internal void Setup(Project projectArg, ActiveControlEnum activeControl, MainForm mainForm)
        {
            // Set Properties
            this.SelectedProject = projectArg;

            // Set ParentMainForm
            this.ParentMainForm = mainForm;

            // Set the text
            this.WizardForm.Text = "New Project";

            // if the selected project exists
            if (this.SelectedProject != null)
            {
                // If this is an existing project
                if (!this.SelectedProject.IsNew)
                {
                    // Set the text to edit project
                    this.WizardForm.Text = "Edit Project";
                }

                // Create the initial selected proejct
                this.InitialSelectedProject = SerializationManager.SerializeObject(this.SelectedProject);
            }

            // Set Selected Control
            this.ButtonSelected(activeControl);
        }
        /// <summary>
        /// This method sets the selected button by passing in
        /// the ActiveControlEnum from the wizard.
        /// </summary>
        /// <param name="tabButton"></param>
        internal void SetSelectedButton(ActiveControlEnum selectedControl)
        {
            // initial value
            TabButton tabButton = null;

            // Determine Which Button To Make Visible
            switch (selectedControl)
            {
            case ActiveControlEnum.ProjectsTab:

                // set tabButton
                tabButton = this.ProjectsTab;

                // required
                break;

            case ActiveControlEnum.DatabasesTab:

                // set tabButton
                tabButton = this.DatabasesTab;

                // required
                break;

            case ActiveControlEnum.DataObjectsTab:

                // set tabButton
                tabButton = this.DataObjectsTab;

                // required
                break;

            case ActiveControlEnum.DataManagerTab:

                // set tabButton
                tabButton = this.DataManagerTab;

                // required
                break;

            case ActiveControlEnum.DataOperationsTab:

                // set tabButton
                tabButton = this.DataOperationsTab;

                // required
                break;

            case ActiveControlEnum.ControllersTab:

                // set tabButton
                tabButton = this.ControllersTab;

                // required
                break;

            case ActiveControlEnum.ReadersTab:

                // set tabButton
                tabButton = this.ReadersTab;

                // required
                break;

            case ActiveControlEnum.WritersTab:

                // set tabButton
                tabButton = this.WritersTab;

                // required
                break;

            case ActiveControlEnum.StoredProceduresTab:

                // set tabButton
                tabButton = this.StoredProceduresTab;

                // required
                break;
            }

            // set the tabButton
            if (tabButton != null)
            {
                // Set the tabButton
                this.SetSelectedButton(tabButton);
            }

            // Refresh
            this.Refresh();
        }
        /// <summary>
        /// A button was selected in the WizardStatusControl.
        /// </summary>
        internal void ButtonSelected(ActiveControlEnum button)
        {
            // Make All Buttons Invisible
            HideControls();

            // Set SelectedControl to Null
            this.SelectedControl = null;

            // Set the selected button
            this.SelectedButton = button;

            // Determine Which Button To Make Visible
            switch (button)
            {
            case ActiveControlEnum.ProjectsTab:

                // Set SelectedControl
                this.SelectedControl = this.ProjectEditor;

                // required
                break;

            case ActiveControlEnum.DatabasesTab:

                // Set SelectedControl
                this.SelectedControl = this.DatabasesEditor;

                // required
                break;

            case ActiveControlEnum.DataObjectsTab:

                // Set SelectedControl
                this.SelectedControl = this.DataObjectsEditor;

                // required
                break;

            case ActiveControlEnum.DataManagerTab:

                // set selected control
                this.SelectedControl = this.DataManagerEditor;

                // required
                break;

            case ActiveControlEnum.DataOperationsTab:

                // set selected control
                this.SelectedControl = this.DataOperationsEditor;

                // required
                break;

            case ActiveControlEnum.ControllersTab:

                // set selected control
                this.SelectedControl = this.ControllerEditor;

                // required
                break;

            case ActiveControlEnum.ReadersTab:

                // set selected control
                this.SelectedControl = this.ReaderEditor;

                // required
                break;

            case ActiveControlEnum.WritersTab:

                // set selected control
                this.SelectedControl = this.WriterEditor;

                // required
                break;

            case ActiveControlEnum.StoredProceduresTab:

                // set selected control
                this.SelectedControl = this.StoredProcedureEditor;

                // required
                break;
            }

            // if a selected control has been set
            if (this.SelectedControl != null)
            {
                // Notify the wizard control
                this.WizardStatusControl.SetSelectedButton(button);

                // Cast the selected control as a control so the visible property
                // can be set
                Control control = this.SelectedControl as Control;

                // if the control exists
                if (control != null)
                {
                    // set this control to visible
                    control.Visible = true;
                }

                // Display the selected cotnrol
                this.SelectedControl.DisplaySelectedProject();

                // Enable Controls
                UIEnable();
            }

            // Refresh
            this.Refresh();
        }