Home | History | Annotate | Download | only in api
      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 
     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 
     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      */
     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 
     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      */
     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      */
     93     public Object getCookie() {
     94         return mCookie;
     95     }
     96 
     97     /**
     98      * Returns the class name of the view object. Can be null.
     99      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    181     public int getBottomMargin() {
    182         return mBottomMargin;
    183     }
    184 }
    185