public ProtocolBase CreateProtocol(ConnectionInfo connectionInfo)
        {
            ProtocolBase newProtocol = default(ProtocolBase);

            switch (connectionInfo.Protocol)
            {
            case ProtocolType.RDP:
                newProtocol = new ProtocolRDP();
                ((ProtocolRDP)newProtocol).tmrReconnect.Elapsed += ((ProtocolRDP)newProtocol).tmrReconnect_Elapsed;
                break;

            case ProtocolType.VNC:
                newProtocol = new ProtocolVNC();
                break;

            case ProtocolType.SSH1:
                newProtocol = new ProtocolSSH1();
                break;

            case ProtocolType.SSH2:
                newProtocol = new ProtocolSSH2();
                break;

            case ProtocolType.Telnet:
                newProtocol = new ProtocolTelnet();
                break;

            case ProtocolType.Rlogin:
                newProtocol = new ProtocolRlogin();
                break;

            case ProtocolType.RAW:
                newProtocol = new ProtocolRAW();
                break;

            case ProtocolType.HTTP:
                newProtocol = new ProtocolHTTP(connectionInfo.RenderingEngine);
                break;

            case ProtocolType.HTTPS:
                newProtocol = new ProtocolHTTPS(connectionInfo.RenderingEngine);
                break;

            case ProtocolType.ICA:
                newProtocol = new ProtocolICA();
                ((ProtocolICA)newProtocol).tmrReconnect.Elapsed += ((ProtocolICA)newProtocol).tmrReconnect_Elapsed;
                break;

            case ProtocolType.IntApp:
                newProtocol = new IntegratedProgram();
                if (connectionInfo.ExtApp == "")
                {
                    throw (new Exception(Language.strNoExtAppDefined));
                }
                break;
            }
            return(newProtocol);
        }
        public ProtocolBase CreateProtocol(ConnectionInfo connectionInfo)
        {
            var newProtocol = default(ProtocolBase);

            // ReSharper disable once SwitchStatementMissingSomeCases
            switch (connectionInfo.Protocol)
            {
            case ProtocolType.RDP:
                newProtocol = new RdpProtocol
                {
                    LoadBalanceInfoUseUtf8 = Settings.Default.RdpLoadBalanceInfoUseUtf8
                };
                ((RdpProtocol)newProtocol).tmrReconnect.Elapsed += ((RdpProtocol)newProtocol).tmrReconnect_Elapsed;
                break;

            case ProtocolType.VNC:
                newProtocol = new ProtocolVNC();
                break;

            case ProtocolType.SSH1:
                newProtocol = new ProtocolSSH1();
                break;

            case ProtocolType.SSH2:
                newProtocol = new ProtocolSSH2();
                break;

            case ProtocolType.Telnet:
                newProtocol = new ProtocolTelnet();
                break;

            case ProtocolType.Rlogin:
                newProtocol = new ProtocolRlogin();
                break;

            case ProtocolType.RAW:
                newProtocol = new RawProtocol();
                break;

            case ProtocolType.HTTP:
                newProtocol = new ProtocolHTTP(connectionInfo.RenderingEngine);
                break;

            case ProtocolType.HTTPS:
                newProtocol = new ProtocolHTTPS(connectionInfo.RenderingEngine);
                break;

            case ProtocolType.ICA:
                newProtocol = new IcaProtocol();
                ((IcaProtocol)newProtocol).tmrReconnect.Elapsed += ((IcaProtocol)newProtocol).tmrReconnect_Elapsed;
                break;

            case ProtocolType.IntApp:
                newProtocol = new IntegratedProgram();
                if (connectionInfo.ExtApp == "")
                {
                    throw (new Exception(Language.strNoExtAppDefined));
                }

                break;
            }

            return(newProtocol);
        }