public override void OnInspectorGUI()
    {
        ListBoxControl myTarget = null;

        try { myTarget = (ListBoxControl)target; } catch { }

        if (myTarget != null)
        {
            GUI.changed = false;
            EditorGUILayout.Space();

            if (myTarget.ListBoxMode == ListBoxControl.ListBoxModes.ListBox && !myTarget.PartOfDDL)
            {
                EditorStyles.foldout.fontStyle = FontStyle.Bold;
                blnObjects = EditorGUILayout.Foldout(blnObjects, "LISTBOX GAMEOBJECT COMPONENTS");
                if (blnObjects)
                {
                    myTarget.ScrollBarObject             = (GameObject)EditorGUILayout.ObjectField("ScrollBar", myTarget.ScrollBarObject, typeof(GameObject), true);
                    myTarget.ScrollRectObject            = (GameObject)EditorGUILayout.ObjectField("ScrollRect", myTarget.ScrollRectObject, typeof(GameObject), true);
                    myTarget.ScrollContainerObject       = (GameObject)EditorGUILayout.ObjectField("Item Container", myTarget.ScrollContainerObject, typeof(GameObject), true);
                    myTarget.ListBoxTitle                = (Text)EditorGUILayout.ObjectField("Title Text Object", myTarget.ListBoxTitle, typeof(Text), true);
                    myTarget.ListBoxLineItemPrefabObject = (GameObject)EditorGUILayout.ObjectField("Line Item Prefab", myTarget.ListBoxLineItemPrefabObject, typeof(GameObject), true);
                    EditorGUILayout.Separator();
                    EditorGUILayout.Space();
                }

                EditorStyles.label.fontStyle = FontStyle.Bold;
                EditorGUILayout.LabelField("LISTBOX SETTINGS");
                EditorStyles.label.fontStyle = FontStyle.Normal;
                myTarget.Title          = EditorGUILayout.TextField("ListBox Title", myTarget.Title);
                myTarget.TitleBestFit   = EditorGUILayout.Toggle("Best Fit Title", myTarget.TitleBestFit);
                myTarget.CanMultiSelect = EditorGUILayout.Toggle("Can Multi-Select", myTarget.CanMultiSelect);
                if (myTarget.CanMultiSelect)
                {
                    myTarget.AutoMultiSelect = EditorGUILayout.Toggle("-- Multi-Select always on", myTarget.AutoMultiSelect);
                }
                else
                {
                    myTarget.AutoMultiSelect = false;
                }
                myTarget.AllowDoubleClick = EditorGUILayout.Toggle("Can Double-Click", myTarget.AllowDoubleClick);
                string strChar = EditorGUILayout.TextField("Separator Char", myTarget.SeparatorChar.ToString()).Trim();
                if (strChar.Length > 0 && strChar != myTarget.SeparatorChar.ToString())
                {
                    myTarget.SeparatorChar = char.Parse(strChar.Substring(0, 1));
                }
                EditorGUILayout.Separator();
                EditorGUILayout.Space();


                EditorStyles.label.fontStyle = FontStyle.Bold;
                EditorGUILayout.LabelField("LINE ITEM SETTINGS");
                EditorStyles.label.fontStyle = FontStyle.Normal;
                myTarget.Height             = EditorGUILayout.FloatField("Line Item Height", myTarget.Height);
                myTarget.Spacing            = EditorGUILayout.FloatField("Line Item Spacing", myTarget.Spacing);
                myTarget.ItemNormalColor    = EditorGUILayout.ColorField("Normal Color", myTarget.ItemNormalColor);
                myTarget.ItemHighlightColor = EditorGUILayout.ColorField("Highlight Color", myTarget.ItemHighlightColor);
                myTarget.ItemSelectedColor  = EditorGUILayout.ColorField("Selected Color", myTarget.ItemSelectedColor);
                myTarget.ItemDisabledColor  = EditorGUILayout.ColorField("Disabled Color", myTarget.ItemDisabledColor);
                EditorGUILayout.Separator();
                EditorGUILayout.Space();


                if (Application.isPlaying)
                {
                    // DISPLAY THE CURRENTLY SELECTED ITEM(S) IN THE LISTBOX
                    EditorStyles.label.fontStyle = FontStyle.Bold;
                    EditorGUILayout.LabelField("SELECTED INDEXES & VALUES");
                    EditorStyles.label.fontStyle = FontStyle.Normal;
                    string        st = "";
                    List <string> sl = myTarget.SelectedValues;
                    if (sl != null)
                    {
                        for (int i = 0; i < sl.Count; i++)
                        {
                            st += myTarget.SelectedIndexes[i].ToString() + ": \"" + sl[i].ToString() + "\"\n";
                        }
                        EditorStyles.label.fixedHeight = sl.Count * 14;
                        EditorGUILayout.LabelField("Selected", st);
                        EditorStyles.label.fixedHeight = 0;
                        GUILayout.Space(sl.Count * 14);
                    }
                    else
                    {
                        EditorGUILayout.LabelField("Selected", "None");
                    }
                    EditorGUILayout.Separator();
                    EditorGUILayout.Space();
                }
                else
                {
                    EditorStyles.label.fontStyle = FontStyle.Bold;
                    EditorGUILayout.LabelField("INITIAL LINE ITEMS");
                    EditorStyles.label.fontStyle = FontStyle.Normal;

                    EditorGUILayout.BeginVertical();

                    // DISPLAY LIST HEADER
                    EditorGUILayout.BeginHorizontal();
                    EditorStyles.label.richText     = true;
                    EditorStyles.label.stretchWidth = false;
                    GUILayout.Button(" ", GUILayout.Width(20));
                    EditorGUILayout.LabelField("<color=yellow>Index</color>", GUILayout.Width(40));
                    EditorGUILayout.LabelField("<color=yellow>Value</color>", GUILayout.Width(100));
                    EditorGUILayout.LabelField("<color=yellow>Text</color>");
                    EditorStyles.label.richText     = false;
                    EditorStyles.label.stretchWidth = true;
                    EditorGUILayout.EndHorizontal();

                    // DISPLAY INITIAL LIST ITEMS
                    for (int i = 0; i < myTarget.StartArray.Count; i++)
                    {
                        EditorGUILayout.BeginHorizontal();
                        if (GUILayout.Button("x", GUILayout.Width(20)))
                        {
                            myTarget.RemoveStartItemByIndex(i);
                        }
                        else
                        {
                            EditorGUILayout.LabelField(myTarget.StartArray[i].Index.ToString(), GUILayout.Width(40));
                            EditorGUILayout.LabelField(myTarget.StartArray[i].Value, GUILayout.Width(100));
                            EditorGUILayout.LabelField(myTarget.StartArray[i].Text);
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.Space();

                    // ADD NEW ITEM
                    strValue = EditorGUILayout.TextField("Value", strValue);
                    strText  = EditorGUILayout.TextField("Text", strText);
                    sprIcon  = (Sprite)EditorGUILayout.ObjectField("Icon", sprIcon, typeof(Sprite), true);
                    if (GUILayout.Button("Add Item") && strValue.Trim() != "" && strText.Trim() != "")
                    {
                        myTarget.AddStartItem(strValue, strText, sprIcon);
                        strValue = "";
                        strText  = "";
                        sprIcon  = null;
                    }
                    EditorGUILayout.Space();

                    // SORT LIST ITEMS
                    EditorGUILayout.BeginHorizontal();
                    if (GUILayout.Button("Sort By Text"))
                    {
                        myTarget.SortStartByText();
                    }
                    if (GUILayout.Button("Sort By Value"))
                    {
                        myTarget.SortStartByValue();
                    }
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.Separator();
                    EditorGUILayout.Space();
                }


                if (GUI.changed)
                {
                    EditorUtility.SetDirty(myTarget);
                    if (!Application.isPlaying)
                    {
                        EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
                    }
                }
            }
            else
            {
                // REFER USER TO THE DROPDOWN LIST PROPERTIES
                EditorStyles.label.fontStyle = FontStyle.Bold;
                EditorGUILayout.LabelField("UNAVAILABLE -- (Modify the DropDown List Properties)");
                EditorStyles.label.fontStyle = FontStyle.Normal;
            }
        }
    }