JsonTableSync GetTableContent(JsonExtensionPropertyDrawerData data)
        {
            var google = new JsonTableSync(data.Provider)
            {
                TableId = data.m_TableId.stringValue
            };

            return(google);
        }
        void DrawTableNameField(JsonExtensionPropertyDrawerData data, ref Rect position)
        {
            #region inner
            EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(data.m_TableId.stringValue));
            var sheetNamePos = position.SplitHorizontal();
            var buttonPos    = sheetNamePos.right.SplitHorizontal();
            data.m_TableId.stringValue = EditorGUI.TextField(sheetNamePos.left, data.m_TableId.stringValue);

            if (GUI.Button(buttonPos.left, Styles.openTable))
            {
                JsonTableSync.OpenTableInBrowser(data.m_TableId.stringValue);
            }
            EditorGUI.EndDisabledGroup();
            #endregion inner

            if (EditorGUI.DropdownButton(buttonPos.right, Styles.SelectFile, FocusType.Passive))
            {
                try
                {
                    var google = GetTableContent(data);
                    var files  = HelperClass.GetDataFiles();

                    var menu = new GenericMenu();
                    foreach (var s in files)
                    {
                        menu.AddItem(new GUIContent(s.name), false, () =>
                        {
                            data.m_TableId.stringValue = s.fileName;
                            data.m_TableId.serializedObject.ApplyModifiedProperties();
                        });
                    }

                    if (menu.GetItemCount() == 0)
                    {
                        menu.AddDisabledItem(Styles.NoFileFound);
                    }

                    menu.DropDown(sheetNamePos.right);
                }
                catch (Exception e)
                {
                    Debug.LogException(e);
                }
                finally
                {
                    EditorUtility.ClearProgressBar();
                }
            }

            position.MoveToNextLine();
        }