blob: 60676417d7769d9c13b961a7178df72db281017a [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.ide.common.rendering.api;
import java.util.Collections;
import java.util.List;
/**
* Layout information for a specific view object
*/
public class ViewInfo {
private final Object mCookie;
private final String mName;
private final int mLeft;
private final int mRight;
private final int mTop;
private final int mBottom;
private List<ViewInfo> mChildren = Collections.emptyList();
private final Object mViewObject;
private final Object mLayoutParamsObject;
// optional info
private int mBaseLine = Integer.MIN_VALUE;
private int mLeftMargin = Integer.MIN_VALUE;
private int mTopMargin = Integer.MIN_VALUE;
private int mRightMargin = Integer.MIN_VALUE;
private int mBottomMargin = Integer.MIN_VALUE;
public ViewInfo(String name, Object cookie, int left, int top, int right, int bottom) {
this(name, cookie, left, top, right, bottom, null /*viewObject*/,
null /*layoutParamsObject*/);
}
public ViewInfo(String name, Object cookie, int left, int top, int right, int bottom,
Object viewObject, Object layoutParamsObject) {
mName = name;
mCookie = cookie;
mLeft = left;
mRight = right;
mTop = top;
mBottom = bottom;
mViewObject = viewObject;
mLayoutParamsObject = layoutParamsObject;
}
/**
* Sets the list of children {@link ViewInfo}.
*/
public void setChildren(List<ViewInfo> children) {
if (children != null) {
mChildren = Collections.unmodifiableList(children);
} else {
mChildren = Collections.emptyList();
}
}
public void setExtendedInfo(int baseLine, int leftMargin, int topMargin,
int rightMargin, int bottomMargin) {
mBaseLine = baseLine;
mLeftMargin = leftMargin;
mTopMargin = topMargin;
mRightMargin = rightMargin;
mBottomMargin = bottomMargin;
}
/**
* Returns the list of children views. This is never null, but can be empty.
*/
public List<ViewInfo> getChildren() {
return mChildren;
}
/**
* Returns the cookie associated with the XML node. Can be null.
*
* @see ILayoutPullParser#getViewCookie()
*/
public Object getCookie() {
return mCookie;
}
/**
* Returns the class name of the view object. Can be null.
*/
public String getClassName() {
return mName;
}
/**
* Returns the left of the view bounds, relative to the view parent bounds.
*/
public int getLeft() {
return mLeft;
}
/**
* Returns the top of the view bounds, relative to the view parent bounds.
*/
public int getTop() {
return mTop;
}
/**
* Returns the right of the view bounds, relative to the view parent bounds.
*/
public int getRight() {
return mRight;
}
/**
* Returns the bottom of the view bounds, relative to the view parent bounds.
*/
public int getBottom() {
return mBottom;
}
/**
* Returns the actual android.view.View (or child class) object. This can be used
* to query the object properties that are not in the XML and not available through
* {@link RenderSession#getProperty(Object, String)}.
*/
public Object getViewObject() {
return mViewObject;
}
/**
* Returns the actual android.view.ViewGroup$LayoutParams (or child class) object.
* This can be used to query the object properties that are not in the XML and not available
* through {@link RenderSession#getProperty(Object, String)}.
*/
public Object getLayoutParamsObject() {
return mLayoutParamsObject;
}
/**
* Returns the baseline value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
*/
public int getBaseLine() {
return mBaseLine;
}
/**
* Returns the left margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
*/
public int getLeftMargin() {
return mLeftMargin;
}
/**
* Returns the top margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
*/
public int getTopMargin() {
return mTopMargin;
}
/**
* Returns the right margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
*/
public int getRightMargin() {
return mRightMargin;
}
/**
* Returns the bottom margin value. If the value is unknown, returns {@link Integer#MIN_VALUE}.
*/
public int getBottomMargin() {
return mBottomMargin;
}
/**
* Returns the type of View.
* @see ViewType
*/
public ViewType getViewType() {
return ViewType.USER;
}
}