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