/*
<copyright file="BGGCRowADrawer.cs" company="BansheeGz">
    Copyright (c) 2018-2022 All Rights Reserved
</copyright>
*/

using System;
using UnityEditor.UIElements;
using UnityEngine.UIElements;

namespace BansheeGz.BGDatabase.Editor
{
    public abstract class BGGCRowADrawer<T> : BGGCTableADrawer<T> where T : BGGCRowA
    {
        private PropertyField rowIndexVar;
        private PropertyField rowIdVar;
        private PropertyField rowNameVar;

        protected override void Create()
        {
            base.Create();

            var rowSource = PropEditor("rowSource");
            rowSource.RegisterValueChangeCallback(evt => VisibilityCheck(action.RowSource));

            //row
            rowIndexVar = PropEditor("rowIndexVar");
            rowIdVar = PropEditor("rowIdVar");
            rowNameVar = PropEditor("rowNameVar");

            VisibilityCheck(action.RowSource);
        }

        private void VisibilityCheck(BGGCRowA.BGGCRowSource source)
        {
            switch (source)
            {
                case BGGCRowA.BGGCRowSource.Index:
                    rowIndexVar.style.display = DisplayStyle.Flex;
                    rowIdVar.style.display =  DisplayStyle.None;
                    rowNameVar.style.display =  DisplayStyle.None;
                    break;
                case BGGCRowA.BGGCRowSource.Id:
                    rowIndexVar.style.display =  DisplayStyle.None;
                    rowIdVar.style.display = DisplayStyle.Flex;
                    rowNameVar.style.display =  DisplayStyle.None;
                    break;
                case BGGCRowA.BGGCRowSource.Name:
                    rowIndexVar.style.display =  DisplayStyle.None;
                    rowIdVar.style.display =  DisplayStyle.None;
                    rowNameVar.style.display =  DisplayStyle.Flex;
                    break;
                default:
                    throw new ArgumentOutOfRangeException(nameof(action.RowSource));
            }
        }
    }
}