コード例 #1
0
        private void RunImageCapture(object sender, EventArgs e)
        {
            //get input control
            CommandItemControl inputBox         = (CommandItemControl)sender;
            UIPictureBox       targetPictureBox = (UIPictureBox)inputBox.Tag;
            string             imageSource      = targetPictureBox.EncodedImage;

            if (string.IsNullOrEmpty(imageSource))
            {
                MessageBox.Show("Please capture an image before attempting to test!");
                return;
            }

            //hide all
            HideAllForms();

            try
            {
                //run image recognition
                SurfaceAutomationCommand surfaceAutomationCommand = new SurfaceAutomationCommand();
                surfaceAutomationCommand.v_ImageCapture = imageSource;
                surfaceAutomationCommand.TestMode       = true;
                surfaceAutomationCommand.RunCommand(null);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.ToString());
            }
            //show all forms
            ShowAllForms();
        }
コード例 #2
0
        public List <Control> CreateConditionActionParameterTable(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            var noCSharpControls = new List <Control>();

            RecorderControl = new CommandItemControl("guirecorder_helper", Resources.command_camera, "Element Recorder");
            RecorderControl.Hide();

            noCSharpControls.Add(commandControls.CreateDefaultLabelFor("v_ActionType", ConditionCommand));
            ActionDropdown = commandControls.CreateDropdownFor("v_ActionType", ConditionCommand);
            noCSharpControls.AddRange(commandControls.CreateUIHelpersFor("v_ActionType", ConditionCommand, new Control[] { ActionDropdown }, editor));
            ActionDropdown.SelectionChangeCommitted += Action_SelectionChangeCommitted;
            noCSharpControls.Add(ActionDropdown);

            noCSharpControls.Add(commandControls.CreateDefaultLabelFor("v_ActionParameterTable", ConditionCommand));

            RecorderControl.Click += (sender, e) => ShowElementRecorder(sender, e, editor, commandControls);
            noCSharpControls.Add(RecorderControl);

            ActionGridViewHelper = commandControls.CreateDefaultDataGridViewFor("v_ActionParameterTable", ConditionCommand);
            ActionGridViewHelper.AllowUserToAddRows    = false;
            ActionGridViewHelper.AllowUserToDeleteRows = false;
            ActionGridViewHelper.MouseEnter           += ActionGridViewHelper_MouseEnter;

            noCSharpControls.AddRange(commandControls.CreateUIHelpersFor("v_ActionParameterTable", ConditionCommand, new Control[] { ActionGridViewHelper }, editor));
            noCSharpControls.Add(ActionGridViewHelper);
            return(noCSharpControls);
        }
コード例 #3
0
        public void ShowElementSelector(object sender, EventArgs e)
        {
            //create element selector form
            frmElementSelector newElementSelector = new frmElementSelector();

            //get copy of user element and append system elements, then load to combobox
            var elementList = _currentEditor.ScriptElements.Select(f => f.ElementName).ToList();

            newElementSelector.lstElements.Items.AddRange(elementList.ToArray());

            //if user pressed "OK"
            if (newElementSelector.ShowDialog() == DialogResult.OK)
            {
                //ensure that a element was actually selected
                if (newElementSelector.lstElements.SelectedItem == null)
                {
                    //return out as nothing was selected
                    MessageBox.Show("There were no elements selected!");
                    return;
                }

                //grab the referenced input assigned to the 'insert element' button instance
                CommandItemControl inputBox = (CommandItemControl)sender;

                if (inputBox.Tag is DataGridView)
                {
                    DataGridView targetDGV = (DataGridView)inputBox.Tag;

                    targetDGV.DataSource = _currentEditor.ScriptElements
                                           .Where(x => x.ElementName == newElementSelector.lstElements.SelectedItem.ToString().Replace("<", "").Replace(">", ""))
                                           .FirstOrDefault().ElementValue;
                }
            }
        }
コード例 #4
0
        public static CommandItemControl NativeChromeRecorderControl(DataTable NativeSearchParameters, IfrmCommandEditor editor)
        {
            CommandItemControl helperControl = new CommandItemControl("ChromeRecorder", Resources.command_nativechrome, "Chrome Element Recorder");

            helperControl.Click += new EventHandler((s, e) => GetUIElement(s, e, NativeSearchParameters, editor));
            return(helperControl);
        }
コード例 #5
0
        public BeginIfCommand_cn()
        {
            this.CommandName = "BeginIfCommand";
            // this.SelectionName = "Begin If";
            this.SelectionName   = Settings.Default.Begin_If_cn;
            this.CommandEnabled  = true;
            this.CustomRendering = true;

            //define parameter table
            this.v_IfActionParameterTable = new System.Data.DataTable
            {
                TableName = DateTime.Now.ToString("IfActionParamTable" + DateTime.Now.ToString("MMddyy.hhmmss"))
            };
            this.v_IfActionParameterTable.Columns.Add("Parameter Name");
            this.v_IfActionParameterTable.Columns.Add("Parameter Value");

            IfGridViewHelper = new DataGridView();
            IfGridViewHelper.AllowUserToAddRows    = true;
            IfGridViewHelper.AllowUserToDeleteRows = true;
            IfGridViewHelper.Size = new Size(400, 250);
            IfGridViewHelper.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            IfGridViewHelper.DataBindings.Add("DataSource", this, "v_IfActionParameterTable", false, DataSourceUpdateMode.OnPropertyChanged);
            IfGridViewHelper.AllowUserToAddRows    = false;
            IfGridViewHelper.AllowUserToDeleteRows = false;
            IfGridViewHelper.MouseEnter           += IfGridViewHelper_MouseEnter;

            RecorderControl                = new taskt.UI.CustomControls.CommandItemControl();
            RecorderControl.Padding        = new System.Windows.Forms.Padding(10, 0, 0, 0);
            RecorderControl.ForeColor      = Color.AliceBlue;
            RecorderControl.Name           = "guirecorder_helper";
            RecorderControl.CommandImage   = UI.Images.GetUIImage("ClipboardGetTextCommand");
            RecorderControl.CommandDisplay = "Element Recorder";
            RecorderControl.Click         += ShowIfElementRecorder;
            RecorderControl.Hide();
        }
