/*
* 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.userdata.ui;
import android.graphics.Canvas;
import android.view.ViewGroup;
import com.taobao.luaview.util.LuaUtil;
import com.taobao.luaview.view.LVViewGroup;
import org.luaj.vm2.Globals;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.Varargs;
/**
* 容器类
*
* @author song
* @date 15/8/20
*/
public class UDCustomView<T extends ViewGroup> extends UDViewGroup<T> {
private LuaValue mOnDraw;
private UDCanvas mCanvas;
public UDCustomView(T view, Globals globals, LuaValue metatable, Varargs initParams) {
super(view, globals, metatable, initParams);
}
@Override
public UDCustomView setCallback(LuaValue callbacks) {
super.setCallback(callbacks);
if (this.mCallback != null) {
mOnDraw = LuaUtil.getFunction(mCallback, "onDraw", "OnDraw");
}
return this;
}
public LuaValue setOnDrawCallback(LuaValue mOnDraw) {
this.mOnDraw = mOnDraw;
return this;
}
public LuaValue getOnDrawCallback() {
return this.mOnDraw;
}
public boolean hasOnDrawCallback() {
return this.mOnDraw != null && this.mOnDraw.isfunction();
}
public LuaValue callOnDraw(LVViewGroup viewGroup, Canvas canvas) {
if (mCanvas == null) {
mCanvas = new UDCanvas(viewGroup, canvas, getGlobals(), getmetatable(), null);
} else {
mCanvas.setCanvas(canvas);
mCanvas.setTarget(viewGroup);
}
return LuaUtil.callFunction(mOnDraw, mCanvas);
}
}