Makes sense, yep!  I noticed @gnarf sometimes names the handlers with lowercase, and it may be for a different reason, but couldn't I just invoke it like this: 
// call panel handler
this['on'+button.action]();