コード例 #6
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));

            CommandItemControl buildConnectionStringControl = new CommandItemControl("connectionString", Resources.command_database, "Build Connection String");

            buildConnectionStringControl.Click += (sender, e) => BuildConnectionString(sender, e);

            CommandItemControl testConnectionControl = new CommandItemControl("connectionTest", Resources.command_database, "Test Connection");

            testConnectionControl.Click += async(sender, e) => await TestConnection(sender, e, editor);

            _connectionString = commandControls.CreateDefaultInputFor("v_ConnectionString", this);
            RenderedControls.Add(commandControls.CreateDefaultLabelFor("v_ConnectionString", this));
            RenderedControls.Add(buildConnectionStringControl);
            RenderedControls.Add(testConnectionControl);
            RenderedControls.AddRange(commandControls.CreateUIHelpersFor("v_ConnectionString", this, new[] { _connectionString }, editor));
            RenderedControls.Add(_connectionString);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_ConnectionStringPassword", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_TestConnection", this, editor));

            return(RenderedControls);
        }
コード例 #7
0
        public BeginLoopCommand()
        {
            CommandName       = "BeginLoopCommand";
            SelectionName     = "Begin Loop";
            CommandEnabled    = true;
            CommandIcon       = Resources.command_startloop;
            ScopeStartCommand = true;

            //define parameter table
            v_ActionParameterTable = new DataTable
            {
                TableName = DateTime.Now.ToString("LoopActionParamTable" + DateTime.Now.ToString("MMddyy.hhmmss"))
            };
            v_ActionParameterTable.Columns.Add("Parameter Name");
            v_ActionParameterTable.Columns.Add("Parameter Value");

            _recorderControl                = new CommandItemControl();
            _recorderControl.Padding        = new Padding(10, 0, 0, 0);
            _recorderControl.ForeColor      = Color.AliceBlue;
            _recorderControl.Font           = new Font("Segoe UI Semilight", 10);
            _recorderControl.Name           = "guirecorder_helper";
            _recorderControl.CommandImage   = Resources.command_camera;
            _recorderControl.CommandDisplay = "Element Recorder";
            _recorderControl.Hide();
        }
コード例 #8
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_DataTable", this, editor));

            CommandItemControl loadSchemaControl = new CommandItemControl("columnNameLoader", Resources.command_spreadsheet, "Load Column Names From Existing DataTable");

            loadSchemaControl.Click += LoadSchemaControl_Click;

            var dataRowDataControls = new List <Control>();

            dataRowDataControls.Add(commandControls.CreateDefaultLabelFor("v_DataRowDataTable", this));
            var gridview = commandControls.CreateDefaultDataGridViewFor("v_DataRowDataTable", this);

            dataRowDataControls.AddRange(commandControls.CreateUIHelpersFor("v_DataRowDataTable", this, new Control[] { gridview }, editor));
            dataRowDataControls.Add(loadSchemaControl);
            dataRowDataControls.Add(gridview);

            RenderedControls.AddRange(dataRowDataControls);

            _dataTableCreationCommands = editor.ConfiguredCommands.Where(f => f is CreateDataTableCommand)
                                         .Select(f => (CreateDataTableCommand)f)
                                         .ToList();

            RenderedControls.AddRange(commandControls.CreateDefaultOutputGroupFor("v_OutputUserVariableName", this, editor));

            return(RenderedControls);
        }
コード例 #9
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            _userInputGridViewHelper          = commandControls.CreateDefaultDataGridViewFor("v_UserInputConfig", this);
            _userInputGridViewHelper.KeyDown += UserInputDataGridView_KeyDown;

            var typefield = new DataGridViewComboBoxColumn();

            typefield.Items.Add("TextBox");
            typefield.Items.Add("CheckBox");
            typefield.Items.Add("ComboBox");
            typefield.HeaderText       = "Input Type";
            typefield.DataPropertyName = "Type";
            _userInputGridViewHelper.Columns.Add(typefield);

            var field = new DataGridViewTextBoxColumn();

            field.HeaderText       = "Input Label";
            field.DataPropertyName = "Label";
            _userInputGridViewHelper.Columns.Add(field);

            field                  = new DataGridViewTextBoxColumn();
            field.HeaderText       = "Input Size (X,Y)";
            field.DataPropertyName = "Size";
            _userInputGridViewHelper.Columns.Add(field);

            field                  = new DataGridViewTextBoxColumn();
            field.HeaderText       = "Default Value";
            field.DataPropertyName = "DefaultValue";
            _userInputGridViewHelper.Columns.Add(field);

            field                  = new DataGridViewTextBoxColumn();
            field.HeaderText       = "Assigned Variable";
            field.DataPropertyName = "StoreInVariable";
            _userInputGridViewHelper.Columns.Add(field);

            _userInputGridViewHelper.AllowUserToAddRows = false;
            _userInputGridViewHelper.AllowDrop          = true;
            _userInputGridViewHelper.MouseDown         += UserInputGridViewHelper_MouseDown;
            _userInputGridViewHelper.MouseUp           += UserInputGridViewHelper_MouseUp;
            _userInputGridViewHelper.MouseMove         += UserInputGridViewHelper_MouseMove;
            _userInputGridViewHelper.DragOver          += UserInputGridViewHelper_DragOver;
            _userInputGridViewHelper.DragDrop          += UserInputGridViewHelper_DragDrop;

            _addRowControl        = new CommandItemControl("AddInput", Resources.command_input, "Add Input Parameter");
            _addRowControl.Click += (sender, e) => AddInputParameter(sender, e, editor);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InputHeader", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InputDirections", this, editor));

            RenderedControls.Add(commandControls.CreateDefaultLabelFor("v_UserInputConfig", this));
            RenderedControls.Add(_addRowControl);
            RenderedControls.AddRange(commandControls.CreateUIHelpersFor("v_UserInputConfig", this, new Control[] { _userInputGridViewHelper }, editor));
            RenderedControls.Add(_userInputGridViewHelper);

            return(RenderedControls);
        }
