RenderNode_Delegate.java revision 796e9b7f9910f2ba8133cdb6f137107585b2e5fa
1796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta/* 2796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Copyright (C) 2014 The Android Open Source Project 3796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 4796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 5796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * you may not use this file except in compliance with the License. 6796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * You may obtain a copy of the License at 7796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 8796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * http://www.apache.org/licenses/LICENSE-2.0 9796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 10796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Unless required by applicable law or agreed to in writing, software 11796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * distributed under the License is distributed on an "AS IS" BASIS, 12796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * See the License for the specific language governing permissions and 14796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * limitations under the License. 15796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta */ 16796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 17796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptapackage android.view; 18796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 19796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptaimport com.android.layoutlib.bridge.impl.DelegateManager; 20796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptaimport com.android.tools.layoutlib.annotations.LayoutlibDelegate; 21796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 22796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta/** 23796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Delegate implementing the native methods of {@link RenderNode} 24796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * <p/> 25796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Through the layoutlib_create tool, some native methods of RenderNode have been replaced by calls 26796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * to methods of the same name in this delegate class. 27796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 28796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * @see DelegateManager 29796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta */ 30796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptapublic class RenderNode_Delegate { 31796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 32796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 33796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta // ---- delegate manager ---- 34796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta private static final DelegateManager<RenderNode_Delegate> sManager = 35796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta new DelegateManager<RenderNode_Delegate>(RenderNode_Delegate.class); 36796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 37796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 38796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta private float mLift; 39796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @SuppressWarnings("UnusedDeclaration") 40796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta private String mName; 41796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 42796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 43796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta /*package*/ static long nCreate(String name) { 44796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta RenderNode_Delegate renderNodeDelegate = new RenderNode_Delegate(); 45796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta renderNodeDelegate.mName = name; 46796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return sManager.addNewDelegate(renderNodeDelegate); 47796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 48796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 49796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 50796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta /*package*/ static void nDestroyRenderNode(long renderNode) { 51796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta sManager.removeJavaReferenceFor(renderNode); 52796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 53796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 54796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 55796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta /*package*/ static boolean nSetElevation(long renderNode, float lift) { 56796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 57796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta if (delegate != null && delegate.mLift != lift) { 58796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta delegate.mLift = lift; 59796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return true; 60796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 61796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return false; 62796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 63796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 64796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 65796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta /*package*/ static float nGetElevation(long renderNode) { 66796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 67796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta if (delegate != null) { 68796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return delegate.mLift; 69796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 70796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return 0f; 71796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 72796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta} 73