Gizmo or any other alternative to bbox widget to rotate a polydata

I wonder if I had implemented the gizmo as a widget, the code would be more efficient. As I am switching from camera to gizmo style every time I click on an actor. Someone has any idea?. So if it is was a widget it would be independent from the style.

If i wanted to implement it as a widget, should I define representation and widget?. Or I can subclass it directly?. Any idea?

By now I will keep the interactor solution as it works although it might not be the best solution until I find an efficient way to make it widget then I can share the code in github.

Thanks