コード例 #10
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_QueryType", this, editor));

            var queryControls = commandControls.CreateDefaultInputGroupFor("v_Query", this, editor);
            var queryBox      = (TextBox)queryControls[2];

            queryBox.Multiline = true;
            queryBox.Height    = 150;
            RenderedControls.AddRange(queryControls);

            //set up query parameter controls
            _queryParametersGridView = commandControls.CreateDefaultDataGridViewFor("v_QueryParameters", this);
            _queryParametersGridView.AutoGenerateColumns = false;
            _queryParametersGridView.AllowUserToAddRows  = false;

            var selectColumn = new DataGridViewComboBoxColumn();

            selectColumn.HeaderText       = "Type";
            selectColumn.DataPropertyName = "Parameter Type";
            selectColumn.DataSource       = new string[] { "STRING", "BOOLEAN", "DECIMAL", "INT16",
                                                           "INT32", "INT64", "DATETIME", "DOUBLE",
                                                           "SINGLE", "GUID", "BYTE", "BYTE[]" };
            _queryParametersGridView.Columns.Add(selectColumn);

            var paramNameColumn = new DataGridViewTextBoxColumn();

            paramNameColumn.HeaderText       = "Name";
            paramNameColumn.DataPropertyName = "Parameter Name";
            _queryParametersGridView.Columns.Add(paramNameColumn);

            var paramValueColumn = new DataGridViewTextBoxColumn();

            paramValueColumn.HeaderText       = "Value";
            paramValueColumn.DataPropertyName = "Parameter Value";
            _queryParametersGridView.Columns.Add(paramValueColumn);

            _queryParametersControls = new List <Control>();
            _queryParametersControls.Add(commandControls.CreateDefaultLabelFor("v_QueryParameters", this));
            _queryParametersControls.AddRange(commandControls.CreateUIHelpersFor("v_QueryParameters", this, new Control[] { _queryParametersGridView }, editor));

            CommandItemControl helperControl = new CommandItemControl("add_param_helper", Resources.command_database, "Add Parameter");

            helperControl.Click += (sender, e) => AddParameter(sender, e);

            _queryParametersControls.Add(helperControl);
            _queryParametersControls.Add(_queryParametersGridView);
            RenderedControls.AddRange(_queryParametersControls);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_QueryTimeout", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultOutputGroupFor("v_OutputUserVariableName", this, editor));
            return(RenderedControls);
        }
コード例 #11
0
        private void ShowFolderSelector(object sender, EventArgs e, IfrmCommandEditor editor)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                CommandItemControl inputBox      = (CommandItemControl)sender;
                TextBox            targetTextBox = (TextBox)inputBox.Tag;
                targetTextBox.Text = fbd.SelectedPath;
            }
        }
コード例 #12
0
        private void ShowFileSelector(object sender, EventArgs e, IfrmCommandEditor editor)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                CommandItemControl inputBox = (CommandItemControl)sender;
                //currently variable insertion is only available for simply textboxes
                TextBox targetTextbox = (TextBox)inputBox.Tag;
                //concat variable name with brackets [vVariable] as engine searches for the same
                targetTextbox.Text = ofd.FileName;
            }
        }
コード例 #13
0
        private void ShowCodeBuilder(object sender, EventArgs e, IfrmCommandEditor editor)
        {
            //get textbox text
            CommandItemControl commandItem   = (CommandItemControl)sender;
            TextBox            targetTextbox = (TextBox)commandItem.Tag;

            frmCodeBuilder codeBuilder = new frmCodeBuilder(targetTextbox.Text);

            if (codeBuilder.ShowDialog() == DialogResult.OK)
            {
                targetTextbox.Text = codeBuilder.rtbCode.Text;
            }
        }
コード例 #14
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            //create helper control
            CommandItemControl helperControl = new CommandItemControl();

            helperControl.Padding        = new Padding(10, 0, 0, 0);
            helperControl.ForeColor      = Color.AliceBlue;
            helperControl.Font           = new Font("Segoe UI Semilight", 10);
            helperControl.CommandImage   = Resources.command_camera;
            helperControl.CommandDisplay = "Element Recorder";
            helperControl.Click         += new EventHandler((s, e) => ShowRecorder(s, e, editor));

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));

            if (v_SeleniumSearchParameters.Rows.Count == 0)
            {
                v_SeleniumSearchParameters.Rows.Add(true, "XPath", "");
                v_SeleniumSearchParameters.Rows.Add(false, "ID", "");
                v_SeleniumSearchParameters.Rows.Add(false, "Name", "");
                v_SeleniumSearchParameters.Rows.Add(false, "Tag Name", "");
                v_SeleniumSearchParameters.Rows.Add(false, "Class Name", "");
                v_SeleniumSearchParameters.Rows.Add(false, "Link Text", "");
                v_SeleniumSearchParameters.Rows.Add(false, "CSS Selector", "");
            }

            //create search parameters
            RenderedControls.Add(commandControls.CreateDefaultLabelFor("v_SeleniumSearchParameters", this));
            RenderedControls.Add(helperControl);
            RenderedControls.AddRange(commandControls.CreateUIHelpersFor("v_SeleniumSearchParameters", this, new Control[] { _searchParametersGridViewHelper }, editor));
            RenderedControls.Add(_searchParametersGridViewHelper);

            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_SeleniumSearchOption", this, editor));

            _elementActionDropdown = (ComboBox)commandControls.CreateDropdownFor("v_SeleniumElementAction", this);
            RenderedControls.Add(commandControls.CreateDefaultLabelFor("v_SeleniumElementAction", this));
            RenderedControls.AddRange(commandControls.CreateUIHelpersFor("v_SeleniumElementAction", this, new Control[] { _elementActionDropdown }, editor));
            _elementActionDropdown.SelectionChangeCommitted += SeleniumAction_SelectionChangeCommitted;
            RenderedControls.Add(_elementActionDropdown);

            _actionParametersControls = new List <Control>();
            _actionParametersControls.Add(commandControls.CreateDefaultLabelFor("v_WebActionParameterTable", this));
            _actionParametersControls.AddRange(commandControls.CreateUIHelpersFor("v_WebActionParameterTable", this, new Control[] { _actionParametersGridViewHelper }, editor));
            _actionParametersControls.Add(_actionParametersGridViewHelper);
            RenderedControls.AddRange(_actionParametersControls);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_Timeout", this, editor));

            return(RenderedControls);
        }
