internal EasyAssetBundleLabelConfig(EasyAssetBundleLabelConfig copy)
        {
            for (int i = 0; i < copy.LabelSetting.Count; i++)
            {
                LabelSetting.Add(new DirectoryLabelSetting(copy.LabelSetting[i]));
            }

            for (int i = 0; i < copy.FileNameChecker.Count; i++)
            {
                FileNameChecker.Add(new FileNameCkeckerSetting(copy.FileNameChecker[i]));
            }

            DefaultLabelType = copy.DefaultLabelType;
            DefaultNGPattern = copy.DefaultNGPattern;
        }
        internal void OnGUI()
        {
            var buildPathExists = !string.IsNullOrEmpty(BuildRootPath);

            if (!buildPathExists)
            {
                EditorGUILayout.HelpBox("set up buildroot path", MessageType.Warning);
            }

            EditorGUI.BeginDisabledGroup(!buildPathExists);
            EditorGUILayout.BeginVertical();
            {
                GUILayout.Space(7);

                EditorGUILayout.BeginHorizontal();
                {
                    Undo.IncrementCurrentGroup();
                    UndoHelper.BuilderDataUndo("Change default label type");
                    GUILayout.Label(new GUIContent("Default label type", "used for naming assetlabel"));
                    DefaultLabelType = ( AssetBundleLabelType )EditorGUILayout.EnumPopup(DefaultLabelType);
                }
                EditorGUILayout.EndHorizontal();

                GUILayout.Space(15);

                Undo.IncrementCurrentGroup();
                UndoHelper.BuilderDataUndo("Change NG filename pattern");
                GUILayout.Label("NG FileName Pattern");
                DefaultNGPattern = EditorGUILayout.TextField(DefaultNGPattern);

                GUILayout.Space(10);

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                {
                    GUILayout.Space(5);

                    var menu = GUILayout.Toolbar(SelectedMenu, new string[] { "FileName Checker", "Directory Label" }, GUILayout.Height(20));
                    if (SelectedMenu != menu)
                    {
                        UndoHelper.BuilderDataUndo("Change label menu");
                        EditorGUIUtility.keyboardControl = 0;
                    }
                    SelectedMenu = menu;

                    EditorGUILayout.BeginHorizontal();
                    {
                        GUI.backgroundColor = Color.yellow;
                        switch (SelectedMenu)
                        {
                        case 0:
                            if (GUILayout.Button("+", GUILayout.Width(25)))
                            {
                                UndoHelper.BuilderDataUndo("Add FilenameChecker Setting");
                                FileNameChecker.Add(new FileNameCkeckerSetting());
                                EditorGUIUtility.keyboardControl = 0;
                            }
                            break;

                        case 1:
                            if (GUILayout.Button("+", GUILayout.Width(25)))
                            {
                                UndoHelper.BuilderDataUndo("Add DirectoryLabel Setting");
                                LabelSetting.Add(new DirectoryLabelSetting());
                                EditorGUIUtility.keyboardControl = 0;
                            }
                            break;
                        }

                        GUI.backgroundColor = Color.white;

                        Undo.IncrementCurrentGroup();
                        UndoHelper.BuilderDataUndo("Change setting search text");
                        SearchText = EditorGUILayout.TextField(SearchText, GUIHelper.Styles.SearchField, GUILayout.ExpandWidth(true));
                        if (GUILayout.Button("", GUIHelper.Styles.SearchFieldCancel))
                        {
                            SearchText = "";
                            EditorGUIUtility.keyboardControl = 0;
                        }
                    }
                    EditorGUILayout.EndHorizontal();

                    GUILayout.Space(5);

                    ScrollView = EditorGUILayout.BeginScrollView(ScrollView);
                    {
                        switch (SelectedMenu)
                        {
                        case 0:
                            FileNameCheckerView();
                            break;

                        case 1:
                            LabelSettingView();
                            break;
                        }
                    }
                    EditorGUILayout.EndScrollView();

                    GUILayout.FlexibleSpace();
                }
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndVertical();

            EditorGUI.EndDisabledGroup();
        }