private void GUILayoutConnect()
        {
            EditorGUILayout.BeginHorizontal();
            var content     = new GUIContent("Connect To");
            var contentSize = EditorStyles.label.CalcSize(content);

            EditorGUILayout.LabelField(content, GUILayout.MaxWidth(contentSize.x));
            if (attachProfilerState != null)
            {
                ConnectionGUILayout.AttachToPlayerDropdown(attachProfilerState, EditorStyles.toolbarDropDown);
            }
            EditorGUI.BeginChangeCheck();
            contentSize  = EditorStyles.label.CalcSize(Styles.RecOnContent);
            mIsRecording = GUILayout.Toggle(mIsRecording, mIsRecording ? Styles.RecOnContent : Styles.RecOffContent, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10));
            if (EditorGUI.EndChangeCheck())
            {
                if (mIsRecording)
                {
                    SendMessage(MessageData.MessageID.RECORDING_ON);
                }
                else
                {
                    SendMessage(MessageData.MessageID.RECORDING_OFF);
                }
            }

            content     = new GUIContent(string.Format("Frame:{0,6}/", profileDataList.Count));
            contentSize = EditorStyles.label.CalcSize(content);
            EditorGUILayout.LabelField(content, GUILayout.MaxWidth(contentSize.x + 10));

            content     = new GUIContent(string.Format("Frame:{0}", frameCountMax));
            contentSize = EditorStyles.label.CalcSize(content);
            var tmp = EditorGUILayout.DelayedIntField(frameCountMax, GUILayout.MaxWidth(contentSize.x - 32));

            if (tmp > 0)
            {
                frameCountMax = tmp;
            }
            //
            // Clear
            //
            contentSize = EditorStyles.label.CalcSize(Styles.clearData);
            if (GUILayout.Button(Styles.clearData, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10)))
            {
                profileDataList.Clear();
                mSlider = 0;
            }

            //
            // Save File
            //
            contentSize = EditorStyles.label.CalcSize(Styles.SaveContent);
            if (GUILayout.Button(Styles.SaveContent, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10)))
            {
                var path = EditorUtility.SaveFilePanel(
                    "Save Profile Data as CSV",
                    "",
                    "",
                    "csv");
                if (path.Length != 0)
                {
                    using (StreamWriter sw = new StreamWriter(path))
                    {
                        sw.WriteLine(ProfileData.GetCSVHeader());
                        foreach (var d in profileDataList)
                        {
                            sw.WriteLine(d.GetCSVBody());
                        }
                        sw.Close();
                    }
                }
            }

            EditorGUI.BeginChangeCheck();
            contentSize   = EditorStyles.label.CalcSize(Styles.statsContent);
            mEnabledStats = GUILayout.Toggle(mEnabledStats, Styles.statsContent, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10));
            if (EditorGUI.EndChangeCheck())
            {
                SendMessage(mEnabledStats ? MessageData.MessageID.STATS_ON : MessageData.MessageID.STATS_OFF);
            }
            EditorGUILayout.EndHorizontal();

            var           playerCount = EditorConnection.instance.ConnectedPlayers.Count;
            StringBuilder builder     = new StringBuilder();

            builder.AppendLine(string.Format("{0} players connected.", playerCount));
            int i = 0;

            foreach (var p in EditorConnection.instance.ConnectedPlayers)
            {
                builder.AppendLine(string.Format("[{0}] - {1} {2}", i++, p.name, p.playerId));
            }
            EditorGUILayout.HelpBox(builder.ToString(), MessageType.Info);
        }