コード例 #15
0
        private void EncryptPassword(CommandItemControl sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(ConnectionStringPassword.Text))
            {
                return;
            }

            var acknowledgement = MessageBox.Show("WARNING! This function will encrypt the password locally but is not extremely secure as the client knows the secret!  Consider using a password management service instead. The encrypted password will be stored with a leading exclamation ('!') whch the automation engine will detect and know to decrypt the value automatically at run-time. Do not encrypt the password multiple times or the decryption will be invalid!  Would you like to proceed?", "Encryption Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (acknowledgement == DialogResult.Yes)
            {
                ConnectionStringPassword.Text = string.Concat($"!{EncryptionServices.EncryptString(ConnectionStringPassword.Text, "taskt-database-automation")}");
            }
        }
コード例 #16
0
 private void TogglePasswordChar(CommandItemControl sender, EventArgs e)
 {
     //if password is hidden
     if (ConnectionStringPassword.PasswordChar == '*')
     {
         //show password plain text
         sender.CommandDisplay = "Hide Password";
         ConnectionStringPassword.PasswordChar = '\0';
     }
     else
     {
         //mask password with chars
         sender.CommandDisplay = "Show Password";
         ConnectionStringPassword.PasswordChar = '*';
     }
 }
コード例 #17
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            CommandItemControl helperControl = new CommandItemControl("rdpManager", Resources.command_system, "RDP Display Manager");

            helperControl.Click += new EventHandler((s, e) => LaunchRDPDisplayManager(s, e));

            RenderedControls.Add(helperControl);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_MachineName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_UserName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_Password", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_RDPWidth", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_RDPHeight", this, editor));

            return(RenderedControls);
        }
コード例 #18
0
        private void EncryptText(object sender, EventArgs e, IfrmCommandEditor editor)
        {
            CommandItemControl inputBox      = (CommandItemControl)sender;
            TextBox            targetTextbox = (TextBox)inputBox.Tag;

            if (string.IsNullOrEmpty(targetTextbox.Text))
            {
                return;
            }

            var encrypted = EncryptionServices.EncryptString(targetTextbox.Text, "OPENBOTS");

            targetTextbox.Text = encrypted;

            ComboBox comboBoxControl = (ComboBox)((frmCommandEditor)editor).flw_InputVariables.Controls["v_EncryptionOption"];

            comboBoxControl.Text = "Encrypted";
        }
コード例 #19
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            CommandItemControl helperControl = new CommandItemControl("LaunchTerminal", Resources.command_system, "Launch Terminal Emulator");

            helperControl.Click += new EventHandler((s, e) => LaunchTerminalSession(s, e));

            RenderedControls.Add(helperControl);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_Host", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_Port", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_TerminalType", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_UseSsl", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_CloseAllInstances", this, editor));

            return(RenderedControls);
        }
コード例 #20
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            NativeHelper.AddDefaultSearchRows(v_SeleniumSearchParameters);
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));

            CommandItemControl obWebRecorderControl = new CommandItemControl("OBWebRecorder", Resources.command_camera, "OB Web Element Recorder");

            obWebRecorderControl.Click += new EventHandler((s, e) => ShowRecorder(s, e, editor, commandControls));

            //disabled native chrome recorder for 1.5.0
            var searchParameterControls = commandControls.CreateDefaultWebElementDataGridViewGroupFor("v_SeleniumSearchParameters", this, editor,
                                                                                                      new Control[] { obWebRecorderControl, NativeHelper.NativeChromeRecorderControl(v_SeleniumSearchParameters, editor) });

            searchParameterControls.Last().MouseEnter += ActionParametersGridViewHelper_MouseEnter;
            RenderedControls.AddRange(searchParameterControls);

            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_SeleniumSearchOption", this, editor));

            _elementActionDropdown = commandControls.CreateDropdownFor("v_SeleniumElementAction", this);
            RenderedControls.Add(commandControls.CreateDefaultLabelFor("v_SeleniumElementAction", this));
            RenderedControls.AddRange(commandControls.CreateUIHelpersFor("v_SeleniumElementAction", this, new Control[] { _elementActionDropdown }, editor));
            _elementActionDropdown.SelectionChangeCommitted += SeleniumAction_SelectionChangeCommitted;
            RenderedControls.Add(_elementActionDropdown);

            _actionParametersControls = new List <Control>();
            _actionParametersControls.Add(commandControls.CreateDefaultLabelFor("v_WebActionParameterTable", this));

            _actionParametersGridViewHelper = commandControls.CreateDefaultDataGridViewFor("v_WebActionParameterTable", this);
            _actionParametersGridViewHelper.AllowUserToAddRows    = false;
            _actionParametersGridViewHelper.AllowUserToDeleteRows = false;
            _actionParametersGridViewHelper.MouseEnter           += ActionParametersGridViewHelper_MouseEnter;

            _actionParametersControls.AddRange(commandControls.CreateUIHelpersFor("v_WebActionParameterTable", this,
                                                                                  new Control[] { _actionParametersGridViewHelper }, editor));
            _actionParametersControls.Add(_actionParametersGridViewHelper);
            RenderedControls.AddRange(_actionParametersControls);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_Timeout", this, editor));

            return(RenderedControls);
        }
