aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/resources/platform/AttributeInfo.java
blob: ec3d8a4851255099d76f71515c32b66907cf2eeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
 *
 * 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.resources.platform;

import com.android.annotations.NonNull;
import com.android.ide.common.api.IAttributeInfo;

import java.util.EnumSet;


/**
 * Information about an attribute as gathered from the attrs.xml file where
 * the attribute was declared. This must include a format (string, reference, float, etc.),
 * possible flag or enum values, whether it's deprecated and its javadoc.
 */
public class AttributeInfo implements IAttributeInfo {
    /** XML Name of the attribute */
    private String mName;

    /** Formats of the attribute. Cannot be null. Should have at least one format. */
    private EnumSet<Format> mFormats;
    /** Values for enum. null for other types. */
    private String[] mEnumValues;
    /** Values for flag. null for other types. */
    private String[] mFlagValues;
    /** Short javadoc (i.e. the first sentence). */
    private String mJavaDoc;
    /** Documentation for deprecated attributes. Null if not deprecated. */
    private String mDeprecatedDoc;
    /** The source class defining this attribute */
    private String mDefinedBy;

    /**
     * @param name The XML Name of the attribute
     * @param formats The formats of the attribute. Cannot be null.
     *                Should have at least one format.
     */
    public AttributeInfo(@NonNull String name, @NonNull EnumSet<Format> formats) {
        mName = name;
        mFormats = formats;
    }

    /**
     * @param name The XML Name of the attribute
     * @param formats The formats of the attribute. Cannot be null.
     *                Should have at least one format.
     * @param javadoc Short javadoc (i.e. the first sentence).
     */
    public AttributeInfo(@NonNull String name, @NonNull EnumSet<Format> formats, String javadoc) {
        mName = name;
        mFormats = formats;
        mJavaDoc = javadoc;
    }

    public AttributeInfo(AttributeInfo info) {
        mName = info.mName;
        mFormats = info.mFormats;
        mEnumValues = info.mEnumValues;
        mFlagValues = info.mFlagValues;
        mJavaDoc = info.mJavaDoc;
        mDeprecatedDoc = info.mDeprecatedDoc;
    }

    /** Returns the XML Name of the attribute */
    @Override
    public String getName() {
        return mName;
    }
    /** Returns the formats of the attribute. Cannot be null.
     *  Should have at least one format. */
    @Override
    public EnumSet<Format> getFormats() {
        return mFormats;
    }
    /** Returns the values for enums. null for other types. */
    @Override
    public String[] getEnumValues() {
        return mEnumValues;
    }
    /** Returns the values for flags. null for other types. */
    @Override
    public String[] getFlagValues() {
        return mFlagValues;
    }
    /** Returns a short javadoc, .i.e. the first sentence. */
    @Override
    public String getJavaDoc() {
        return mJavaDoc;
    }
    /** Returns the documentation for deprecated attributes. Null if not deprecated. */
    @Override
    public String getDeprecatedDoc() {
        return mDeprecatedDoc;
    }

    /** Sets the values for enums. null for other types. */
    public AttributeInfo setEnumValues(String[] values) {
        mEnumValues = values;
        return this;
    }

    /** Sets the values for flags. null for other types. */
    public AttributeInfo setFlagValues(String[] values) {
        mFlagValues = values;
        return this;
    }

    /** Sets a short javadoc, .i.e. the first sentence. */
    public void setJavaDoc(String javaDoc) {
        mJavaDoc = javaDoc;
    }

    /** Sets the documentation for deprecated attributes. Null if not deprecated. */
    public void setDeprecatedDoc(String deprecatedDoc) {
        mDeprecatedDoc = deprecatedDoc;
    }

    /**
     * Sets the name of the class (fully qualified class name) which defined
     * this attribute
     *
     * @param definedBy the name of the class (fully qualified class name) which
     *            defined this attribute
     */
    public void setDefinedBy(String definedBy) {
        mDefinedBy = definedBy;
    }

    /**
     * Returns the name of the class (fully qualified class name) which defined
     * this attribute
     *
     * @return the name of the class (fully qualified class name) which defined
     *         this attribute
     */
    @Override
    public String getDefinedBy() {
        return mDefinedBy;
    }
}