﻿#if UNITY_2019_3_OR_NEWER
using UnityEngine.UIElements;
#else
using UnityEngine.Experimental.UIElements;
#endif

namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView
{
    public class UdonProgramSourceView : VisualElement
    {
        private UdonProgramAsset _asset;

        private VisualElement _assemblyContainer;
        private ScrollView _scrollView;
        private Label _assemblyHeader;
        private TextElement _assemblyField;

        public UdonProgramSourceView ()
        {
            // Create and add container and children to display latest Assembly
            _assemblyContainer = new VisualElement() { name = "Container", };
            _assemblyHeader = new Label("Udon Assembly")
            {
                name = "Header",
            };

            _scrollView = new ScrollView();

            _assemblyField = new TextElement()
            {
                name = "AssemblyField",
            };

            _assemblyContainer.Add(_assemblyHeader);
            _assemblyContainer.Add(_scrollView);
            _assemblyContainer.Add(_assemblyField);
            _scrollView.contentContainer.Add(_assemblyField);

            Add(_assemblyContainer);
        }

        public void LoadAsset(UdonGraphProgramAsset asset)
        {
            _asset = asset;
        }

        public void SetText(string newValue)
        {
            _assemblyField.text = newValue;
        }

        public void Unload()
        {
            if(_asset != null)
            {
                _asset = null;
            }
        }
    }
}
