--[[-----------------------------------------------------------------------------
Heading Widget
-------------------------------------------------------------------------------]]
local Type, Version = 'Heading', 20
local AceGUI = LibStub and LibStub('AceGUI-3.0', true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then
  return
end

-- Lua APIs
local pairs = pairs

-- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent

--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
  ['OnAcquire'] = function(self)
    self:SetText()
    self:SetFullWidth()
    self:SetHeight(18)
  end,

  -- ["OnRelease"] = nil,

  ['SetText'] = function(self, text)
    self.label:SetText(text or '')
    if text and text ~= '' then
      self.left:SetPoint('RIGHT', self.label, 'LEFT', -5, 0)
      self.right:Show()
    else
      self.left:SetPoint('RIGHT', -3, 0)
      self.right:Hide()
    end
  end,
}

--[[-----------------------------------------------------------------------------
Constructor
-------------------------------------------------------------------------------]]
local function Constructor()
  local frame = CreateFrame('Frame', nil, UIParent)
  frame:Hide()

  local label = frame:CreateFontString(nil, 'BACKGROUND', 'GameFontNormal')
  label:SetPoint('TOP')
  label:SetPoint('BOTTOM')
  label:SetJustifyH('CENTER')

  local left = frame:CreateTexture(nil, 'BACKGROUND')
  left:SetHeight(8)
  left:SetPoint('LEFT', 3, 0)
  left:SetPoint('RIGHT', label, 'LEFT', -5, 0)
  left:SetTexture('Interface\\Tooltips\\UI-Tooltip-Border')
  left:SetTexCoord(0.81, 0.94, 0.5, 1)

  local right = frame:CreateTexture(nil, 'BACKGROUND')
  right:SetHeight(8)
  right:SetPoint('RIGHT', -3, 0)
  right:SetPoint('LEFT', label, 'RIGHT', 5, 0)
  right:SetTexture('Interface\\Tooltips\\UI-Tooltip-Border')
  right:SetTexCoord(0.81, 0.94, 0.5, 1)

  local widget = {
    label = label,
    left = left,
    right = right,
    frame = frame,
    type = Type,
  }
  for method, func in pairs(methods) do
    widget[method] = func
  end

  return AceGUI:RegisterAsWidget(widget)
end

AceGUI:RegisterWidgetType(Type, Constructor, Version)
