using System;

namespace InABox.Core
{
    public abstract class StaticLookupEditor : BaseEditor, ILookupEditor
    {
        public StaticLookupEditor(Type type)
        {
            Type = type;
            LookupWidth = int.MaxValue;
        }

        public Type Type { get; set; }

        public int LookupWidth { get; set; }

        public EditorButton[]? Buttons { get; set; }

        public abstract CoreTable Values(string columnname, BaseObject[]? items = null);

        public abstract void Clear();

        public StaticLookupEditor CloneStaticLookupEditor()
        {
            var result = (Activator.CreateInstance(GetType(), Type) as StaticLookupEditor)!;
            result.LookupWidth = LookupWidth;
            return result;
        }
    }
}