It uses the Blizzard "clock" animation to display the GCD. I don't have any buttons visible on my screen during combat so I created this addon.
UPDATE: I created a standalone version of this addon that does not require oUF. You can find it here.
How To Use it
If you don't have oUF installed, install it.
The easiest way to test that the cooldown is working is to specify a frame
in your layout that will contain the animation. For instance, your player
if (unit == 'player') then
self.GCD_frame = self.Health
This should allow you to see the cooldown animation when the GCD is active.
You could also place it in your portrait, over the target frame, or any
other frame you'd like. This probably isn't what you want though, so you can
create your own frame which will hold the GCD animation. I use something
similar to the following:
if (unit == 'player' and IsAddOnLoaded('oUF_GCD_frame')) then
local frame = CreateFrame('Frame')
frame:SetPoint('CENTER', 0, 0)
frame.GCD_hideFrame = true
local icon = frame:CreateTexture(nil, 'BACKGROUND')
self.GCD_frame = frame
This will show a big 'not' icon in the center of your screen when the GCD is
active. It will disappear when the GCD finishes (as specified by
GCD_hideFrame.) You can also create your own cooldown to adjust the its
settings, but by default is is defined as follows: