public SelectionStepDto ToDto(SelectionStep domainObject) { return(new SelectionStepDto() { JobApplicationId = domainObject.JobApplicationId, Comment = domainObject.Comment, Description = domainObject.Description }); }
/// <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"); }
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); }
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); }
/// <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); }
/// <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"); }