void DesignList_Element_View()
        {
            if (SelectedJsonElement == null)
            {
                return;
            }

            JObject jo_common = SelectedJsonElement.jo ["Common"] as JObject;
            JArray  ja_member = SelectedJsonElement.jo ["Member"] as JArray;
            JArray  ja_views  = SelectedJsonElement.jo ["Views"] as JArray;

            ElementViewScrollPos = GUILayout.BeginScrollView(ElementViewScrollPos);
            for (int i = 0; i < ja_views.Count; i++)
            {
                JObject jo_view         = ja_views [i] as JObject;
                string  viewName        = jo_view ["Name"].Value <string> ();
                string  viewType        = jo_view ["Type"].Value <string> ();
                JObject jo_view_members = jo_view ["Members"] as JObject;

                #region VerticalBox

                Color color = GUI.backgroundColor;

                if (SelectedViewIdx == i)
                {
                    GUI.backgroundColor = Color.cyan;
                }

                EditorGUILayout.BeginVertical("box");
                GUI.backgroundColor = color;

                EditorGUILayout.BeginHorizontal();
                string fold_flag = SelectedViewIdx == i ? "-" : "+";

                if (SelectedViewIdx == i)
                {
                    if (GUILayout.Button(string.Format(" {0}", fold_flag), GUIStyleTemplate.LabelStyle(), GUILayout.MaxWidth(10)))
                    {
                        SelectedViewIdx = SelectedViewIdx != i ? i : -1;
                    }
                    viewName = GUILayout.TextField(viewName);
                    if (viewName != jo_view ["Name"].Value <string> ())
                    {
                        jo_view ["Name"] = viewName;
                    }
                    GUILayout.Label(" : ", GUIStyleTemplate.LabelStyle(), GUILayout.MaxWidth(10));
                    viewType = GUILayout.TextField(viewType);
                    if (viewType != jo_view ["Type"].Value <string> ())
                    {
                        jo_view ["Type"] = viewType;
                    }
                }
                else
                {
                    if (GUILayout.Button(string.Format(" {0} {1} : {2}", fold_flag, viewName, viewType), GUIStyleTemplate.LabelStyle()))
                    {
                        SelectedViewIdx = SelectedViewIdx != i ? i : -1;
                    }
                }

                if (GUILayout.Button("-", GUIStyleTemplate.BlackCommandLink(), GUILayout.MaxWidth(10)))
                {
                    ElementViewTools evtools = new ElementViewTools(SelectedJsonElement.jo);
                    evtools.DeleteView(i);
                }

                if (i != 0)
                {
                    if (GUILayout.Button("^", GUIStyleTemplate.BlackCommandLink(), GUILayout.MaxWidth(10)))
                    {
                        JObject jo0 = ja_views [i] as JObject;
                        JObject jo1 = ja_views [i - 1] as JObject;
                        ja_views [i]     = jo1;
                        ja_views [i - 1] = jo0;
                    }
                }
                EditorGUILayout.EndHorizontal();

                if (SelectedViewIdx == i)
                {
                    if (jo_view ["Desc"] == null)
                    {
                        jo_view ["Desc"] = "";
                    }
                    jo_view ["Desc"] = GUILayout.TextArea(jo_view ["Desc"].Value <string> (), GUIStyleTemplate.GreenDescStyle2());

                    for (int j = 0; j < ja_member.Count; j++)
                    {
                        JObject jo_member  = ja_member [j] as JObject;
                        string  memberName = jo_member ["Name"].Value <string> ();
                        string  rxType     = jo_member ["RxType"].Value <string> ();

                        GUILayout.Label(string.Format("{1} | {0}", rxType, memberName), EditorStyles.helpBox);
                        JObject jo_view_bind = jo_view_members [memberName] ["Bind"] as JObject;
                        DesignViewBind(jo_view_bind);
                    }
                }
                EditorGUILayout.EndVertical();

                #endregion
            }
            GUILayout.EndScrollView();

            if (GUILayout.Button("Create Default View"))
            {
                string element_name         = jo_common ["Name"].Value <string> ();
                string ori_target_view_name = string.Format("{0}View", element_name);
                string target_view_name     = ori_target_view_name;
                int    digital_suffix       = 0;
                while (ja_views.FirstOrDefault(_ => _ ["Name"].Value <string> () == target_view_name) != null)
                {
                    digital_suffix++;
                    target_view_name = string.Format("{0}{1}", ori_target_view_name, digital_suffix);
                }
                ElementViewTools evtools = new ElementViewTools(SelectedJsonElement.jo);
                evtools.CreateDefaultView(target_view_name);
            }
        }
