using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class RenderSettingsWindow : EditorWindow {

		private static HashSet<IRenderSettingPreset> presets = new HashSet<IRenderSettingPreset>();

		private static Dictionary<IRenderSettingPreset, bool> presetCollapsedDict = new Dictionary<IRenderSettingPreset, bool>();

		private IRenderSettingPresetBuilder presetBuilder = new RenderSettingPresetBuilder();

		private const bool isNotCollapsed = true;

		void OnGUI() {
			if (presets.Count == 0) {
				EditorGUILayout.LabelField("No presets available");
			} else {
				foreach (IRenderSettingPreset preset in presets) {
					DrawPreset(preset);
				}
			}

			if(GUILayout.Button("Create new preset")) {
				IRenderSettingPreset preset = presetBuilder.Build("Preset_" + (presets.Count + 1));
				presets.Add(preset);
				presetCollapsedDict.Add(preset, isNotCollapsed);
				Repaint();
			}
		}

		private void DrawPreset(IRenderSettingPreset preset) {

			bool foldoutOpen = EditorGUILayout.Foldout(presetCollapsedDict[preset],
															preset.GetName(),
															EditorStyles.foldout);

			presetCollapsedDict[preset] = foldoutOpen;

			if (foldoutOpen) {
				DrawPresetSettings(preset);
			}

		}

		private void DrawPresetSettings(IRenderSettingPreset preset) {
			foreach (string child in preset.GetChildren()) {
				EditorGUILayout.LabelField(child);
			}

			if (GUILayout.Button("Add Visual Blueprint")) {
				preset.AddChild("Child_" + preset.GetChildren().Count);
			}
		}
	}