/*
* Created by LuaView.
* Copyright (c) 2017, Alibaba Group. All rights reserved.
*
* This source code is licensed under the MIT.
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
*/
package com.taobao.luaview.fun.mapper.ui;
import com.taobao.luaview.fun.mapper.LuaViewLib;
import com.taobao.luaview.userdata.ui.UDButton;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.Varargs;
import java.util.List;
/**
* Button 接口封装
* @author song
* @param <U>
*/
@LuaViewLib(revisions = {"20170306已对标", "跟iOS不一致,iOS继承自View"})
public class UIButtonMethodMapper<U extends UDButton> extends UITextViewMethodMapper<U> {
private static final String TAG = "UIButtonMethodMapper";
private static final String[] sMethods = new String[]{
"title",//0
"titleColor",//1
"image",//2
"showsTouchWhenHighlighted"//3
};
@Override
public List<String> getAllFunctionNames() {
return mergeFunctionNames(TAG, super.getAllFunctionNames(), sMethods);
}
@Override
public Varargs invoke(int code, U target, Varargs varargs) {
final int optcode = code - super.getAllFunctionNames().size();
switch (optcode) {
case 0:
return title(target, varargs);
case 1:
return titleColor(target, varargs);
case 2:
return image(target, varargs);
case 3:
return showsTouchWhenHighlighted(target, varargs);
}
return super.invoke(code, target, varargs);
}
//--------------------------------------- API --------------------------------------------------
/**
* setText
*
* @param view UIButton
* @param varargs Varargs
* @return LuaValue
*/
@Deprecated
public LuaValue title(U view, Varargs varargs) {
return text(view, varargs);
}
public LuaValue setTitle(U view, Varargs varargs) {
return setText(view, varargs);
}
public LuaValue getTitle(U view, Varargs varargs) {
return getText(view, varargs);
}
/**
* 文字颜色
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue titleColor(U view, Varargs varargs) {
return textColor(view, varargs);
}
public LuaValue setTitleColor(U view, Varargs varargs) {
return setTextColor(view, varargs);
}
public LuaValue getTitleColor(U view, Varargs varargs) {
return getTextColor(view, varargs);
}
/**
* 设置图片
*
* @param view
* @param varargs
* @return
*/
public Varargs image(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setImage(view, varargs);
} else {
return getImage(view, varargs);
}
}
public LuaValue setImage(U view, Varargs varargs) {//TODO 支持参数为Data类型
final String normalImage = varargs.optjstring(2, null);
final String pressedImage = varargs.optjstring(3, null);
return view.setImage(normalImage, pressedImage);
}
public Varargs getImage(U view, Varargs varargs) {
return view.getImage();
}
/**
* 获取按钮点击是否高亮
*
* @param view
* @param varargs
* @return
*/
@Deprecated
public LuaValue showsTouchWhenHighlighted(U view, Varargs varargs) {
if (varargs.narg() > 1) {
return setShowsTouchWhenHighlighted(view, varargs);
} else {
return isShowsTouchWhenHighlighted(view, varargs);
}
}
public LuaValue setShowsTouchWhenHighlighted(U view, Varargs varargs) {
//TODO
return view.setHighlightColor(0);
}
public LuaValue isShowsTouchWhenHighlighted(U view, Varargs varargs) {
//TODO
return valueOf(view.getHighlightColor() == 0);
}
}