/* * 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.LuaViewApi; import com.taobao.luaview.fun.mapper.LuaViewLib; import com.taobao.luaview.userdata.ui.UDHorizontalScrollView; import com.taobao.luaview.util.DimenUtil; import org.luaj.vm2.LuaValue; import org.luaj.vm2.Varargs; import java.util.List; /** * HorizontalScrollView的方法映射 */ @LuaViewLib(revisions = {"20170306已对标"}) public class UIHorizontalScrollViewMethodMapper<U extends UDHorizontalScrollView> extends UIViewGroupMethodMapper<U> { private static final String TAG = "UIHorizontalScrollViewMethodMapper"; private static final String[] sMethods = new String[]{ "offset",//0 "scrollTo",//1 "offsetBy",//2 "scrollBy",//3 "smoothScrollTo",//4 "smoothScrollBy",//5 "pageScroll",//6 "fullScroll",//7 "contentSize"//8 }; @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 offset(target, varargs); case 1: return scrollTo(target, varargs); case 2: return offsetBy(target, varargs); case 3: return scrollBy(target, varargs); case 4: return smoothScrollTo(target, varargs); case 5: return smoothScrollBy(target, varargs); case 6: return pageScroll(target, varargs); case 7: return fullScroll(target, varargs); case 8: return contentSize(target, varargs); } return super.invoke(code, target, varargs); } //--------------------------------------- API -------------------------------------------------- /** * 滚动到某个位置 * * @param view * @param varargs * @return */ public Varargs offset(U view, Varargs varargs) { if (varargs.narg() > 1) { return setOffset(view, varargs); } else { return getOffset(view, varargs); } } public LuaValue setOffset(U view, Varargs varargs) { final int x = DimenUtil.dpiToPx(varargs.arg(2)); final int y = DimenUtil.dpiToPx(varargs.arg(3)); final boolean smooth = varargs.optboolean(4, false); if (smooth) { return view.smoothScrollTo(x, y); } else { return view.scrollTo(x, y); } } public Varargs getOffset(U view, Varargs varargs) { return getOffsetXY(view, varargs); } /** * 滚动到某个位置 * * @param view * @param varargs * @return */ @Deprecated public LuaValue scrollTo(U view, Varargs varargs) { final int x = DimenUtil.dpiToPx(varargs.arg(2)); final int y = DimenUtil.dpiToPx(varargs.arg(3)); final boolean smooth = varargs.optboolean(4, false); if (smooth) { return view.smoothScrollTo(x, y); } else { return view.scrollTo(x, y); } } /** * 滚动到某个位置 * * @param view * @param varargs * @return */ public Varargs offsetBy(U view, Varargs varargs) { if (varargs.narg() > 1) { return setOffsetBy(view, varargs); } else { return getOffsetBy(view, varargs); } } public LuaValue setOffsetBy(U view, Varargs varargs) { final int x = DimenUtil.dpiToPx(varargs.arg(2)); final int y = DimenUtil.dpiToPx(varargs.arg(3)); final boolean smooth = varargs.optboolean(4, false); if (smooth) { return view.smoothScrollBy(x, y); } else { return view.scrollBy(x, y); } } public Varargs getOffsetBy(U view, Varargs varargs) { return getOffsetXY(view, varargs); } /** * 滚动一段距离 * * @param view * @param varargs * @return */ @Deprecated public LuaValue scrollBy(U view, Varargs varargs) { final int dx = DimenUtil.dpiToPx(varargs.arg(2)); ; final int dy = DimenUtil.dpiToPx(varargs.arg(3)); final boolean smooth = varargs.optboolean(4, false); if (smooth) { return view.smoothScrollBy(dx, dy); } else { return view.scrollBy(dx, dy); } } /** * 滚动到某个位置 * * @param view * @param varargs * @return */ @Deprecated public LuaValue smoothScrollTo(U view, Varargs varargs) { final int x = DimenUtil.dpiToPx(varargs.arg(2)); final int y = DimenUtil.dpiToPx(varargs.arg(3)); return view.smoothScrollTo(x, y); } /** * 滚动一段距离 * * @param view * @param varargs * @return */ @Deprecated public LuaValue smoothScrollBy(U view, Varargs varargs) { final int dx = DimenUtil.dpiToPx(varargs.arg(2)); final int dy = DimenUtil.dpiToPx(varargs.arg(3)); return view.smoothScrollBy(dx, dy); } /** * scroll one page * * @param view * @param varargs * @return */ @Deprecated public LuaValue pageScroll(U view, Varargs varargs) { final int direction = varargs.optint(2, 0); return view.pageScroll(direction); } /** * scroll whole page * * @param view * @param varargs * @return */ @Deprecated public LuaValue fullScroll(U view, Varargs varargs) { final int direction = varargs.optint(2, 0); return view.fullScroll(direction); } /** * 空实现 * * @param view * @param varargs * @return */ @LuaViewApi(revisions = {"iOS特有,待沟通"}) public LuaValue contentSize(U view, Varargs varargs) { return view; } }