示例#2
0
        void DesignList_Enum()
        {
            if (SelectedJsonElement == null || SelectedJsonElement.jo ["Common"] ["Desc"] == null)
            {
                return;
            }

            JObject jo_common = SelectedJsonElement.jo ["Common"] as JObject;

            if (GUILayout.Button("<<"))
            {
                SelectedJsonElement = null;
                EnumMembersList     = null;
                NeedRefresh         = true;

                AutoSelected.SelectedJsonFileName = string.Empty;
                AutoSelected.Save();

                return;
            }

            GUILayout.Label(string.Format("Workspace:{0}, Enum:{1}", SelectedJsonElement.Workspace, SelectedJsonElement.Name), EditorStyles.boldLabel);

            jo_common ["Desc"] = GUILayout.TextArea(jo_common ["Desc"].Value <string> (), GUIStyleTemplate.GreenDescStyle2());

            DesignList_Enum_Member();

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Reset"))
            {
                SelectedJsonElement.Load();
                ResetEnumMembersList();
            }
            if (GUILayout.Button("Save"))
            {
                SaveJson();
            }
            if (GUILayout.Button("Save&Generate"))
            {
                SaveJson();

                Generator.GenerateCode(SelectedJsonElement.jo);

                AssetDatabase.Refresh();

                NeedRefresh = true;

                this.Repaint();
            }
            GUILayout.EndHorizontal();
        }
        void DesignList_Element()
        {
            if (SelectedJsonElement == null || SelectedJsonElement.jo ["Common"] ["Desc"] == null)
            {
                return;
            }

            JObject jo_common = SelectedJsonElement.jo ["Common"] as JObject;

            if (GUILayout.Button("<<"))
            {
                SelectedJsonElement = null;
                ElementMembersList  = null;
                NeedRefresh         = true;

                AutoSelected.SelectedJsonFileName = string.Empty;
                AutoSelected.Save();

                return;
            }

            GUILayout.Label(string.Format("Workspace:{0}, Element:{1}", SelectedJsonElement.Workspace, SelectedJsonElement.Name), EditorStyles.boldLabel);

            jo_common ["Desc"] = GUILayout.TextArea(jo_common ["Desc"].Value <string> (), GUIStyleTemplate.GreenDescStyle2());

            if (jo_common ["Type"] == null)
            {
                jo_common.Add("Type", "");
            }

            GUILayout.BeginHorizontal();
            jo_common ["Type"] = EditorGUILayout.TextField("Base", jo_common ["Type"].Value <string> ());
            GUILayout.EndHorizontal();

            toolbar_index = GUILayout.Toolbar(toolbar_index, ToolbarHeaders, new GUILayoutOption[] { GUILayout.Height(25f) });

            switch (toolbar_index)
            {
            case 0:
                DesignList_Element_Member();
                break;

            case 1:
                DesignList_Element_View();
                break;

            default:
                break;
            }

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Reset"))
            {
                SelectedJsonElement.Load();
                ResetElementMembersList();
            }
            if (GUILayout.Button("Save"))
            {
                SaveJson();
            }
            if (GUILayout.Button("Save&Generate"))
            {
                SaveJson();

                Generator.GenerateCode(SelectedJsonElement.jo);

                AssetDatabase.Refresh();

                NeedRefresh = true;

                this.Repaint();
            }
            GUILayout.EndHorizontal();
        }