• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.ide.common.rendering.api;
18 
19 import java.util.Collections;
20 import java.util.List;
21 
22 /**
23  * Layout information for a specific view object
24  */
25 public class ViewInfo {
26 
27     private final Object mCookie;
28     private final String mName;
29     private final int mLeft;
30     private final int mRight;
31     private final int mTop;
32     private final int mBottom;
33     private List<ViewInfo> mChildren = Collections.emptyList();
34     private final Object mViewObject;
35     private final Object mLayoutParamsObject;
36 
37     // optional info
38     private int mBaseLine = Integer.MIN_VALUE;
39     private int mLeftMargin = Integer.MIN_VALUE;
40     private int mTopMargin = Integer.MIN_VALUE;
41     private int mRightMargin = Integer.MIN_VALUE;
42     private int mBottomMargin = Integer.MIN_VALUE;
43 
ViewInfo(String name, Object cookie, int left, int top, int right, int bottom)44     public ViewInfo(String name, Object cookie, int left, int top, int right, int bottom) {
45         this(name, cookie, left, top, right, bottom, null /*viewObject*/,
46                 null /*layoutParamsObject*/);
47     }
48 
ViewInfo(String name, Object cookie, int left, int top, int right, int bottom, Object viewObject, Object layoutParamsObject)49     public ViewInfo(String name, Object cookie, int left, int top, int right, int bottom,
50             Object viewObject, Object layoutParamsObject) {
51         mName = name;
52         mCookie = cookie;
53         mLeft = left;
54         mRight = right;
55         mTop = top;
56         mBottom = bottom;
57         mViewObject = viewObject;
58         mLayoutParamsObject = layoutParamsObject;
59     }
60 
61     /**
62      * Sets the list of children {@link ViewInfo}.
63      */
setChildren(List<ViewInfo> children)64     public void setChildren(List<ViewInfo> children) {
65         if (children != null) {
66             mChildren = Collections.unmodifiableList(children);
67         } else {
68             mChildren = Collections.emptyList();
69         }
70     }
71 
setExtendedInfo(int baseLine, int leftMargin, int topMargin, int rightMargin, int bottomMargin)72     public void setExtendedInfo(int baseLine, int leftMargin, int topMargin,
73             int rightMargin, int bottomMargin) {
74         mBaseLine = baseLine;
75         mLeftMargin = leftMargin;
76         mTopMargin = topMargin;
77         mRightMargin = rightMargin;
78         mBottomMargin = bottomMargin;
79     }
80 
81     /**
82      * Returns the list of children views. This is never null, but can be empty.
83      */
getChildren()84     public List<ViewInfo> getChildren() {
85         return mChildren;
86     }
87 
88     /**
89      * Returns the cookie associated with the XML node. Can be null.
90      *
91      * @see ILayoutPullParser#getViewKey()
92      */
getCookie()93     public Object getCookie() {
94         return mCookie;
95     }
96 
97     /**
98      * Returns the class name of the view object. Can be null.
99      */
getClassName()100     public String getClassName() {
101         return mName;
102     }
103 
104     /**
105      * Returns the left of the view bounds, relative to the view parent bounds.
106      */
getLeft()107     public int getLeft() {
108         return mLeft;
109     }
110 
111     /**
112      * Returns the top of the view bounds, relative to the view parent bounds.
113      */
getTop()114     public int getTop() {
115         return mTop;
116     }
117 
118     /**
119      * Returns the right of the view bounds, relative to the view parent bounds.
120      */
getRight()121     public int getRight() {
122         return mRight;
123     }
124 
125     /**
126      * Returns the bottom of the view bounds, relative to the view parent bounds.
127      */
getBottom()128     public int getBottom() {
129         return mBottom;
130     }
131 
132     /**
133      * Returns the actual android.view.View (or child class) object. This can be used
134      * to query the object properties that are not in the XML and not in the map returned
135      * by {@link #getDefaultPropertyValues()}.
136      */
getViewObject()137     public Object getViewObject() {
138         return mViewObject;
139     }
140 
141     /**
142      * Returns the actual  android.view.ViewGroup$LayoutParams (or child class) object.
143      * This can be used to query the object properties that are not in the XML and not in
144      * the map returned by {@link #getDefaultPropertyValues()}.
145      */
getLayoutParamsObject()146     public Object getLayoutParamsObject() {
147         return mLayoutParamsObject;
148     }
149 
150     /**
151      * Returns the baseline value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
152      */
getBaseLine()153     public int getBaseLine() {
154         return mBaseLine;
155     }
156 
157     /**
158      * Returns the left margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
159      */
getLeftMargin()160     public int getLeftMargin() {
161         return mLeftMargin;
162     }
163 
164     /**
165      * Returns the top margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
166      */
getTopMargin()167     public int getTopMargin() {
168         return mTopMargin;
169     }
170 
171     /**
172      * Returns the right margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
173      */
getRightMargin()174     public int getRightMargin() {
175         return mRightMargin;
176     }
177 
178     /**
179      * Returns the bottom margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
180      */
getBottomMargin()181     public int getBottomMargin() {
182         return mBottomMargin;
183     }
184 }
185