private Map<Listener.Type, ListenerType> createListenerTypeMap(Refs r) { Map<Listener.Type, ListenerType> map = new HashMap<Listener.Type, ListenerType>(); for (Listener.Type type : Listener.Type.values()) { map.put(type, new ListenerType(r, type)); } return map; }
public ListenerType(Refs r, Listener.Type type) { switch (type) { case ON_TOUCH: setter = "setOnTouchListener"; classType = r.ref("android.view.View.OnTouchListener"); methodName = "onTouch"; methodParams = Arrays.asList( new Pair<JType, String>(r.viewClass, "view"), new Pair<JType, String>(r.ref("android.view.MotionEvent"), "event")); methodReturn = r.m.BOOLEAN; defaultReturn = FALSE; break; case ON_CLICK: setter = "setOnClickListener"; classType = r.ref("android.view.View.OnClickListener"); methodName = "onClick"; methodParams = Arrays.asList(new Pair<JType, String>(r.viewClass, "view")); methodReturn = r.m.VOID; defaultReturn = null; break; case ON_LONG_CLICK: setter = "setOnLongClickListener"; classType = r.ref("android.view.View.OnLongClickListener"); methodName = "onLongClick"; methodParams = Arrays.asList(new Pair<JType, String>(r.viewClass, "view")); methodReturn = r.m.BOOLEAN; defaultReturn = FALSE; break; case ON_FOCUS_CHANGE: setter = "setOnFocusChangeListener"; classType = r.ref("android.view.View.OnFocusChangeListener"); methodName = "onFocusChange"; methodParams = Arrays.asList( new Pair<JType, String>(r.viewClass, "view"), new Pair<JType, String>(r.m.BOOLEAN, "hasFocus")); methodReturn = r.m.VOID; defaultReturn = null; break; case ON_CHECKED_CHANGE: setter = "setOnCheckedChangeListener"; classType = r.ref("android.widget.CompoundButton.OnCheckedChangeListener"); methodName = "onCheckedChanged"; methodParams = Arrays.asList( new Pair<JType, String>(r.ref("android.widget.CompoundButton"), "view"), new Pair<JType, String>(r.m.BOOLEAN, "isChecked")); methodReturn = r.m.VOID; defaultReturn = null; break; case ON_EDITOR_ACTION: setter = "setOnEditorActionListener"; classType = r.ref("android.widget.TextView.OnEditorActionListener"); methodName = "onEditorAction"; methodParams = Arrays.asList( new Pair<JType, String>(r.ref("android.widget.TextView"), "view"), new Pair<JType, String>(r.m.INT, "actionId"), new Pair<JType, String>(r.ref("android.view.KeyEvent"), "event")); methodReturn = r.m.BOOLEAN; defaultReturn = FALSE; break; case ON_ITEM_CLICK: setter = "setOnItemClickListener"; classType = r.ref("android.widget.AdapterView.OnItemClickListener"); methodName = "onItemClick"; methodParams = Arrays.asList( new Pair<JType, String>(r.ref("android.widget.AdapterView<?>"), "view"), new Pair<JType, String>(r.viewClass, "item"), new Pair<JType, String>(r.m.INT, "position"), new Pair<JType, String>(r.m.LONG, "id")); methodReturn = r.m.VOID; defaultReturn = null; break; case ON_ITEM_LONG_CLICK: setter = "setOnItemLongClickListener"; classType = r.ref("android.widget.AdapterView.OnItemLongClickListener"); methodName = "onItemLongClick"; methodParams = Arrays.asList( new Pair<JType, String>(r.ref("android.widget.AdapterView<?>"), "view"), new Pair<JType, String>(r.viewClass, "item"), new Pair<JType, String>(r.m.INT, "position"), new Pair<JType, String>(r.m.LONG, "id")); methodReturn = r.m.BOOLEAN; defaultReturn = FALSE; break; default: throw new IllegalArgumentException("Unknown listener type: " + type.toString()); } }