public static lhDefineManager GetInstance()
 {
     if (m_instance != null)
     {
         return(null);
     }
     return(m_instance = new lhDefineManager());
 }
 public void Dispose()
 {
     m_instance = null;
 }
        void OnGUI()
        {
            if (EditorApplication.isCompiling)
            {
                GUILayout.Label("loading....");
                return;
            }
            if (!m_initialize)
            {
                m_defineManager = lhDefineManager.GetInstance();
                m_initialize    = true;
                lhDefineManager.Apply();
            }
            EditorGUILayout.BeginVertical();
            {
                Rect item = EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
                {
                    GUIContent createContent = new GUIContent("Create");
                    Rect       createRect    = GUILayoutUtility.GetRect(createContent, EditorStyles.toolbarButton);
                    if (GUI.Button(createRect, createContent, EditorStyles.toolbarButton))
                    {
                        lhDefineManager.CreateDefine();
                    }
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Apply", EditorStyles.toolbarButton))
                    {
                        if (EditorUtility.DisplayDialog("Warning", "Are you sure Apply?", "Ok", "Cancel"))
                        {
                            lhDefineManager.Apply();
                        }
                    }
                } EditorGUILayout.EndHorizontal();
                GUI.SetNextControlName("ScrollPosition");
                m_scrollPosition = EditorGUILayout.BeginScrollView(m_scrollPosition);
                {
                    foreach (var define in lhDefineManager.defineList)
                    {
                        Rect itemRect = EditorGUILayout.BeginHorizontal();
                        {
                            define.active = GUILayout.Toggle(define.active, "");
                            if (define.renaming)
                            {
                                GUIContent cancelContent = new GUIContent("×");
                                if (GUI.Button(GUILayoutUtility.GetRect(cancelContent, EditorStyles.miniButton, GUILayout.ExpandWidth(false)), cancelContent))
                                {
                                    define.renaming = false;
                                    GUI.FocusControl("ScrollPosition");
                                }
                                GUIContent certainContent = new GUIContent("√");
                                if (GUI.Button(GUILayoutUtility.GetRect(certainContent, EditorStyles.miniButton, GUILayout.ExpandWidth(false)), certainContent))
                                {
                                    define.renaming   = false;
                                    define.defineName = define.oldDefineName;
                                }
                                define.oldDefineName = EditorGUILayout.TextField(define.oldDefineName);
                            }
                            else
                            {
                                GUILayout.Label(define.defineName);
                            }
                            GUILayout.FlexibleSpace();
                            define.targetGroupValue = EditorGUILayout.MaskField(define.targetGroupValue, System.Enum.GetNames(typeof(lhDefineManager.DefineTargetGroup)), EditorStyles.layerMaskField);
                            //Debug.Log(define.targetGroupValue);
                            if (GUILayout.Button("X", EditorStyles.miniLabel))
                            {
                                if (EditorUtility.DisplayDialog("Warning", "Are you sure delete it", "Ok", "Cancel"))
                                {
                                    lhDefineManager.DeleteDefine(define);
                                    return;
                                }
                            }
                        } EditorGUILayout.EndHorizontal();

                        if (IsMouseOn(itemRect))
                        {
                            if (Event.current.keyCode == KeyCode.F2)
                            {
                                define.renaming      = true;
                                define.oldDefineName = define.defineName;
                                Repaint();
                            }
                            if (Event.current.keyCode == KeyCode.Return)
                            {
                                define.renaming   = false;
                                define.defineName = define.oldDefineName;
                                Repaint();
                            }
                        }
                    }
                } EditorGUILayout.EndScrollView();
            } EditorGUILayout.EndVertical();
        }