package gueei.binding.converters;
import gueei.binding.Converter;
import gueei.binding.IObservable;
import gueei.binding.menu.ContextMenuBinder;
/**
* Use exclusively for contextMenu attribute
*
* @usage menu_xml_id model
*
* @arg menu_xml integer XML id of the context menu, e.g. @menu/context_menu
* @arg model Object View model to bind to the menu, most probably it will be just "."
*
* @return gueei.binding.menu.ContextMenuBinder
*
* @author andy
*
*/
public class MENU extends Converter<ContextMenuBinder>{
public MENU(IObservable<?>[] dependents) {
super(ContextMenuBinder.class, dependents);
}
private ContextMenuBinder menuBinder;
/**
* Requires 2 arguments:
* 1: XML id of the menu
* 2: View Model (most of the case, it would be .)
*/
@Override
public ContextMenuBinder calculateValue(Object... args) throws Exception {
if (args.length<2) return null;
if (!(args[0] instanceof Integer)) return null;
if (menuBinder==null){
menuBinder = new ContextMenuBinder((Integer)args[0], args[1]);
return menuBinder;
}
menuBinder.setMenuResId((Integer)args[0]);
menuBinder.setViewModel(args[1]);
return menuBinder;
}
}