public static IStep createStepWithTextBox(string stepTitle, string message)
    	{
			var textBox = new TextBox();
            textBox.Multiline = true;
            textBox.ScrollBars = ScrollBars.Vertical;
            textBox.ReadOnly = true;
            textBox.Text = message;
            textBox.Select(0, 0);	
            var newStep = new TemplateStep(textBox, 10, stepTitle);
            return newStep;
    	}
        public static IStep add_WebBrowser(this List<IStep> steps, string stepTitle, string stepSubTitle, string defaultUrl, Action<IStep> OnComponentAction)
        {

            //control.AllowDrop = false;
            var newStep = new TemplateStep(new Panel(), 10, stepTitle);
            newStep.Subtitle = stepSubTitle;
            newStep.OnComponentLoad =
                (step) =>
                {
                    var webBrowser = new WebBrowser();
                    step.UI = webBrowser;
                    if (false == string.IsNullOrEmpty(defaultUrl))
                        webBrowser.Navigate(defaultUrl);
                };
            newStep.OnComponentAction = OnComponentAction;
            steps.Add(newStep);
            return newStep;
        }
 public static TemplateStep createStepWith_TextBox(string stepTitle, TextBox textBox)
 {
     var newStep = new TemplateStep(textBox, 10, stepTitle);
     return newStep;
 }
        public static IStep add_Panel(this List<IStep> steps, string stepTitle, string stepSubTitle, Action<IStep> onComponentLoad)
        {
            Panel panel = new Panel();
            var newStep = new TemplateStep(panel, stepTitle);

            newStep.Subtitle = stepSubTitle;
            newStep.OnComponentAction = onComponentLoad;
            steps.Add(newStep);
            return newStep;
        }
        public static IStep add_SelectFolder(this List<IStep> steps, string stepTitle, string defaultFolder, Action<string> setResult)
        {
            // textbox
            var textBox = new TextBox();
            textBox.TextChanged += (sender, e) =>
            {
                setResult(textBox.Text);
                PublicDI.log.info("in TextChanged");
            };
            textBox.Text = defaultFolder;
            textBox.Width = 400;
            textBox.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            textBox.AllowDrop = true;
            textBox.DragDrop += (sender, e) => textBox.set_Text(Dnd.tryToGetFileOrDirectoryFromDroppedObject(e));
            textBox.DragEnter += (sender, e) => e.Effect = DragDropEffects.Copy;

            // button
            var button = new Button();
            button.Text = "Select Folder";
            button.Width += 20;
            button.Click += (sender, e) =>
            {
                var folderBrowserDialog = new FolderBrowserDialog();
                folderBrowserDialog.SelectedPath = defaultFolder;
                if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
                {
                    textBox.Text = folderBrowserDialog.SelectedPath;
                    folderBrowserDialog.Dispose();
                }
            };

            // panel
            var panel = new FlowLayoutPanel();
            panel.Dock = DockStyle.Fill;// AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;

            panel.Controls.Add(textBox);
            panel.Controls.Add(button);

            var newStep = new TemplateStep(panel, 10, stepTitle);
            steps.Add(newStep);
            return newStep;
        }
        public static IStep add_Control(this List<IStep> steps, Control control, string stepTitle, string stepSubTitle, Action<IStep> onComponentLoad)
        {
            control.AllowDrop = false;
            var newStep = new TemplateStep(control, 10, stepTitle);
			newStep.OnComponentAction = onComponentLoad;
			newStep.Subtitle = stepSubTitle;
            steps.Add(newStep);
            return newStep;
        }