private void RunCommand(object sender, EventArgs e)
        {
            Log.Info("Running command from execute widget");
            Button          realsender   = ((Button)sender);
            ExecuteTemplate widgetSender = (ExecuteTemplate)realsender.Parent.Parent;

            IndexOfRunWidget = Int32.Parse(widgetSender.Tag.ToString());
            var    widgets = Json.ReadJson(); // 7ms for reading a empty file
            var    widget  = widgets[IndexOfRunWidget];
            string command = widgetSender.CommandName.Text;


            if (command != "")
            {
                Widget thisWidget = new Widget
                {
                    WidgetUseLongProcessTime = widget.WidgetUseLongProcessTime,
                    WidgetCommand            = command
                };
                BackgroundWorker bw = new BackgroundWorker();
                bw.DoWork             += getWidgetResult_doWork;
                bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(getWidgetResult_workFinished);
                bw.RunWorkerAsync(thisWidget);
            }
        }
        private void getWidgetsAsync_runCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            int indexWidget = 0;

            foreach (var item in ReadyWidgets)
            {
                if (item.WidgetType == "Informatie")
                {
                    var newPanel = new InfoTemplate
                    {
                        Name             = "Panel" + indexWidget,
                        Tag              = indexWidget.ToString(),
                        TitleWidgetLabel = { Text = item.WidgetName },
                        CommandName      = { Text = item.WidgetCommand }
                    };
                    newPanel.CloseWidgetPicturebox.Click += new EventHandler(RemoveWidget);
                    newPanel.MaxWidgetPicturebox.Click   += new EventHandler(MaximizeWidget);

                    if (item.WidgetUseSelection == true)
                    {
                        string finalString = Responses.GetStringFromResponse(item.WidgetOutput, item.WidgetEnterCountBeforeString, item.WidgetEnterCountInString);
                        newPanel.Outputbox.Text = finalString;
                    }
                    else
                    {
                        newPanel.Outputbox.Text = item.WidgetOutput;
                    }
                    MainTableLayoutPanel.Controls.Add(newPanel);
                }

                else //execute widget
                {
                    var newPanel = new ExecuteTemplate
                    {
                        Name             = "Panel" + indexWidget,
                        Tag              = indexWidget.ToString(),
                        TitleWidgetLabel = { Text = item.WidgetName },
                        CommandName      = { Text = item.WidgetCommand }
                    };
                    newPanel.CloseWidgetPicturebox.Click += new EventHandler(RemoveWidget);
                    newPanel.RunButton.Click             += new EventHandler(RunCommand);
                    newPanel.MaxWidgetPicturebox.Click   += new EventHandler(MaximizeWidget);
                    newPanel.RunButton.Text = "Uitvoeren";
                    MainTableLayoutPanel.Controls.Add(newPanel);
                }
                indexWidget++;
            }
            if ((bool)e.Result == true)
            {
                PictureBox addButton = new PictureBox
                {
                    Size      = new Size(100, 100),
                    BackColor = Color.Transparent,
                    Image     = Properties.Resources.add_1,
                    SizeMode  = PictureBoxSizeMode.Zoom,
                    Anchor    = AnchorStyles.None
                };
                addButton.Click += new EventHandler(AddButtonClick);
                MainTableLayoutPanel.Controls.Add(addButton);
                MainTableLayoutPanel.Enabled = true;
            }
        }
        private void getWidgetPageInfo_runCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            List <Widget> widgets     = Json.ReadJson();
            int           indexWidget = 0;

            if (_listOfWidgetItems[0].WidgetOutput == null && _listOfWidgetItems[1].WidgetOutput == null)// check if command received timeout
            {
                MessageBox.Show("Er vond een timeout plaats - controleer de gegevens en probeer het opnieuw");
                Log.Info("A timeout has occured while trying to get widgets - check router details");
            }
            else
            {
                foreach (var item in _listOfWidgetItems)
                {
                    if (item.WidgetTag == "PID")
                    {
                        string totalOutput = item.WidgetOutput;
                        string pid         = TelnetConnection.FindPid(totalOutput);
                        routerType.Text = pid;
                    }
                    else if (item.WidgetTag == "showRun")
                    {
                        runningConfigOutputField.Text = item.WidgetOutput;
                    }
                    else
                    {
                        int index = Int32.Parse(item.WidgetTag);
                        if (widgets[index].WidgetType == "Informatie")
                        {
                            var newPanel = new InfoTemplate
                            {
                                Name             = "Panel" + indexWidget.ToString(),
                                Tag              = indexWidget.ToString(),
                                TitleWidgetLabel = { Text = widgets[indexWidget].WidgetName },
                                CommandName      = { Text = widgets[indexWidget].WidgetCommand }
                            };
                            newPanel.CloseWidgetPicturebox.Click += new EventHandler(RemoveWidget);
                            newPanel.MaxWidgetPicturebox.Click   += new EventHandler(MaximizeWidget);

                            if (widgets[indexWidget].WidgetUseSelection == true)
                            {
                                string finalString = Responses.GetStringFromResponse(item.WidgetOutput, widgets[indexWidget].WidgetEnterCountBeforeString, widgets[indexWidget].WidgetEnterCountInString);
                                newPanel.Outputbox.Text = finalString;
                            }
                            else
                            {
                                newPanel.Outputbox.Text = item.WidgetOutput;
                            }


                            MainTableLayoutPanel.Controls.Add(newPanel);
                        }

                        else //execute widget
                        {
                            var newPanel = new ExecuteTemplate
                            {
                                Name             = "Panel" + indexWidget.ToString(),
                                Tag              = indexWidget.ToString(),
                                TitleWidgetLabel = { Text = widgets[indexWidget].WidgetName },
                                CommandName      = { Text = widgets[indexWidget].WidgetCommand }
                            };
                            newPanel.CloseWidgetPicturebox.Click += new EventHandler(RemoveWidget);
                            newPanel.RunButton.Click             += new EventHandler(RunCommand);
                            newPanel.MaxWidgetPicturebox.Click   += new EventHandler(MaximizeWidget);
                            newPanel.RunButton.Text = "Uitvoeren";
                            MainTableLayoutPanel.Controls.Add(newPanel);
                        }
                        indexWidget++;
                    }
                }
                PictureBox addButton = new PictureBox
                {
                    Size      = new Size(100, 100),
                    BackColor = Color.Transparent,
                    Image     = Properties.Resources.add_1,
                    SizeMode  = PictureBoxSizeMode.Zoom,
                    Anchor    = AnchorStyles.None
                };
                addButton.Click += new EventHandler(AddButtonClick);
                MainTableLayoutPanel.Controls.Add(addButton);
                MainTableLayoutPanel.Enabled = true;
            }
        }