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