protected void DrawSimpleIntField(JsonableScriptableObject jso, string label, ref int value,
                                   float defaultLabelWidth = 80f)
 {
     EditorGUILayout.BeginHorizontal();
     {
         EditorGUILayout.LabelField(label, GUILayout.Width(defaultLabelWidth));
         var input = EditorGUILayout.IntField(value);
         if (input != value)
         {
             Undo.RegisterCompleteObjectUndo(jso, label + " Change");
             value = input;
             EditorUtility.SetDirty(jso);
         }
     }
     EditorGUILayout.EndHorizontal();
 }
        protected virtual void DrawConvertMenu(JsonableScriptableObject jso)
        {
            if (m_config.pathInfoList.Count == 0)
            {
                EditorGUILayout.BeginHorizontal();
                {
                    var style = new GUIStyle();
                    style.alignment   = TextAnchor.MiddleLeft;
                    style.fixedHeight = 32;
                    style.richText    = true;

                    GUILayout.Label(SystemIconManager.instance.GetIconTexture(SystemIcon.IconType.Warn),
                                    GUILayout.Width(32));
                    GUILayout.Label("<color=#FF0000>Please Add Deploy Setting !</color>", style);
                }
                EditorGUILayout.EndHorizontal();

                GUILayout.Space(5);
                GUILayout.Box(GUIContent.none, HrStyle.EditorLine, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
                GUILayout.Space(5);
                return;
            }

            m_pathInfoTarget = EditorGUILayout.Popup("Target", m_pathInfoTarget, m_pathInfoList);

            var info = m_config.pathInfoList[m_pathInfoTarget];

            DrawSimpleLabelField("JsonDirPath : ", info.workspacePath);
            DrawSimpleLabelField("S3 Path : ", "s3://" + info.s3Bucket + info.s3Folder);
            DrawSimpleLabelField("JsonName : ", jso.name + ".json");
            EditorGUILayout.BeginHorizontal();
            {
                if (GUILayout.Button("Import", EditorStyles.miniButton))
                {
                    ImportFromJson();
                    EditorUtility.SetDirty(jso);
                    EditorUtility.DisplayDialog("JsonImport", "Complete", "OK");
                }
                if (GUILayout.Button("Export", EditorStyles.miniButton))
                {
                    ExportToJson();
                    //EditorUtility.SetDirty(jso);
                    EditorUtility.DisplayDialog("JsonExport", "Complete", "OK");
                }
                if (GUILayout.Button("S3 Load", EditorStyles.miniButton))
                {
                    CopyFromS3(() =>
                    {
                        m_callbackQueue.Push(() => {
                            ImportFromJson();
                            EditorUtility.SetDirty(jso);
                            EditorUtility.DisplayDialog("S3 Load", "Complete", "OK");
                            m_isTermPollCallbackQueue = true;
                        });
                    });
                    m_isTermPollCallbackQueue    = false;
                    EditorApplication.delayCall += PollCallbackQueue;
                }
                if (GUILayout.Button("S3 Save", EditorStyles.miniButton))
                {
                    ExportToJson(); // 一応
                    CopyToS3(() =>
                    {
                        m_callbackQueue.Push(() => {
                            EditorUtility.DisplayDialog("S3 Save", "Complete", "OK");
                            m_isTermPollCallbackQueue = true;
                        });
                    });
                    m_isTermPollCallbackQueue    = false;
                    EditorApplication.delayCall += PollCallbackQueue;
                }
            }
            EditorGUILayout.EndHorizontal();
            GUILayout.Space(5);
            GUILayout.Box(GUIContent.none, HrStyle.EditorLine, GUILayout.ExpandWidth(true), GUILayout.Height(1f));
            GUILayout.Space(5);
        }