コード例 #21
0
        private void ShowImageCapture(object sender, EventArgs e)
        {
            ApplicationSettings settings = new ApplicationSettings().GetOrCreateApplicationSettings();
            var minimizePreference       = settings.ClientSettings.MinimizeToTray;

            if (minimizePreference)
            {
                settings.ClientSettings.MinimizeToTray = false;
                settings.Save(settings);
            }

            HideAllForms();

            var userAcceptance = MessageBox.Show("The image capture process will now begin and display a screenshot of the" +
                                                 " current desktop in a custom full-screen window.  You may stop the capture process at any time by pressing" +
                                                 " the 'ESC' key, or selecting 'Close' at the top left. Simply create the image by clicking once to start" +
                                                 " the rectangle and clicking again to finish. The image will be cropped to the boundary within the red rectangle." +
                                                 " Shall we proceed?", "Image Capture", MessageBoxButtons.YesNo);

            if (userAcceptance == DialogResult.Yes)
            {
                frmImageCapture imageCaptureForm = new frmImageCapture();

                if (imageCaptureForm.ShowDialog() == DialogResult.OK)
                {
                    CommandItemControl inputBox         = (CommandItemControl)sender;
                    UIPictureBox       targetPictureBox = (UIPictureBox)inputBox.Tag;
                    targetPictureBox.Image = imageCaptureForm.UserSelectedBitmap;
                    var convertedImage = Common.ImageToBase64(imageCaptureForm.UserSelectedBitmap);
                    targetPictureBox.EncodedImage = convertedImage;
                    imageCaptureForm.Close();
                }
            }

            ShowAllForms();

            if (minimizePreference)
            {
                settings.ClientSettings.MinimizeToTray = true;
                settings.Save(settings);
            }
        }
コード例 #22
0
        public override List <Control> Render(IfrmCommandEditor editor)
        {
            base.Render(editor);

            RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_DataTable", this, editor));
            RenderedControls.AddRange(CommandControls.CreateDataGridViewGroupFor("v_DataRowDataTable", this, editor));

            CommandItemControl loadSchemaControl = new CommandItemControl();

            loadSchemaControl.ForeColor      = System.Drawing.Color.White;
            loadSchemaControl.Font           = new Font("Segoe UI Semilight", 10);
            loadSchemaControl.CommandDisplay = "Load Column Names From Existing DataTable";
            loadSchemaControl.Click         += LoadSchemaControl_Click;
            RenderedControls.Add(loadSchemaControl);

            _dataTableCreationCommands = editor.ConfiguredCommands.Where(f => f is CreateDataTableCommand)
                                         .Select(f => (CreateDataTableCommand)f)
                                         .ToList();

            return(RenderedControls);
        }
コード例 #23
0
        public override List <Control> Render(IfrmCommandEditor editor)
        {
            base.Render(editor);

            //create helper control
            CommandItemControl helperControl = new CommandItemControl();

            helperControl.Padding        = new Padding(10, 0, 0, 0);
            helperControl.ForeColor      = Color.AliceBlue;
            helperControl.Font           = new Font("Segoe UI Semilight", 10);
            helperControl.CommandImage   = Resources.command_camera;
            helperControl.CommandDisplay = "Element Recorder";
            helperControl.Click         += new EventHandler((s, e) => ShowRecorder(s, e, editor));

            RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));
            RenderedControls.AddRange(CommandControls.CreateDefaultDropdownGroupFor("v_SeleniumSearchType", this, editor));

            _searchParameterControls = new List <Control>();
            _searchParameterControls.Add(CommandControls.CreateDefaultLabelFor("v_SeleniumSearchParameter", this));
            _searchParameterControls.Add(helperControl);
            var searchParameterInput = CommandControls.CreateDefaultInputFor("v_SeleniumSearchParameter", this);

            _searchParameterControls.AddRange(CommandControls.CreateUIHelpersFor("v_SeleniumSearchParameter", this, new Control[] { searchParameterInput }, editor));
            _searchParameterControls.Add(searchParameterInput);
            RenderedControls.AddRange(_searchParameterControls);

            _elementActionDropdown = (ComboBox)CommandControls.CreateDropdownFor("v_SeleniumElementAction", this);
            RenderedControls.Add(CommandControls.CreateDefaultLabelFor("v_SeleniumElementAction", this));
            RenderedControls.AddRange(CommandControls.CreateUIHelpersFor("v_SeleniumElementAction", this, new Control[] { _elementActionDropdown }, editor));
            _elementActionDropdown.SelectionChangeCommitted += SeleniumAction_SelectionChangeCommitted;
            RenderedControls.Add(_elementActionDropdown);

            _elementParameterControls = new List <Control>();
            _elementParameterControls.Add(CommandControls.CreateDefaultLabelFor("v_WebActionParameterTable", this));
            _elementParameterControls.AddRange(CommandControls.CreateUIHelpersFor("v_WebActionParameterTable", this, new Control[] { _elementsGridViewHelper }, editor));
            _elementParameterControls.Add(_elementsGridViewHelper);
            RenderedControls.AddRange(_elementParameterControls);

            return(RenderedControls);
        }
コード例 #24
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            CommandItemControl helperControl = new CommandItemControl();

            helperControl.Padding        = new Padding(10, 0, 0, 0);
            helperControl.ForeColor      = Color.AliceBlue;
            helperControl.Font           = new Font("Segoe UI Semilight", 10);
            helperControl.CommandImage   = Resources.command_system;
            helperControl.CommandDisplay = "RDP Display Manager";
            helperControl.Click         += new EventHandler((s, e) => LaunchRDPDisplayManager(s, e));

            RenderedControls.Add(helperControl);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_MachineName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_UserName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultPasswordInputGroupFor("v_Password", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_RDPWidth", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_RDPHeight", this, editor));

            return(RenderedControls);
        }
