The best way to achieve this is with the 2D API. You can also use imagecanvas but it would not be really suitable for what you are trying to do. The 2D has a learning curve and as one brilliant developer has put it "Is a daunting task". But it is quite rewarding if you have the time to invest in it. Working for a client is probably not the best time to experiment with such complexity as you describe. It would involve not only mastering the 2D but also the texturemanager component which is best used asynchronously for dynamic grids. There are built-in components which offer the same menu/grid combo
My Channels: 2D API Framework Presentation: https://owner.roku.com/add/2M9LCVC
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )