--[[
    Author: Alternator (Massiner of Nathrezim)
    Copyright 2010
	
	Notes: 

--]]

local CustomAction = BFCustomAction;
local Const = BFConst;
local Util = BFUtil;
local UILib = BFUILib;

--If too many more custom actions are added here this will be a good candidate the turn into a table
function CustomAction.GetTexture(Action)
	if (Action == "configuremode") then
		return Const.ImagesDir.."Configure.tga";
	elseif (Action == "createbarmode") then
		return Const.ImagesDir.."CreateBar.tga";
	elseif (Action == "createbonusbarmode") then
		return Const.ImagesDir.."CreateBonusBar.tga";
	elseif (Action == "destroybarmode") then
		return Const.ImagesDir.."DestroyBar.tga";
	elseif (Action == "advancedtoolsmode") then
		return Const.ImagesDir.."AdvancedTools.tga";
	elseif (Action == "rightclickselfcast") then
		return Const.ImagesDir.."RightClickSelfCast.tga";
	elseif (Action == "vehicleexit") then
		return "Interface/Vehicles/UI-Vehicles-Button-Exit-Up", {0.171875, 0.84375, 0.140625, 0.84375};
	elseif (Action == "possesscancel") then
		local Texture = GetPossessInfo(2);
		return Texture or "Interface/Icons/Spell_Shadow_SacrificialShield";
	--[[
	elseif (Action == "vehicleaimup") then
		return "Interface/Vehicles/UI-Vehicles-Button-Pitch-Up", {0.234375, 0.765625, 0.25, 0.78125};
	elseif (Action == "vehicleaimdown") then
		return "Interface/Vehicles/UI-VEHICLES-BUTTON-PITCHDOWN-UP", {0.234375, 0.765625, 0.25, 0.78125};
	elseif (Action == "possessspell") then
		local Texture = GetPossessInfo(1);
		return Texture or Const.ImagesDir.."AdvancedTools.tga";
	--]]
	end
end

function CustomAction.SetAttributes(Action, Widget)
	if (Action == "configuremode") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click BFToolbarToggle");
	elseif (Action == "createbarmode") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click BFToolbarCreateBar");
	elseif (Action == "createbonusbarmode") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click BFToolbarCreateBonusBar");
	elseif (Action == "destroybarmode") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click BFToolbarDestroyBar");
	elseif (Action == "advancedtoolsmode") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click BFToolbarAdvanced");
	elseif (Action == "rightclickselfcast") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click BFToolbarRightClickSelfCast");
	elseif (Action == "vehicleexit") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/run VehicleExit()");
	elseif (Action == "possesscancel") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/run CancelUnitBuff(\"player\", select(2, GetPossessInfo(2)) or \"\")");
	--[[
	elseif (Action == "vehicleaimup") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click VehicleMenuBarPitchUpButton");
	elseif (Action == "vehicleaimdown") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/click VehicleMenuBarPitchDownButton");
	elseif (Action == "possessspell") then
		Widget:SetAttribute("type", "macro");
		Widget:SetAttribute("macrotext", "/do nothing");
	--]]
	end
end

function CustomAction.GetChecked(Action)
	if (Action == 'configuremode') then
		if (BFConfigureLayer:IsShown()) then
			return 1;
		end
	elseif (Action == 'createbarmode') then
		if (UILib.CreateBarMode) then
			return 1;
		end
	elseif (Action == 'createbonusbarmode') then
		if (UILib.CreateBonusBarMode) then
			return 1;
		end
	elseif (Action == 'destroybarmode') then
		if (BFDestroyBarOverlay:IsShown()) then
			return 1;
		end
	elseif (Action == 'advancedtoolsmode') then
		if (BFAdvancedToolsLayer:IsShown() and BFConfigureLayer:IsShown()) then
			return 1;
		end
	elseif (Action == "rightclickselfcast") then
		if (ButtonForgeSave["RightClickSelfCast"]) then
			return 1;
		end
	end
	return nil;
end

function CustomAction.IsUsable(Action)
	-- I could wire in a combat check for several of the actions here...
	if (Action == 'createbonusbarmode') then
		return BFConfigureLayer:IsShown(), nil;
	elseif (Action == 'vehicleexit') then
		return CanExitVehicle(), nil;
	elseif (Action == 'possesscancel') then
		--perhaps try the third param in getpossessinfo(2)??
		return IsPossessBarVisible(), nil;
	--[[
	elseif (Action == 'vehicleaimup') then
		return IsVehicleAimAngleAdjustable(), nil;
	elseif (Action == 'vehicleaimdown') then
		return IsVehicleAimAngleAdjustable(), nil;
	elseif (Action == 'possessspell') then
		return IsPossessBarVisible(), nil;
	--]]
	end
	return 1, nil;
