/**
@page getting_control_button_events Getting control button events

Control button events are communicated from Lightpad and Control Blocks to your application via ControlButton objects.

You can obtain an array of %ControlButton pointers associated with a specific Lightpad or Control %Block from its corresponding Block object using the Block::getButtons method---see the @ref discovering_blocks page for an example of how to obtain %Block objects.
Each pointer to a %ControlButton will be valid for the lifetime of the %Block object.

Once you have a %ControlButton you must register as a ControlButton::Listener to receive button pressed and button released callbacks.
The process for doing this is to have one of your application's classes inherit from %ControlButton::Listener and override the pure virtual methods ControlButton::Listener::buttonPressed and ControlButton::Listener::buttonReleased.
Then, when you register your derived class as a listener to a particular %ControlButton, your overriden methods will be called when the corresponding button is pressed and released.

Registering a class derived from %ControlButton::Listener with multiple %ControlButton objects is done as follows:
@code{.cpp}
class ControlButtonListenerExample : public ControlButton::Listener
{
public:
    ControlButtonListenerExample (Block& block)
    {
        for (auto button : block->getButtons())
            button->addListener (this);
    }

    virtual void buttonPressed (ControlButton&, sourceControlButton, Block::Timestamp timestamp) override
    {
        // Do something when the sourceControlButton is pressed!
    }

    virtual void buttonReleased (ControlButton&, sourceControlButton, Block::Timestamp timestamp) override
    {
        // Do something when the sourceControlButton is released!
    }
};
@endcode

When your overriden <code>buttonPressed</code> or <code>buttonReleased</code> methods are called you have access to two paramters: a reference to the %ControlButton that generated this event and timestamp for the event.

You will find multiple examples of control button listeners in the @ref example_applications pages.
*/

