using UnityEngine; namespace Unity.VisualScripting { public abstract class SinglePageWindow : EditorWindowWrapper where TPage : Page { protected SinglePageWindow() { } private TPage _page; public TPage page { get { if (_page == null) { _page = CreatePage(); if (_page == null) { throw new InvalidImplementationException(); } _page.onComplete = Close; } return _page; } } protected abstract TPage CreatePage(); protected override void ConfigureWindow() { window.titleContent = new GUIContent(page.title, page.icon?[IconSize.Small]); } public override void OnShow() { page.Show(); } public override void Update() { if (page.CompleteSwitch()) { return; } page.Update(); } public override void OnClose() { page.Close(); } public override void OnFocus() { page.OnFocus(); } public override void OnLostFocus() { page.OnLostFocus(); } public override void OnGUI() { LudiqGUI.BeginVertical(); page.DrawHeader(); // GUILayout.Box(GUIContent.none, LudiqStyles.horizontalSeparator); GUILayout.BeginHorizontal(GUILayout.ExpandHeight(true)); page.DrawContent(); LudiqGUI.EndHorizontal(); LudiqGUI.EndVertical(); } } }