--[[
	dropdown.lua
		A bagnon dropdown menu
--]]

local OptionsCheckButton = Bagnon.Classy:New('CheckButton')
Bagnon.OptionsCheckButton = OptionsCheckButton

function OptionsCheckButton:New(name, parent)
	local b = self:Bind(CreateFrame('CheckButton', parent:GetName() .. name, parent, 'InterfaceOptionsCheckButtonTemplate'))
	_G[b:GetName() .. 'Text']:SetText(name)

	b:SetScript('OnClick', b.OnClick)
	b:SetScript('OnShow', b.OnShow)

	return b
end

function OptionsCheckButton:SetDisabled(disable)
	if disable then
		self:Disable()
		_G[self:GetName() .. 'Text']:SetFontObject('GameFontDisable')
	else
		self:Enable()
		_G[self:GetName() .. 'Text']:SetFontObject('GameFontHighlight')
	end
end

function OptionsCheckButton:OnClick()
	self:EnableSetting(self:GetChecked())
end

function OptionsCheckButton:OnShow()
	self:UpdateChecked()
end

function OptionsCheckButton:UpdateChecked()
	self:SetChecked(self:IsSettingEnabled())
end

function OptionsCheckButton:EnableSetting(enable)
	self:OnEnableSetting(enable and true or false)
	self:UpdateChecked()
end

function OptionsCheckButton:OnEnableSetting(enable)
	assert(false, 'Hey you forgot to implement OnEnableSetting for ' .. self:GetName())
end

function OptionsCheckButton:IsSettingEnabled()
	assert(false, 'Hey you forgot to implement IsSettingEnabled for ' .. self:GetName())
end