The UI Component handles interaction with the user and displays tiles according to the MAF Extensibility layout configuration.
Similarly to the other components, applications can override, decorate, or replace default behavior. Applications can register their own MAFApplicationTileCreator to take over tile creation or to decorate a tile created by the framework.
UIElements can also be created with application code. By registering a MAFUIElementCreator, applications can build their own UIElements, and replace or modify the default UIElement creation of the framework.
// MAFCore is the main object to deal with MAF Extensibility // MAFCore should be built before MAF Extensibility features can be used MAFCoreBuilder mafCoreBuilder = new MAFCoreBuilder(this, false); //Registering application Tile Controller Creator mafCoreBuilder.setApplicationTileCreator(new MyTileCreator()); … private class MyTileCreator implements MAFApplicationTileCreator { @Override public boolean beforeCreateTile(String tileId, MAFTileController mafTileController) { //Let the framework to do the tile creation return false; } @Override public MAFTile createTile(String tileId, MAFTileController mafTileController) { //Will be never invoked as beforeCreateTile return false always return null; } @Override public MAFTile afterCreateTile(MAFTile tile, String tileId, MAFTileController mafTileController) { //If this is the Tile we're interested in... if ("MyTileIdFromConfig".equals(tileId)) { //...return a new Decorator object return new MyTile(tile); } //...otherwise return the Tile created by the framework return tile; } } private class MyTile implements MAFTile { private MAFTile decoratedTile; public MyTile(MAFTile decoratedTile) { this.decoratedTile = decoratedTile; } @Override public View getView(boolean forceReload, int availableWidth, int availableHeight) { //Let the decorated tile to build the view View resultView = decoratedTile.getView(forceReload, availableWidth, availableHeight); //Search for a created sub-view we're interested in TextView myLabelTextView = (TextView) decoratedTile.findViewById("myLabelUIElementFromConfig"); //Do some after modification myLabelTextView.setBackgroundColor(Color.RED); //And resturn the result return resultView; } @Override public boolean onEvent(String eventId) { //Keep all other methods untouched now return decoratedTile.onEvent(eventId); } … }