end

function CustomAction.UpdateTooltip(Action)
	if (Action == 'configuremode') then
		GameTooltip:SetText(Util.GetLocaleString("ConfigureModeTooltip"), nil, nil, nil, nil, 1);
	elseif (Action == 'createbarmode') then
		GameTooltip:SetText(Util.GetLocaleString("CreateBarTooltip"), nil, nil, nil, nil, 1);
	elseif (Action == 'createbonusbarmode') then
		GameTooltip:SetText(Util.GetLocaleString("CreateBonusBarTooltip"), nil, nil, nil, nil, 1);
	elseif (Action == 'destroybarmode') then
		GameTooltip:SetText(Util.GetLocaleString("DestroyBarTooltip"), nil, nil, nil, nil, 1);
	elseif (Action == 'advancedtoolsmode') then
		GameTooltip:SetText(Util.GetLocaleString("AdvancedToolsTooltip"), nil, nil, nil, nil, 1);
	elseif (Action == "rightclickselfcast") then
		GameTooltip:SetText(BFToolbarRightClickSelfCast.Tooltip, nil, nil, nil, nil, 1);
	elseif (Action == 'vehicleexit') then
		GameTooltip:SetText(LEAVE_VEHICLE, nil, nil, nil, nil, 1);		--This prob needs a better tooltip (although is not as bad as the possesscancel)
	elseif (Action == 'possesscancel') then
		GameTooltip:SetText(Util.GetLocaleString("CancelPossessionTooltip"));	--This needs a better tooltip than the default one (the default one has the advantage of context)
	--[[
	elseif (Action == 'vehicleaimup') then
		GameTooltip:SetText(AIM_UP, nil, nil, nil, nil, 1);
	elseif (Action == 'vehicleaimdown') then
		GameTooltip:SetText(AIM_DOWN, nil, nil, nil, nil, 1);
	elseif (Action == 'possessspell') then
		GameTooltip:SetPossession(1);	
	--]]
	end
end

function CustomAction.SetCursor(Action)
	if (Action == 'configuremode') then
		UILib.StartDraggingIcon(Const.ImagesDir.."Configure.tga", 23, 23, "customaction", Action);
	elseif (Action == 'createbarmode') then
		UILib.StartDraggingIcon(Const.ImagesDir.."CreateBar.tga", 23, 23, "customaction", Action);
	elseif (Action == 'createbonusbarmode') then
		UILib.StartDraggingIcon(Const.ImagesDir.."CreateBonusBar.tga", 23, 23, "customaction", Action);
	elseif (Action == 'destroybarmode') then
		UILib.StartDraggingIcon(Const.ImagesDir.."DestroyBar.tga", 23, 23, "customaction", Action);
	elseif (Action == 'advancedtoolsmode') then
		UILib.StartDraggingIcon(Const.ImagesDir.."AdvancedTools.tga", 23, 23, "customaction", Action);
	elseif (Action == "rightclickselfcast") then
		UILib.StartDraggingIcon(Const.ImagesDir.."RightClickSelfCast.tga", 23, 23, "customaction", Action);
	elseif (Action == 'vehicleexit') then
		UILib.StartDraggingIcon("Interface/Vehicles/UI-Vehicles-Button-Exit-Up", 23, 23, "customaction", Action, nil, {0.171875, 0.84375, 0.140625, 0.84375});
	elseif (Action == 'possesscancel') then
		UILib.StartDraggingIcon("Interface/Icons/Spell_Shadow_SacrificialShield", 23, 23, "customaction", Action);
	--[[
	elseif (Action == 'vehicleaimup') then
		UILib.StartDraggingIcon("Interface/Vehicles/UI-Vehicles-Button-Pitch-Up", 23, 23, "customaction", Action, nil, {0.234375, 0.765625, 0.25, 0.78125});
	elseif (Action == 'vehicleaimdown') then
		UILib.StartDraggingIcon("Interface/Vehicles/UI-VEHICLES-BUTTON-PITCHDOWN-UP", 23, 23, "customaction", Action, nil, {0.234375, 0.765625, 0.25, 0.78125});
	elseif (Action == 'possessspell') then
		UILib.StartDraggingIcon("Interface/Vehicles/UI-VEHICLES-BUTTON-PITCHDOWN-UP", 23, 23, "customaction", Action, nil, {0.234375, 0.765625, 0.25, 0.78125});
	--]]
	end
end

