using System;
using UnityEngine;
using GUIEvent = UnityEngine.Event;
namespace Unity.VisualScripting
{
public abstract class Page
{
protected Page()
{
completeLabel = "Done";
}
private Vector2 contentScroll;
public string title { get; set; }
public string shortTitle { get; set; }
public string subtitle { get; set; }
public EditorTexture icon { get; set; }
public Action onComplete { private get; set; }
public string completeLabel { get; set; }
private bool shouldComplete;
protected virtual void OnShow() { }
public virtual void Update() { }
public bool CompleteSwitch()
{
if (shouldComplete)
{
shouldComplete = false;
onComplete.Invoke();
return true;
}
else
{
return false;
}
}
protected virtual void OnHeaderGUI()
{
LudiqGUI.WindowHeader(title, icon);
}
protected abstract void OnContentGUI();
protected virtual void OnClose() { }
public void Show()
{
contentScroll = Vector2.zero;
OnShow();
}
public void Close()
{
OnClose();
}
public void DrawHeader()
{
OnHeaderGUI();
}
public void DrawContent()
{
contentScroll = GUILayout.BeginScrollView(contentScroll, GUILayout.ExpandHeight(true), GUILayout.ExpandWidth(true));
OnContentGUI();
GUILayout.EndScrollView();
}
protected virtual void Complete()
{
shouldComplete = true;
}
public virtual void OnFocus() { }
public virtual void OnLostFocus() { }
protected static GUIEvent e => GUIEvent.current;
}
}