public void OnGUI()
        {
            lockSelection   = PreferencesEditor.GetBool(Preference.LockSelection);
            showPreferences = PreferencesEditor.GetBool(Preference.ShowPreference);

            GUILayout.BeginHorizontal(EditorStyles.toolbar);
            SelectGameObject();
            SelectStateMachine();

            if (GUILayout.Button("Lock", (lockSelection?(GUIStyle)"TE toolbarbutton" : EditorStyles.toolbarButton), GUILayout.Width(50)))
            {
                lockSelection = !lockSelection;
                PreferencesEditor.SetBool(Preference.LockSelection, lockSelection);
            }

            if (GUILayout.Button("Tools", EditorStyles.toolbarDropDown, GUILayout.Width(50)))
            {
                GenericMenu menu = new GenericMenu();
                menu.AddItem(new GUIContent("Welcome Screen"), false, delegate() {
                    WelcomeWindow.ShowWindow();
                });
                menu.AddItem(new GUIContent("Global Variables"), false, delegate() {
                    GlobalVariablesEditor.ShowWindow();
                });
                menu.AddItem(new GUIContent("Action Browser"), false, delegate() {
                    ActionBrowser.ShowWindow();
                });
                menu.AddItem(new GUIContent("Condition Browser"), false, delegate() {
                    ConditionBrowser.ShowWindow();
                });
                menu.AddItem(new GUIContent("Error Console"), false, delegate() {
                    ErrorEditor.ShowWindow();
                });
                menu.AddItem(new GUIContent("Setup Shortcuts"), false, delegate() {
                    SetupShortcutsEditor.ShowWindow();
                });

                menu.AddItem(new GUIContent("Fsm Tool"), false, delegate() {
                    FsmTool.ShowWindow();
                });
                menu.AddItem(new GUIContent("MonoBehaviour Converter"), false, delegate() {
                    MonoBehaviourConverter.ShowWindow();
                });
                menu.AddItem(new GUIContent("Integrations"), false, delegate() {
                    IntegrationWindow.ShowWindow();
                });
                menu.ShowAsContext();
            }

            GUILayout.FlexibleSpace();
            if (GUILayout.Button(FsmEditorStyles.popupIcon, (showPreferences?(GUIStyle)"TE toolbarbutton" : EditorStyles.toolbarButton)))
            {
                showPreferences = !showPreferences;
                PreferencesEditor.SetBool(Preference.ShowPreference, showPreferences);
            }


            GUILayout.EndHorizontal();
        }
        private void OnGUI()
        {
            GUI.DrawTexture(this.contactIconRect, this.contactIcon);
            GUI.Label(this.contactHeaderRect, "Contact", HeaderStyle);
            GUI.Label(this.contactTextRect, "Contact us in private, we are here to help.", TextStyle);

            GUI.DrawTexture(this.downloadIconRect, this.downloadIcon);
            GUI.Label(this.downloadHeaderRect, "Examples", HeaderStyle);
            GUI.Label(this.downloadTextRect, "Download sample projects and presets.", TextStyle);

            GUI.DrawTexture(this.documentationIconRect, this.documentationIcon);
            GUI.Label(this.documentationHeaderRect, "Documentation", HeaderStyle);
            GUI.Label(this.documenationTextRect, "Checkout our written and video documentation.", TextStyle);

            GUI.DrawTexture(this.forumIconRect, this.forumIcon);
            GUI.Label(this.forumHeaderRect, "Forums", HeaderStyle);
            GUI.Label(this.forumTextRect, "Join our forums to get support and make suggestions.", TextStyle);

            GUI.DrawTexture(this.addonIconRect, this.addonIcon);
            GUI.Label(this.addonHeaderRect, "Add-ons", HeaderStyle);
            GUI.Label(this.addonTextRect, "Download assets that extend the core functionality.", TextStyle);

            bool state = PreferencesEditor.GetBool(Preference.ShowWelcomeWindow, true);

            state = GUI.Toggle(this.showOnStartRect, state, "Show at Startup");
            PreferencesEditor.SetBool(Preference.ShowWelcomeWindow, state);

            EditorGUIUtility.AddCursorRect(this.contactIconRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.contactHeaderRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.contactTextRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.downloadIconRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.downloadHeaderRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.downloadTextRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.documentationIconRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.documentationHeaderRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.documenationTextRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.forumIconRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.forumHeaderRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.forumTextRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.addonIconRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.addonHeaderRect, MouseCursor.Link);
            EditorGUIUtility.AddCursorRect(this.addonTextRect, MouseCursor.Link);

            if (Event.current.type == EventType.MouseDown)
            {
                Vector2 mousePosition = Event.current.mousePosition;
                if (this.contactIconRect.Contains(mousePosition) || this.contactHeaderRect.Contains(mousePosition) || this.contactTextRect.Contains(mousePosition))
                {
                    Application.OpenURL("http://unitycoding.com/contact/");
                    return;
                }
                if (this.downloadIconRect.Contains(mousePosition) || this.downloadHeaderRect.Contains(mousePosition) || this.downloadTextRect.Contains(mousePosition))
                {
                    Application.OpenURL("http://unitycoding.com/icode/examples/");
                    return;
                }
                if (this.documentationIconRect.Contains(mousePosition) || this.documentationHeaderRect.Contains(mousePosition) || this.documenationTextRect.Contains(mousePosition))
                {
                    Application.OpenURL("http://unitycoding.com/icode/");
                    return;
                }
                if (this.forumIconRect.Contains(mousePosition) || this.forumHeaderRect.Contains(mousePosition) || this.forumTextRect.Contains(mousePosition))
                {
                    Application.OpenURL("http://unitycoding.com/phpbb/");
                    return;
                }
                if (this.addonIconRect.Contains(mousePosition) || this.addonHeaderRect.Contains(mousePosition) || this.addonTextRect.Contains(mousePosition))
                {
                    IntegrationWindow.ShowWindow();
                    return;
                }
            }
        }
 public static void OpenIntegrationWindow()
 {
     IntegrationWindow.ShowWindow();
 }