1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php 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.resources.platform; 18 19 20 /** 21 * Information needed to represent a View or ViewGroup (aka Layout) item 22 * in the layout hierarchy, as extracted from the main android.jar and the 23 * associated attrs.xml. 24 */ 25 public class DeclareStyleableInfo { 26 /** The style name, never null. */ 27 private final String mStyleName; 28 /** Attributes for this view or view group. Can be empty but never null. */ 29 private final AttributeInfo[] mAttributes; 30 /** Short javadoc. Can be null. */ 31 private String mJavaDoc; 32 /** Optional name of the parents styleable. Can be null. */ 33 private String[] mParents; 34 35 /** 36 * Creates a new {@link DeclareStyleableInfo}. 37 * 38 * @param styleName The name of the style. Should not be empty nor null. 39 * @param attributes The initial list of attributes. Can be null. 40 */ DeclareStyleableInfo(String styleName, AttributeInfo[] attributes)41 public DeclareStyleableInfo(String styleName, AttributeInfo[] attributes) { 42 mStyleName = styleName; 43 mAttributes = attributes == null ? new AttributeInfo[0] : attributes; 44 } 45 46 /** 47 * Creates a new {@link DeclareStyleableInfo} that has the same attributes 48 * as an existing one and only differs by name. 49 * 50 * @param styleName The name of the style. Should not be empty nor null. 51 * @param existing The existing {@link DeclareStyleableInfo} to mirror. 52 */ DeclareStyleableInfo(String styleName, DeclareStyleableInfo existing)53 public DeclareStyleableInfo(String styleName, DeclareStyleableInfo existing) { 54 mStyleName = styleName; 55 56 mJavaDoc = existing.getJavaDoc(); 57 58 String[] parents = existing.getParents(); 59 if (parents != null) { 60 mParents = new String[parents.length]; 61 System.arraycopy(parents, 0, mParents, 0, parents.length); 62 } 63 64 AttributeInfo[] attrs = existing.getAttributes(); 65 if (attrs == null || attrs.length == 0) { 66 mAttributes = new AttributeInfo[0]; 67 } else { 68 mAttributes = new AttributeInfo[attrs.length]; 69 System.arraycopy(attrs, 0, mAttributes, 0, attrs.length); 70 } 71 } 72 73 /** Returns style name */ getStyleName()74 public String getStyleName() { 75 return mStyleName; 76 } 77 78 /** Returns the attributes for this view or view group. Maybe empty but not null. */ getAttributes()79 public AttributeInfo[] getAttributes() { 80 return mAttributes; 81 } 82 83 /** Returns a short javadoc */ getJavaDoc()84 public String getJavaDoc() { 85 return mJavaDoc; 86 } 87 88 /** Sets the javadoc. */ setJavaDoc(String javaDoc)89 public void setJavaDoc(String javaDoc) { 90 mJavaDoc = javaDoc; 91 } 92 93 /** Sets the name of the parents styleable. Can be null. */ setParents(String[] parents)94 public void setParents(String[] parents) { 95 mParents = parents; 96 } 97 98 /** Returns the name of the parents styleable. Can be null. */ getParents()99 public String[] getParents() { 100 return mParents; 101 } 102 } 103