private static void RenderFolder(string folderPath, AssetBundleFolder assetBundleFolder, out bool removeFolder)
        {
            // Folder path and associated management buttons.
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField(folderPath, EditorStyles.wordWrappedLabel);
            removeFolder = GUILayout.Button("Remove", GUILayout.Width(FieldWidth));
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();

            // Display the folder state.
            if (assetBundleFolder.State == AssetPackFolderState.Ok)
            {
                EditorGUILayout.HelpBox(
                    string.Format("Found {0} AssetBundle(s) in this folder", assetBundleFolder.AssetBundleCount),
                    MessageType.None);
            }
            else
            {
                var errorMessage = NameAndDescriptionAttribute.GetAttribute(assetBundleFolder.State).Description;
                EditorGUILayout.HelpBox(errorMessage, MessageType.Warning);
            }

            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
        private static void RenderVariant(AssetBundleVariant variant, TextureCompressionFormat targeting)
        {
            EditorGUILayout.BeginHorizontal();

            // TODO: revisit TextureCompressionFormat enum extension methods.
            var targetingDescription = targeting == TextureCompressionFormat.Default
                ? targeting.ToString()
                : targeting.ToString().ToUpper();

            EditorGUILayout.PrefixLabel(targetingDescription);

            EditorGUILayout.LabelField(variant.FileSizeText, GUILayout.ExpandWidth(false));

            var errors = variant.Errors;

            if (errors.Count == 0)
            {
                EditorGUILayout.LabelField("No errors", GUILayout.ExpandWidth(true));
            }
            else
            {
                if (GUILayout.Button(variant.ErrorSummary + "...", GUILayout.ExpandWidth(true)))
                {
                    var errorDialogTitle   = "AssetBundle Error" + (errors.Count == 1 ? string.Empty : "s");
                    var errorDialogMessage = string.Join("\n\n",
                                                         errors.Select(e => NameAndDescriptionAttribute.GetAttribute(e).Description).ToArray());
                    EditorUtility.DisplayDialog(errorDialogTitle, errorDialogMessage, WindowUtils.OkButtonText);
                }
            }

            EditorGUILayout.EndHorizontal();
        }