public SelectionStepDto ToDto(SelectionStep domainObject)
 {
     return(new SelectionStepDto()
     {
         JobApplicationId = domainObject.JobApplicationId,
         Comment = domainObject.Comment,
         Description = domainObject.Description
     });
 }
예제 #2
0
        /// <summary>
        /// Runs the wizard.
        /// </summary>
        public void Run()
        {
            var steps = new List <IStep>();

            controller = new WizardController(steps);

            // Welcome text
            steps.Add(new TextDisplayStep("This wizard will guide you through the steps of configuring security for this configuration", "Welcome"));

            // Configuration mode step
            var modeStep = new SelectionStep("Security Mode",
                                             "Please choose the type of security you want:",
                                             "None",
                                             "Internal");

            modeStep.NextHandler = () =>
            {
                settings.Clear();
                controller.DeleteAllAfterCurrent();
                switch ((string)modeStep.Selected)
                {
                case "None":
                    settings.Add("No security");
                    controller.AddAfterCurrent(GenerateNoneSteps());
                    configureProjects = () =>
                    {
                        foreach (var project in configuration.Projects)
                        {
                            project.Security = new ProjectSecurity();
                        }
                    };
                    security = new ServerSecurity();
                    break;

                case "Internal":
                    settings.AddRange(new string[]
                    {
                        "Internal security",
                        "No cache",
                        "No XML logging",
                        "No default server permission",
                        "No default project permission"
                    });
                    controller.AddAfterCurrent(GenerateInternalSteps());
                    security = new InternalServerSecurity();
                    break;
                }
                return(true);
            };
            steps.Add(modeStep);
            steps.Add(new TextDisplayStep("Nothing"));

            var result = controller.StartWizard("Security Configuration Wizard");
        }
예제 #3
0
        static void Main(string[] args)
        {
            //Creating the step sequence for choosing an apple
            var appleSteps = new List <IStep>();

            appleSteps.Add(new SelectionStep("Apple selection:",
                                             "Please select an apple sort",
                                             "Granny Smith", "Macintosh", "Red Delicious"));
            appleSteps.Add(generateMessageStep("Thank you", "Thank you for choosing an apple."));

            //Creating the step sequence for choosing an orange
            var orangeSteps = new List <IStep>();

            orangeSteps.Add(new SelectionStep("Orange selection",
                                              "Please select an orange sort:",
                                              "Persian", "Navel", "Valencia"));
            orangeSteps.Add(generateMessageStep("Thank you",
                                                "Thank you for choosing an orange."));

            //Now create the initial step sequence. This is the sequence
            //we'll feed to the wizard controller when starting the wizard.
            var fruitSelection = new SelectionStep("Fruit selection",
                                                   "Please pick a fruit:",
                                                   "Apples", "Oranges");
            var initialStepSequence = new List <IStep>();

            initialStepSequence.Add(fruitSelection);
            initialStepSequence.Add(new TemplateStep(new TextBox())); //This is a placeholder step.
            //It will never appear in the wizard. We add it so that the Finish button
            //will not appear on the first step.

            WizardController controller = new WizardController(initialStepSequence);

            //In the NextHandler of the first step, we delete the placeholder step,
            //determine which step sequence comes next and add it to the current
            //step sequence.
            fruitSelection.NextHandler = () =>
            {
                controller.DeleteAllAfterCurrent();
                if (fruitSelection.Selected.Equals("Apples"))
                {
                    controller.AddAfterCurrent(appleSteps);
                }
                else
                {
                    controller.AddAfterCurrent(orangeSteps);
                }
                return(true);
            };

            controller.StartWizard("Apples & Oranges");
        }
            public (IParseFunction, IReadOnlyList <InterfaceMethod>) Visit(Selection target, INodeType input)
            {
                var interfaceMethods = new List <InterfaceMethod>();
                var newSteps         = new List <SelectionStep>();

                foreach (var step in target.Steps)
                {
                    IParseFunction func           = step.Function;
                    INodeType      funcReturnType = func.ReturnType;

                    InterfaceMethod interfaceMethod = null;
                    if (input != EmptyNodeType.Instance)
                    {
                        var name = $"{interfaceMethodName}{++count}";
                        interfaceMethod = new InterfaceMethod(input, name, GetParameterTypesFromReturnType(funcReturnType));
                        interfaceMethods.Add(interfaceMethod);
                    }

                    var newStep = new SelectionStep(func, interfaceMethod);
                    newSteps.Add(newStep);
                }

                return(new Selection(newSteps), interfaceMethods);
            }
