/// <summary>
 ///     Starts this object.
 /// </summary>
 public void Start()
 {
     if (String.IsNullOrEmpty(JavaPath.Text))
     {
         if (PopulateJavaPath() == false)
         {
             return;
         }
     }
     // write out the latest settings
     JenkinsSlaveConfiguration config = CreateJenkinsSlaveConfiguration();
     OutputLog.Items.Clear();
     _slaveExecutor = new SlaveExecutor(config);
     _slaveExecutor.OnLogMessage += LogMessage;
     _slaveExecutor.OnJenkinsStarted += JenkinsStarted;
     _slaveExecutor.Go();
 }
 /// <summary>
 /// Stops this object.
 /// </summary>
 /// <param name="userRequested">true if user requested.</param>
 private void Stop(bool userRequested = false)
 {
     if (_slaveExecutor != null)
     {
         if (_slaveExecutor.OnLogMessage != null)
         {
             _slaveExecutor.OnLogMessage -= LogMessage;
         }
         if (_slaveExecutor.OnJenkinsStarted != null)
         {
             _slaveExecutor.OnJenkinsStarted -= JenkinsStarted;
         }
         _slaveExecutor.Stop();
         _slaveExecutor = null;
     }
     LogMessage("Stop Jenkins " + (userRequested? "" : "not ") + "requested by User");
     LogMessage("*** Jenkins has stopped ***");
     SetUiForRunningState(false);
 }