コード例 #25
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            CommandItemControl helperControl = new CommandItemControl();

            helperControl.Padding        = new Padding(10, 0, 0, 0);
            helperControl.ForeColor      = Color.AliceBlue;
            helperControl.Font           = new Font("Segoe UI Semilight", 10);
            helperControl.CommandImage   = Resources.command_system;
            helperControl.CommandDisplay = "Launch Terminal Emulator";
            helperControl.Click         += new EventHandler((s, e) => LaunchTerminalSession(s, e));

            RenderedControls.Add(helperControl);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_Host", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_Port", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_TerminalType", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_UseSsl", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_CloseAllInstances", this, editor));

            return(RenderedControls);
        }
コード例 #26
0
        public BeginIfCommand()
        {
            CommandName     = "BeginIfCommand";
            SelectionName   = "Begin If";
            CommandEnabled  = true;
            CustomRendering = true;

            //define parameter table
            v_IfActionParameterTable = new DataTable
            {
                TableName = DateTime.Now.ToString("IfActionParamTable" + DateTime.Now.ToString("MMddyy.hhmmss"))
            };
            v_IfActionParameterTable.Columns.Add("Parameter Name");
            v_IfActionParameterTable.Columns.Add("Parameter Value");

            _ifGridViewHelper = new DataGridView();
            _ifGridViewHelper.AllowUserToAddRows    = true;
            _ifGridViewHelper.AllowUserToDeleteRows = true;
            _ifGridViewHelper.Size = new Size(400, 250);
            _ifGridViewHelper.ColumnHeadersHeight = 30;
            _ifGridViewHelper.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            _ifGridViewHelper.DataBindings.Add("DataSource", this, "v_IfActionParameterTable", false, DataSourceUpdateMode.OnPropertyChanged);
            _ifGridViewHelper.AllowUserToAddRows    = false;
            _ifGridViewHelper.AllowUserToDeleteRows = false;
            _ifGridViewHelper.MouseEnter           += IfGridViewHelper_MouseEnter;

            _recorderControl                = new CommandItemControl();
            _recorderControl.Padding        = new Padding(10, 0, 0, 0);
            _recorderControl.ForeColor      = Color.AliceBlue;
            _recorderControl.Font           = new Font("Segoe UI Semilight", 10);
            _recorderControl.Name           = "guirecorder_helper";
            _recorderControl.CommandImage   = Resources.command_camera;
            _recorderControl.CommandDisplay = "Element Recorder";
            _recorderControl.Click         += ShowIfElementRecorder;
            _recorderControl.Hide();
        }
コード例 #27
0
        public override List <Control> Render(frmCommandEditor editor)
        {
            base.Render(editor);

            //create search param grid
            SearchParametersGridViewHelper        = new DataGridView();
            SearchParametersGridViewHelper.Width  = 500;
            SearchParametersGridViewHelper.Height = 140;
            SearchParametersGridViewHelper.DataBindings.Add("DataSource", this, "v_UIASearchParameters", false, DataSourceUpdateMode.OnPropertyChanged);

            DataGridViewCheckBoxColumn enabled = new DataGridViewCheckBoxColumn();

            enabled.HeaderText       = "Enabled";
            enabled.DataPropertyName = "Enabled";
            SearchParametersGridViewHelper.Columns.Add(enabled);

            DataGridViewTextBoxColumn propertyName = new DataGridViewTextBoxColumn();

            propertyName.HeaderText       = "Parameter Name";
            propertyName.DataPropertyName = "Parameter Name";
            SearchParametersGridViewHelper.Columns.Add(propertyName);

            DataGridViewTextBoxColumn propertyValue = new DataGridViewTextBoxColumn();

            propertyValue.HeaderText       = "Parameter Value";
            propertyValue.DataPropertyName = "Parameter Value";
            SearchParametersGridViewHelper.Columns.Add(propertyValue);

            SearchParametersGridViewHelper.AutoSizeColumnsMode   = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
            SearchParametersGridViewHelper.AllowUserToAddRows    = false;
            SearchParametersGridViewHelper.AllowUserToDeleteRows = false;

            //create actions
            ActionParametersGridViewHelper        = new DataGridView();
            ActionParametersGridViewHelper.Width  = 500;
            ActionParametersGridViewHelper.Height = 140;
            ActionParametersGridViewHelper.DataBindings.Add("DataSource", this, "v_UIAActionParameters", false, DataSourceUpdateMode.OnPropertyChanged);
            ActionParametersGridViewHelper.MouseEnter += ActionParametersGridViewHelper_MouseEnter;

            propertyName                  = new DataGridViewTextBoxColumn();
            propertyName.HeaderText       = "Parameter Name";
            propertyName.DataPropertyName = "Parameter Name";
            ActionParametersGridViewHelper.Columns.Add(propertyName);

            propertyValue                  = new DataGridViewTextBoxColumn();
            propertyValue.HeaderText       = "Parameter Value";
            propertyValue.DataPropertyName = "Parameter Value";
            ActionParametersGridViewHelper.Columns.Add(propertyValue);

            ActionParametersGridViewHelper.AutoSizeColumnsMode   = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
            ActionParametersGridViewHelper.AllowUserToAddRows    = false;
            ActionParametersGridViewHelper.AllowUserToDeleteRows = false;



            //create helper control
            CommandItemControl helperControl = new CommandItemControl();

            helperControl.Padding        = new Padding(10, 0, 0, 0);
            helperControl.ForeColor      = Color.AliceBlue;
            helperControl.Font           = new Font("Segoe UI Semilight", 10);
            helperControl.CommandImage   = UI.Images.GetUIImage("ClipboardGetTextCommand");
            helperControl.CommandDisplay = "Element Recorder";
            helperControl.Click         += ShowRecorder;



            //automation type
            var automationTypeGroup = CommandControls.CreateDefaultDropdownGroupFor("v_AutomationType", this, editor);

            AutomationTypeControl = (ComboBox)automationTypeGroup.Where(f => f is ComboBox).FirstOrDefault();
            AutomationTypeControl.SelectionChangeCommitted += UIAType_SelectionChangeCommitted;
            RenderedControls.AddRange(automationTypeGroup);



            //window name
            RenderedControls.Add(UI.CustomControls.CommandControls.CreateDefaultLabelFor("v_WindowName", this));
            WindowNameControl = UI.CustomControls.CommandControls.CreateStandardComboboxFor("v_WindowName", this).AddWindowNames();
            RenderedControls.AddRange(UI.CustomControls.CommandControls.CreateUIHelpersFor("v_WindowName", this, new Control[] { WindowNameControl }, editor));
            RenderedControls.Add(WindowNameControl);

            //create search parameters
            RenderedControls.Add(CommandControls.CreateDefaultLabelFor("v_UIASearchParameters", this));
            RenderedControls.Add(helperControl);
            RenderedControls.Add(SearchParametersGridViewHelper);

            //create action parameters
            RenderedControls.Add(CommandControls.CreateDefaultLabelFor("v_UIAActionParameters", this));
            RenderedControls.Add(ActionParametersGridViewHelper);

            return(RenderedControls);
        }
