/* * 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.base; import android.view.View; import com.taobao.luaview.global.LuaViewConfig; import com.taobao.luaview.global.LuaViewManager; import com.taobao.luaview.util.LuaViewUtil; import com.taobao.luaview.view.interfaces.ILVView; import org.luaj.vm2.Globals; import org.luaj.vm2.LuaValue; import org.luaj.vm2.Varargs; import org.luaj.vm2.lib.LibFunction; import org.luaj.vm2.lib.VarArgFunction; /** * 零参数函数 * * @author song * @date 15/8/14 */ public abstract class BaseVarArgUICreator extends VarArgFunction { public Globals globals; public LuaValue metatable; public Class<? extends LibFunction> libClass; public BaseVarArgUICreator(Globals globals, LuaValue metatable) { this(globals, metatable, null); } public BaseVarArgUICreator(Globals globals, LuaValue metatable, Class<? extends LibFunction> libClass) { this.globals = globals; this.metatable = metatable; this.libClass = libClass; } public Varargs invoke(Varargs args) { if (LuaViewConfig.isLibsLazyLoad()) { metatable = LuaViewManager.createMetatable(libClass); } ILVView view = createView(globals, metatable, args); if (globals.container != null && view instanceof View && ((View) view).getParent() == null) { LuaViewUtil.addView(globals.container, (View) view, args); } return view.getUserdata(); } public abstract ILVView createView(Globals globals, LuaValue metaTable, Varargs varargs); }