It so happens that i am trying to design a more general user interface api for my game that the input will be this of pokemon like games. A and B buttons and arrow buttons from a keyboard. My idea is to use a class to model all kind of ui elements i.e Component that will be able to update its state based on input and redraw it self. And a second class called Manager that would hold a list of all the "alive" Components and its task will be to collect the input, send it to all the elements so that they can update their state and finally call their draw methods. Based on this model i plan to design all the ui elements i will need.
If you are interested in the idea why not work together? Let me know