コード例 #28
0
        public override List <Control> Render(IfrmCommandEditor editor)
        {
            base.Render(editor);

            UserInputGridViewHelper          = new DataGridView();
            UserInputGridViewHelper.KeyDown += UserInputDataGridView_KeyDown;
            UserInputGridViewHelper.DataBindings.Add("DataSource", this, "v_UserInputConfig", false, DataSourceUpdateMode.OnPropertyChanged);

            var typefield = new DataGridViewComboBoxColumn();

            typefield.Items.Add("TextBox");
            typefield.Items.Add("CheckBox");
            typefield.Items.Add("ComboBox");
            typefield.HeaderText       = "Input Type";
            typefield.DataPropertyName = "Type";
            UserInputGridViewHelper.Columns.Add(typefield);

            var field = new DataGridViewTextBoxColumn();

            field.HeaderText       = "Input Label";
            field.DataPropertyName = "Label";
            UserInputGridViewHelper.Columns.Add(field);


            field                  = new DataGridViewTextBoxColumn();
            field.HeaderText       = "Input Size (X,Y)";
            field.DataPropertyName = "Size";
            UserInputGridViewHelper.Columns.Add(field);

            field                  = new DataGridViewTextBoxColumn();
            field.HeaderText       = "Default Value";
            field.DataPropertyName = "DefaultValue";
            UserInputGridViewHelper.Columns.Add(field);

            field                  = new DataGridViewTextBoxColumn();
            field.HeaderText       = "Assigned Variable";
            field.DataPropertyName = "ApplyToVariable";
            UserInputGridViewHelper.Columns.Add(field);

            UserInputGridViewHelper.ColumnHeadersHeight   = 30;
            UserInputGridViewHelper.AutoSizeColumnsMode   = DataGridViewAutoSizeColumnsMode.Fill;
            UserInputGridViewHelper.AllowUserToAddRows    = false;
            UserInputGridViewHelper.AllowUserToDeleteRows = false;


            AddRowControl                = new CommandItemControl();
            AddRowControl.Padding        = new Padding(10, 0, 0, 0);
            AddRowControl.ForeColor      = Color.AliceBlue;
            AddRowControl.Font           = new Font("Segoe UI Semilight", 10);
            AddRowControl.CommandImage   = Resources.command_input;
            AddRowControl.CommandDisplay = "Add Input Parameter";
            AddRowControl.Click         += (sender, e) => AddInputParameter(sender, e, editor);

            RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_InputHeader", this, editor));
            RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_InputDirections", this, editor));
            RenderedControls.Add(CommandControls.CreateDefaultLabelFor("v_UserInputConfig", this));
            RenderedControls.Add(AddRowControl);
            RenderedControls.AddRange(CommandControls.CreateUIHelpersFor("v_UserInputConfig", this, new Control[] { UserInputGridViewHelper }, editor));
            RenderedControls.Add(UserInputGridViewHelper);



            return(RenderedControls);
        }
