local L = LibStub("AceLocale-3.0"):GetLocale("Rarity", false)

local CopyPastePopup = { editBoxText = "", instructionText = "" }

function CopyPastePopup:OnLoad()
	self:ConfigureStaticPopUp()

	local instructionText = L["Use CTRL+C to copy and CTRL+V to paste"]
	if IsMacClient() then
		instructionText = L["Use CMD+C to copy and CMD+V to paste"]
	end
	self:SetInstructionText(instructionText)
end

function CopyPastePopup:ConfigureStaticPopUp()
	local popup = StaticPopupDialogs["RarityCopyPastePopup"]
	function self.ShowPopupDialogWithEditBox(msg, text, callback, timeout)
		if not popup then
			popup = {
				button1 = L["Close Window"],
				timeout = timeout,
				showAlert = false,
				whileDead = true,
				hideOnEscape = true,
				enterClicksFirstButton = true,
				hasEditBox = true,
				OnAccept = function(frame)
					if popup.callback then
						popup.callback(frame.editBox:GetText())
					end
				end,
			}
			StaticPopupDialogs["RarityCopyPastePopup"] = popup
		end
		popup.OnShow = function(frame, data)
			frame.editBox:SetText(text)
			frame.editBox:SetJustifyH("CENTER")
			frame.editBox:SetWidth(240)
			frame.editBox:HighlightText()
		end
		popup.text = msg or L["Use CTRL+C to copy and CTRL+V to paste"]
		popup.callback = callback
		StaticPopup_Hide("RarityCopyPastePopup")
		StaticPopup_Show("RarityCopyPastePopup")
	end
end

function CopyPastePopup:SetEditBoxText(text)
	text = text or ""
	self.editBoxText = text
end

function CopyPastePopup:SetInstructionText(text)
	text = text or ""
	self.instructionText = text
end

function CopyPastePopup:Show()
	self.ShowPopupDialogWithEditBox(
		self.instructionText,
		self.editBoxText,
		function(frame)
			-- OnCloseCallback? (or at least it's triggered when you click OK)
		end,
		nil -- autoCloseTimeoutInMilliseconds
	)
	local popup = StaticPopupDialogs["RarityCopyPastePopup"] or self.popup
	self.popup = popup
	-- self:Hide()
	StaticPopup_Show(self.name)
end

CopyPastePopup:OnLoad()

Rarity.CopyPastePopup = CopyPastePopup
