Why do u need to write three different portlets for that?
My suggestion is create the single portlet to realize the dynamic render function for your layout. As i know about gatein, the layout of portlet in portal is saved independently in database. It is not supported by gatein to change them dynamic. Maybe you can check the code of exo for administration of layout to find something useful. But even if it is possible, you may change a lot of gatein.
And i do not think it is a problem which could be explained by few post in forum.
But as said, just as suggestion.