コード例 #29
0
        public override List <Control> Render(IfrmCommandEditor editor, ICommandControls commandControls)
        {
            base.Render(editor, commandControls);

            RenderedControls.AddRange(commandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));
            RenderedControls.AddRange(commandControls.CreateDefaultDropdownGroupFor("v_QueryType", this, editor));

            var queryControls = commandControls.CreateDefaultInputGroupFor("v_Query", this, editor);
            var queryBox      = (TextBox)queryControls[2];

            queryBox.Multiline = true;
            queryBox.Height    = 150;
            RenderedControls.AddRange(queryControls);

            //set up query parameter controls
            _queryParametersGridView = new DataGridView();
            _queryParametersGridView.AllowUserToAddRows    = true;
            _queryParametersGridView.AllowUserToDeleteRows = true;
            _queryParametersGridView.Size = new Size(400, 250);
            _queryParametersGridView.ColumnHeadersHeight = 30;
            _queryParametersGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            _queryParametersGridView.AutoGenerateColumns = false;

            var selectColumn = new DataGridViewComboBoxColumn();

            selectColumn.HeaderText       = "Type";
            selectColumn.DataPropertyName = "Parameter Type";
            selectColumn.DataSource       = new string[] { "STRING", "BOOLEAN", "DECIMAL", "INT16",
                                                           "INT32", "INT64", "DATETIME", "DOUBLE",
                                                           "SINGLE", "GUID", "BYTE", "BYTE[]" };
            _queryParametersGridView.Columns.Add(selectColumn);

            var paramNameColumn = new DataGridViewTextBoxColumn();

            paramNameColumn.HeaderText       = "Name";
            paramNameColumn.DataPropertyName = "Parameter Name";
            _queryParametersGridView.Columns.Add(paramNameColumn);

            var paramValueColumn = new DataGridViewTextBoxColumn();

            paramValueColumn.HeaderText       = "Value";
            paramValueColumn.DataPropertyName = "Parameter Value";
            _queryParametersGridView.Columns.Add(paramValueColumn);

            _queryParametersGridView.DataBindings.Add("DataSource", this, "v_QueryParameters", false, DataSourceUpdateMode.OnPropertyChanged);

            _queryParametersControls = new List <Control>();
            _queryParametersControls.Add(commandControls.CreateDefaultLabelFor("v_QueryParameters", this));
            _queryParametersControls.AddRange(commandControls.CreateUIHelpersFor("v_QueryParameters", this, new Control[] { _queryParametersGridView }, editor));

            CommandItemControl helperControl = new CommandItemControl();

            helperControl.Padding        = new Padding(10, 0, 0, 0);
            helperControl.ForeColor      = Color.AliceBlue;
            helperControl.Font           = new Font("Segoe UI Semilight", 10);
            helperControl.Name           = "add_param_helper";
            helperControl.CommandImage   = Resources.command_database2;
            helperControl.CommandDisplay = "Add Parameter";
            helperControl.Click         += (sender, e) => AddParameter(sender, e);

            _queryParametersControls.Add(helperControl);
            _queryParametersControls.Add(_queryParametersGridView);
            RenderedControls.AddRange(_queryParametersControls);

            RenderedControls.AddRange(commandControls.CreateDefaultOutputGroupFor("v_OutputUserVariableName", this, editor));
            return(RenderedControls);
        }
コード例 #30
0
        public override List <Control> Render(IfrmCommandEditor editor)
        {
            base.Render(editor);

            RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_InstanceName", this, editor));

            CommandItemControl helperControl = new CommandItemControl();

            helperControl.Padding        = new Padding(10, 0, 0, 0);
            helperControl.ForeColor      = Color.AliceBlue;
            helperControl.Font           = new Font("Segoe UI Semilight", 10);
            helperControl.Name           = "connection_helper";
            helperControl.CommandImage   = Resources.command_database2;
            helperControl.CommandDisplay = "Build Connection String";
            helperControl.Click         += (sender, e) => Button_Click(sender, e);


            ConnectionString = (TextBox)CommandControls.CreateDefaultInputFor("v_ConnectionString", this);

            var connectionLabel   = CommandControls.CreateDefaultLabelFor("v_ConnectionString", this);
            var connectionHelpers = CommandControls.CreateUIHelpersFor("v_ConnectionString", this, new[] { ConnectionString }, editor);
            CommandItemControl testConnectionControl = new CommandItemControl();

            testConnectionControl.Padding        = new Padding(10, 0, 0, 0);
            testConnectionControl.ForeColor      = Color.AliceBlue;
            testConnectionControl.Font           = new Font("Segoe UI Semilight", 10);
            testConnectionControl.Name           = "connection_helper";
            testConnectionControl.CommandImage   = Resources.command_database2;
            testConnectionControl.CommandDisplay = "Test Connection";
            testConnectionControl.Click         += (sender, e) => TestConnection(sender, e);
            RenderedControls.Add(testConnectionControl);

            RenderedControls.Add(connectionLabel);
            RenderedControls.Add(helperControl);
            RenderedControls.AddRange(connectionHelpers);
            RenderedControls.Add(testConnectionControl);
            RenderedControls.Add(ConnectionString);

            ConnectionStringPassword = (TextBox)CommandControls.CreateDefaultInputFor("v_ConnectionStringPassword", this);

            var connectionPassLabel   = CommandControls.CreateDefaultLabelFor("v_ConnectionStringPassword", this);
            var connectionPassHelpers = CommandControls.CreateUIHelpersFor("v_ConnectionStringPassword", this, new[] { ConnectionStringPassword }, editor);

            RenderedControls.Add(connectionPassLabel);
            RenderedControls.AddRange(connectionPassHelpers);

            CommandItemControl passwordHelperControl = new CommandItemControl();

            passwordHelperControl.Padding        = new Padding(10, 0, 0, 0);
            passwordHelperControl.ForeColor      = Color.AliceBlue;
            passwordHelperControl.Font           = new Font("Segoe UI Semilight", 10);
            passwordHelperControl.Name           = "show_pass_helper";
            passwordHelperControl.CommandImage   = Resources.command_password;
            passwordHelperControl.CommandDisplay = "Show Password";
            passwordHelperControl.Click         += (sender, e) => TogglePasswordChar(passwordHelperControl, e);

            RenderedControls.Add(passwordHelperControl);


            CommandItemControl encryptHelperControl = new CommandItemControl();

            encryptHelperControl.Padding        = new Padding(10, 0, 0, 0);
            encryptHelperControl.ForeColor      = Color.AliceBlue;
            encryptHelperControl.Font           = new Font("Segoe UI Semilight", 10);
            encryptHelperControl.Name           = "show_pass_helper";
            encryptHelperControl.CommandImage   = Resources.command_password;
            encryptHelperControl.CommandDisplay = "Encrypt Password";
            encryptHelperControl.Click         += (sender, e) => EncryptPassword(passwordHelperControl, e);
            RenderedControls.Add(encryptHelperControl);


            var label = new Label();

            label.AutoSize  = true;
            label.Font      = new Font("Segoe UI", 10, FontStyle.Regular);
            label.ForeColor = Color.White;
            label.Text      = "NOTE: If storing the password in the textbox below, please ensure the connection string above contains a database-specific placeholder with #pwd to be replaced at runtime. (;Password=#pwd)";
            RenderedControls.Add(label);


            RenderedControls.Add(ConnectionStringPassword);
            ConnectionStringPassword.PasswordChar = '*';



            RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_TestConnection", this, editor));

            return(RenderedControls);
        }