예제 #5
0
        public static User RunNewUserWizard()
        {
            //Create a list of steps
            List <IStep> steps   = new List <IStep>();
            User         newUser = new User();

            //Step 1. Welcome message
            TextBox t = new TextBox();

            t.Multiline  = true;
            t.ScrollBars = ScrollBars.Vertical;
            t.ReadOnly   = true;
            t.Text       = Resources.WelcomeMessage;
            t.Select(0, 0);
            steps.Add(new TemplateStep(t, 10, "Welcome"));

            //Step 2. Role selection
            var roleStep = new SelectionStep("Role Selection", "Please select the user's role:",
                                             Enum.GetNames(typeof(User.UserRole)));

            roleStep.NextHandler = () =>
            {
                newUser.Role = (User.UserRole)Enum.Parse(typeof(User.UserRole), roleStep.Selected as string);
                return(true);
            };
            steps.Add(roleStep);

            //Step 3. User Details
            var userFormStep = new TextFormStep("User Details");

            userFormStep.Subtitle = "This step allows you to specify the user's personal information.";
            userFormStep.Prompt   = "Please provide the following user information:";
            var userIdQuestion   = userFormStep.AddQuestion("User &ID:", Validation.NonEmpty);
            var fullNameQuestion = userFormStep.AddQuestion("Full &Name:", Validation.NonEmpty);
            var passwordQuestion = userFormStep.AddQuestion("&Password (6 or more characters):",
                                                            Validation.MinLength(6), '*');
            var passwordQuestionRetype = userFormStep.AddQuestion("&Retype Password:"******"&E-Mail address:", Validation.NonEmpty);

            steps.Add(userFormStep);
            userFormStep.NextHandler = () =>
            {
                if (!passwordQuestion.Answer.Equals(passwordQuestionRetype.Answer))
                {
                    MessageBox.Show("The password does not match the retyped password.",
                                    Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }
                newUser.FullName = fullNameQuestion.Answer;
                newUser.Email    = emailAddressQuestion.Answer;
                newUser.Password = passwordQuestion.Answer;
                newUser.UserId   = userIdQuestion.Answer;
                return(true);
            };

            //Step 4. Picture Selection step. This step features the selection of a file.
            var pictureSelectionStep = new FileSelectionStep("User picture selection", "Please provide a picture for this user.");

            pictureSelectionStep.Filter           = "Images|*.bmp;*.jpg;*.gif;*.tif;*.png|All Files (*.*)|*.*";
            pictureSelectionStep.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            pictureSelectionStep.NextHandler      = () =>
            {
                if (File.Exists(pictureSelectionStep.SelectedFullPath))
                {
                    newUser.Picture = Image.FromFile(pictureSelectionStep.SelectedFullPath);
                    return(true);
                }
                else
                {
                    MessageBox.Show("Selected image does not exist", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }
            };
            pictureSelectionStep.AllowNextStrategy =
                () => !string.IsNullOrEmpty(pictureSelectionStep.SelectedFullPath);
            steps.Add(pictureSelectionStep);

            //Step 5. Preview step. This step features a custom UI implemented separately.
            steps.Add(new CustomSteps.PreviewStep(newUser));

            //Run the wizard with the steps defined above
            WizardController wizardController = new WizardController(steps);

            wizardController.LogoImage = Resources.NerlimWizardHeader;
            var wizardResult = wizardController.StartWizard("New User");

            //If the user clicked "Cancel", don't add the user
            if (wizardResult == WizardController.WizardResult.Cancel)
            {
                newUser = null;
            }

            return(newUser);
        }
예제 #6
0
        /// <summary>
        /// Generate the steps required for internal security.
        /// </summary>
        /// <returns></returns>
        private List <IStep> GenerateInternalSteps()
        {
            var steps = new List <IStep>();

            // Cache
            var cacheConfig = new CacheConfiguration();
            var cacheStep   = new TemplateStep(cacheConfig, 0, "Session Caching");

            cacheStep.NextHandler += () =>
            {
                (security as InternalServerSecurity).Cache = cacheConfig.GenerateConfig();
                settings[1] = cacheConfig.GenerateDescription();
                return(true);
            };
            steps.Add(cacheStep);

            // XML logging
            var xmlConfig = new XmlAuditingConfiguration();
            var xmlStep   = new TemplateStep(xmlConfig, 0, "XML Auditing");

            xmlStep.StepReachedHandler += () =>
            {
                if (loggers.ContainsKey(typeof(FileXmlLogger)))
                {
                    loggers.Remove(typeof(FileXmlLogger));
                }
            };
            xmlStep.NextHandler += () =>
            {
                var newLogger = xmlConfig.GenerateConfig();
                if (newLogger != null)
                {
                    loggers.Add(typeof(FileXmlLogger), newLogger);
                }
                settings[2] = xmlConfig.GenerateDescription();
                return(true);
            };
            steps.Add(xmlStep);

            // Default server permission
            var defaultServerPermission = new SelectionStep("Default Server Permission",
                                                            "What do you want as the default permission at the server level:",
                                                            "None",
                                                            "Allow",
                                                            "Deny");

            defaultServerPermission.NextHandler += () =>
            {
                switch ((string)defaultServerPermission.Selected)
                {
                case "None":
                    (security as InternalServerSecurity).DefaultRight = null;
                    settings[3] = "No default server permission";
                    break;

                case "Allow":
                    (security as InternalServerSecurity).DefaultRight = SecurityRight.Allow;
                    settings[3] = "Default server permission is allow";
                    break;

                case "Deny":
                    (security as InternalServerSecurity).DefaultRight = SecurityRight.Deny;
                    settings[3] = "Default server permission is deny";
                    break;
                }
                return(true);
            };
            steps.Add(defaultServerPermission);

            // Default project permission
            var defaultProjectPermission = new SelectionStep("Default Project Permission",
                                                             "What do you want as the default permission at the project level:",
                                                             "None",
                                                             "Allow",
                                                             "Deny");

            defaultProjectPermission.NextHandler += () =>
            {
                SecurityRight?right = null;
                switch ((string)defaultProjectPermission.Selected)
                {
                case "None":
                    settings[4] = "No default project permission";
                    break;

                case "Allow":
                    right       = SecurityRight.Allow;
                    settings[4] = "Default project permission is allow";
                    break;

                case "Deny":
                    right       = SecurityRight.Deny;
                    settings[4] = "Default project permission is deny";
                    break;
                }
                configureProjects = () =>
                {
                    foreach (var project in configuration.Projects)
                    {
                        project.Security = new DefaultProjectSecurity
                        {
                            DefaultRight = right
                        };
                    }
                };
                return(true);
            };
            steps.Add(defaultProjectPermission);

            // Confirmation page
            steps.Add(GenerateConfirmation());
            steps.Add(new TextDisplayStep("Security settings have been updated", "Finished"));
            return(steps);
        }
예제 #7
0
        /// <summary>
        /// Runs the wizard.
        /// </summary>
        public void Run()
        {
            if (!(configuration.Security is InternalServerSecurity))
            {
                if (MessageBox.Show("Setting permissions is only valid for internal security, do you want to change to internal security now?",
                                    "Invalid security manager",
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return;
                }
                else
                {
                    changeManager = true;
                }
            }
            var steps = new List <IStep>();

            controller = new WizardController(steps);

            // Welcome text
            steps.Add(new TextDisplayStep("This wizard will guide you through the steps of setting permissions for a project in this configuration.", "Welcome"));
            settings.AddRange(new string[] {
                "No project selected",
                "No default permission"
            });

            // Select the projec
            var projectSelection     = new SelectProjectStep(configuration);
            var projectSelectionStep = new TemplateStep(projectSelection, 0, "Select Project");

            projectSelectionStep.NextHandler += () =>
            {
                settings[0] = string.Format("Configuring project '{0}'", projectSelection.SelectedProject);
                return(true);
            };
            steps.Add(projectSelectionStep);

            // Default project permission
            var defaultProjectPermission = new SelectionStep("Default Project Permission",
                                                             "What do you want as the default project permission:",
                                                             "None",
                                                             "Allow",
                                                             "Deny",
                                                             "Inherit");

            defaultProjectPermission.NextHandler += () =>
            {
                switch ((string)defaultProjectPermission.Selected)
                {
                case "None":
                    settings[1] = "No default permission";
                    break;

                case "Allow":
                    settings[1] = "Default project permission is allow";
                    break;

                case "Deny":
                    settings[1] = "Default project permission is deny";
                    break;

                case "Inherit":
                    settings[1] = "Default project permission is inherit";
                    break;
                }
                return(true);
            };
            steps.Add(defaultProjectPermission);

            // Set the force/abort build permissions
            var defaultPermission = new SelectUsersStep(configuration);

            defaultPermission.Caption = "What are the default permissions:";
            var defaultPermissionStep = new TemplateStep(defaultPermission, 0, "Set force/abort build permissions");

            defaultPermissionStep.NextHandler += () =>
            {
                return(true);
            };
            steps.Add(defaultPermissionStep);

            // Set the force/abort build permissions
            var forceBuildPermission = new SelectUsersStep(configuration);

            forceBuildPermission.Caption = "What are the allowed permissions for force/abort build:";
            var forceBuildPermissionStep = new TemplateStep(forceBuildPermission, 0, "Set force/abort build permissions");

            forceBuildPermissionStep.NextHandler += () =>
            {
                return(true);
            };
            steps.Add(forceBuildPermissionStep);

            // Set the start/stop project permissions
            var startProjectPermission = new SelectUsersStep(configuration);

            startProjectPermission.Caption = "Which users are allowed to start/stop builds:";
            var startProjectPermissionStep = new TemplateStep(startProjectPermission, 0, "Set start/stop project permissions");

            startProjectPermissionStep.NextHandler += () =>
            {
                return(true);
            };
            steps.Add(startProjectPermissionStep);

            // Set the send message permissions
            var sendMessagePermission = new SelectUsersStep(configuration);

            sendMessagePermission.Caption = "What are the allowed permissions for sending messages:";
            var sendMessagePermissionStep = new TemplateStep(sendMessagePermission, 0, "Set send message permissions");

            sendMessagePermissionStep.NextHandler += () =>
            {
                return(true);
            };
            steps.Add(sendMessagePermissionStep);

            // Configuration mode step
            var confirmation = GenerateConfirmation();

            confirmation.NextHandler += () =>
            {
                if (changeManager)
                {
                    configuration.Security = new InternalServerSecurity();
                }
                configuration.Projects[projectSelection.SelectedProject].Security = GeneratePermissions(defaultPermission,
                                                                                                        forceBuildPermission,
                                                                                                        startProjectPermission,
                                                                                                        sendMessagePermission);
                configuration.Security = configuration.Security;    // Force a refresh
                return(true);
            };
            steps.Add(confirmation);
            steps.Add(new TextDisplayStep("Users have been imported", "Finished"));

            var result = controller.StartWizard("Security Configuration Wizard");
        }