public void ApplySelected()
        {
            if (WorkspaceDirectoryInfos != null)
            {
                for (int i = 0; i < WorkspaceDirectoryInfos.Length; i++)
                {
                    DirectoryInfo wdi = WorkspaceDirectoryInfos [i];

                    // 自动选择
                    if (AutoSelected.SelectedWorkspaceName == wdi.Name)
                    {
                        if (SelectedWorkspace != wdi)
                        {
                            SelectedWorkspace = wdi;
                            NeedRefresh       = true;
                        }
                    }
                }
            }

            if (SelectedWorkspaceCommon != null)
            {
                JArray ja_elements = SelectedWorkspaceCommon.jo ["ElementFiles"] as JArray;
                for (int i = 0; i < ja_elements.Count; i++)
                {
                    JObject jo_element          = ja_elements [i] as JObject;
                    string  jo_element_filename = jo_element ["File"].Value <string> ();
                    if (AutoSelected.SelectedJsonFileName == jo_element_filename)
                    {
                        var tempSelectedJsonElement = jElements.Single(je => je.FileName == jo_element_filename);
                        if (SelectedJsonElement == null || SelectedJsonElement.Workspace != tempSelectedJsonElement.Workspace)
                        {
                            SelectedJsonElement = tempSelectedJsonElement;
                            NeedRefresh         = true;

                            DocType dt = (DocType)Enum.Parse(typeof(DocType), SelectedJsonElement.DocType);
                            if (dt == DocType.FSM)
                            {
                                FSMWindow.Init();
                                FSMWindow.Current.jElement = SelectedJsonElement;
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
        void ResetReorderableList()
        {
            JArray ja_elements = SelectedWorkspaceCommon.jo ["ElementFiles"] as JArray;

            WSJsonFilesList = new ReorderableList(ja_elements, typeof(JToken));
            WSJsonFilesList.drawHeaderCallback += (Rect rect) => {
                GUI.Label(rect, "ElementFiles");
            };
            float[] split = new float[] { 0f, 1f };
            WSJsonFilesList.drawElementCallback += (Rect rect, int index, bool isActive, bool isFocused) => {
                Rect r = new Rect(rect);
                r.y      -= 1;
                r.height -= 2;
                int split_idx = 0;
                r.x     = (rect.width - 25f) * split [split_idx] + 25f;
                r.width = (rect.width - 25f) * (split [split_idx + 1] - split [split_idx]);
                JObject jo_element = ja_elements [index] as JObject;

                string jo_element_filename = jo_element ["File"].Value <string> ();

                DocType   dt   = (DocType)Enum.Parse(typeof(DocType), jo_element ["DocType"].Value <string> ());
                Texture2D icon = null;
                switch (dt)
                {
                case DocType.Element:
                    icon = pgf_element_icon;
                    break;

                case DocType.SimpleClass:
                    icon = pgf_simple_class_icon;
                    break;

                case DocType.Enum:
                    icon = pgf_enum_icon;
                    break;

                case DocType.FSM:
                    icon = pgf_fsm_icon;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                GUIContent content = new GUIContent(jo_element_filename, icon);
                if (GUI.Button(r, content, GUIStyleTemplate.ButtonStyleAlignmentLeft()))
                {
                    if (Event.current.button == 1)
                    {
                        JSONElement jsonElement = jElements.Single(je => je.FileName == jo_element_filename);

                        PGFrameOpenFileTools.OpenContentMenu(jsonElement);
                    }
                    else
                    {
                        SelectedJsonElement = jElements.Single(je => je.FileName == jo_element_filename);

                        if (dt == DocType.FSM)
                        {
                            FSMWindow.Init();
                            FSMWindow.Current.jElement = SelectedJsonElement;
                        }

                        AutoSelected.SelectedJsonFileName = jo_element_filename;
                        AutoSelected.Save();
                    }
                }
            };

            WSJsonFilesList.onAddCallback += (ReorderableList list) => {
                GenericMenu menu = new GenericMenu();
                foreach (DocType dt in Enum.GetValues(typeof(DocType)))
                {
                    menu.AddItem(new GUIContent(dt.ToString()), false, (object userData) => {
                        NeedShowPopupWindowDocType = (DocType)userData;
                    }, dt);
                }
                menu.ShowAsContext();
            };

            WSJsonFilesList.onRemoveCallback += (ReorderableList list) => {
                JObject jo       = ja_elements [list.index] as JObject;
                string  jsonName = jo ["File"].Value <string> ();

                if (EditorUtility.DisplayDialog("警告!", string.Format("确定删除框架中的{0}文件?", jo ["File"].Value <string> ()), "Yes", "No"))
                {
                    ja_elements.RemoveAt(list.index);
                    SelectedWorkspaceCommon.jo ["ElementFiles"] = ja_elements;
                    SaveCommonFile();

                    DeleteElementJsonFile(jsonName, SelectedWorkspaceCommon.Workspace);
                    NeedRefresh = true;
                }
            };
        }