Why is addListener in Components protected?

Hi all
I want to write different ComponentEvents like mousedown, mouseup, … . But when i want to add this, i have to wrap the default Components. As example i want add a ComponentEventListener to a Div component.

I wrote a class for the MouseDownEvent with the @DomEvent and @EventData.

Is the only way to make a Custom Div component that implements an addMouseDownListener?
Actually I would wish that the addListener method would be instead of protected public.

Thanks for your help