--~ Warcraft Plugin for Cyborg MMO7
--~ Filename: RatPageController.lua
--~ Description: Controller logic for the RatPage
--~ Copyright (C) 2012 Mad Catz Inc.
--~ Author: Christopher Hooks

--~ This program is free software; you can redistribute it and/or
--~ modify it under the terms of the GNU General Public License
--~ as published by the Free Software Foundation; either version 2
--~ of the License, or (at your option) any later version.

--~ This program is distributed in the hope that it will be useful,
--~ but WITHOUT ANY WARRANTY; without even the implied warranty of
--~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--~ GNU General Public License for more details.

--~ You should have received a copy of the GNU General Public License
--~ along with this program; if not, write to the Free Software
--~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

CyborgMMO_RatPageController = {
	new = function()
		local self = {}
		CyborgMMO_RatPageModel.Instance().SetMode(1)

		self.SlotClicked = function(slot)
			local slotObject = nil
			slotObject = CyborgMMO_RatPageModel.Instance().GetObjectOnButton(slot.Id)
			CyborgMMO_RatPageModel.Instance().SetObjectOnButton(slot.Id, CyborgMMO_RatPageModel.Instance().GetMode(), self.GetCursorObject())

			if slotObject then
				slotObject.Pickup()
			end
		end

		self.ModeClicked = function(mode)
			CyborgMMO_DPrint("Setting mode "..tostring(mode.Id))
			CyborgMMO_RatPageModel.Instance().SetMode(mode.Id)
		end

		self.GetCursorObject = function()
			local cursorObject = nil
			if GetCursorInfo() then
				local type,detail,subdetail = GetCursorInfo()
				cursorObject = CyborgMMO_WowObject.Create(type, detail, subdetail)
				ClearCursor()
			end
			return cursorObject
		end

		self.CallbackDropped = function(callbackObject)
			local slot = nil
			local observers = CyborgMMO_RatPageModel.Instance().GetAllObservers()
			for i=1,#observers do
				if MouseIsOver(observers[i]) then
					slot = observers[i]
					break
				end
			end
			if slot then
				CyborgMMO_RatPageModel.Instance().SetObjectOnButton(slot.Id, CyborgMMO_RatPageModel.Instance().GetMode(), callbackObject.wowObject)
			end
		end

		self.Close = function()
		end

		self.Open = function()
		end

		return self
	end,

	m_Instance = nil,

	Instance = function()
		if not CyborgMMO_RatPageController.m_Instance then
			CyborgMMO_RatPageController.m_Instance = CyborgMMO_RatPageController.new()
		end
		return CyborgMMO_RatPageController.m_Instance
	end,
}

