diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/values/descriptors/ValuesDescriptors.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/values/descriptors/ValuesDescriptors.java | 337 |
1 files changed, 337 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/values/descriptors/ValuesDescriptors.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/values/descriptors/ValuesDescriptors.java new file mode 100644 index 000000000..724e01932 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/values/descriptors/ValuesDescriptors.java @@ -0,0 +1,337 @@ +/* + * Copyright (C) 2007 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.eclipse.adt.internal.editors.values.descriptors; + +import static com.android.SdkConstants.ATTR_NAME; +import static com.android.SdkConstants.ATTR_TYPE; +import static com.android.SdkConstants.TAG_COLOR; +import static com.android.SdkConstants.TAG_DIMEN; +import static com.android.SdkConstants.TAG_DRAWABLE; +import static com.android.SdkConstants.TAG_INTEGER_ARRAY; +import static com.android.SdkConstants.TAG_ITEM; +import static com.android.SdkConstants.TAG_PLURALS; +import static com.android.SdkConstants.TAG_RESOURCES; +import static com.android.SdkConstants.TAG_STRING; +import static com.android.SdkConstants.TAG_STRING_ARRAY; +import static com.android.SdkConstants.TAG_STYLE; + +import com.android.ide.common.api.IAttributeInfo.Format; +import com.android.ide.common.resources.platform.AttributeInfo; +import com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor; +import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; +import com.android.ide.eclipse.adt.internal.editors.descriptors.EnumAttributeDescriptor; +import com.android.ide.eclipse.adt.internal.editors.descriptors.FlagAttributeDescriptor; +import com.android.ide.eclipse.adt.internal.editors.descriptors.IDescriptorProvider; +import com.android.ide.eclipse.adt.internal.editors.descriptors.ListAttributeDescriptor; +import com.android.ide.eclipse.adt.internal.editors.descriptors.TextAttributeDescriptor; +import com.android.ide.eclipse.adt.internal.editors.descriptors.TextValueDescriptor; +import com.android.resources.ResourceType; + +import java.util.EnumSet; + + +/** + * Complete description of the structure for resources XML files (under res/values/) + */ +public final class ValuesDescriptors implements IDescriptorProvider { + private static final ValuesDescriptors sThis = new ValuesDescriptors(); + + /** The {@link ElementDescriptor} for the root Resources element. */ + public final ElementDescriptor mResourcesElement; + + public static ValuesDescriptors getInstance() { + return sThis; + } + + /* + * @see com.android.ide.eclipse.editors.descriptors.IDescriptorProvider#getRootElementDescriptors() + */ + @Override + public ElementDescriptor[] getRootElementDescriptors() { + return new ElementDescriptor[] { mResourcesElement }; + } + + @Override + public ElementDescriptor getDescriptor() { + return mResourcesElement; + } + + public ElementDescriptor getElementDescriptor() { + return mResourcesElement; + } + + private ValuesDescriptors() { + + // Common attributes used in many placed + + // Elements + + AttributeInfo nameAttrInfo = new AttributeInfo(ATTR_NAME, Format.STRING_SET); + + ElementDescriptor color_element = new ElementDescriptor( + TAG_COLOR, + "Color", + "A @color@ value specifies an RGB value with an alpha channel, which can be used in various places such as specifying a solid color for a Drawable or the color to use for text. It always begins with a # character and then is followed by the alpha-red-green-blue information in one of the following formats: #RGB, #ARGB, #RRGGBB or #AARRGGBB.", + "http://code.google.com/android/reference/available-resources.html#colorvals", //$NON-NLS-1$ + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo), + new ColorValueDescriptor( + "Value*", + "A mandatory color value.") + .setTooltip("The mandatory name used in referring to this color.") + }, + null, // no child nodes + false /* not mandatory */); + + ElementDescriptor string_element = new ElementDescriptor( + TAG_STRING, + "String", + "@Strings@, with optional simple formatting, can be stored and retrieved as resources. You can add formatting to your string by using three standard HTML tags: b, i, and u. If you use an apostrophe or a quote in your string, you must either escape it or enclose the whole string in the other kind of enclosing quotes.", + "http://code.google.com/android/reference/available-resources.html#stringresources", //$NON-NLS-1$ + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this string."), + new TextValueDescriptor( + "Value*", + "A mandatory string value.") + }, + null, // no child nodes + false /* not mandatory */); + + ElementDescriptor item_element = new ItemElementDescriptor( + TAG_ITEM, + "Item", + null, // TODO find javadoc + null, // TODO find link to javadoc + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this resource."), + new ListAttributeDescriptor(ATTR_TYPE, + null /* nsUri */, + new AttributeInfo(ATTR_TYPE, + EnumSet.of(Format.STRING, Format.ENUM) + ).setEnumValues(ResourceType.getNames()) + ).setTooltip("The mandatory type of this resource."), + new FlagAttributeDescriptor("format", //$NON-NLS-1$ + null /* nsUri */, + new AttributeInfo("format", + EnumSet.of(Format.STRING, Format.FLAG) + ).setFlagValues( + new String[] { + "boolean", //$NON-NLS-1$ + TAG_COLOR, + "dimension", //$NON-NLS-1$ + "float", //$NON-NLS-1$ + "fraction", //$NON-NLS-1$ + "integer", //$NON-NLS-1$ + "reference", //$NON-NLS-1$ + "string" //$NON-NLS-1$ + } ) + ).setTooltip("The optional format of this resource."), + new TextValueDescriptor( + "Value", + "A standard string, hex color value, or reference to any other resource type.") + }, + null, // no child nodes + false /* not mandatory */); + + ElementDescriptor drawable_element = new ElementDescriptor( + TAG_DRAWABLE, + "Drawable", + "A @drawable@ defines a rectangle of color. Android accepts color values written in various web-style formats -- a hexadecimal constant in any of the following forms: #RGB, #ARGB, #RRGGBB, #AARRGGBB. Zero in the alpha channel means transparent. The default value is opaque.", + "http://code.google.com/android/reference/available-resources.html#colordrawableresources", //$NON-NLS-1$ + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this drawable."), + new TextValueDescriptor( + "Value*", + "A mandatory color value in the form #RGB, #ARGB, #RRGGBB or #AARRGGBB.") + }, + null, // no child nodes + false /* not mandatory */); + + ElementDescriptor dimen_element = new ElementDescriptor( + TAG_DIMEN, + "Dimension", + "You can create common dimensions to use for various screen elements by defining @dimension@ values in XML. A dimension resource is a number followed by a unit of measurement. Supported units are px (pixels), in (inches), mm (millimeters), pt (points at 72 DPI), dp (density-independent pixels) and sp (scale-independent pixels)", + "http://code.google.com/android/reference/available-resources.html#dimension", //$NON-NLS-1$ + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this dimension."), + new TextValueDescriptor( + "Value*", + "A mandatory dimension value is a number followed by a unit of measurement. For example: 10px, 2in, 5sp.") + }, + null, // no child nodes + false /* not mandatory */); + + ElementDescriptor style_element = new ElementDescriptor( + TAG_STYLE, + "Style/Theme", + "Both @styles and themes@ are defined in a style block containing one or more string or numerical values (typically color values), or references to other resources (drawables and so on).", + "http://code.google.com/android/reference/available-resources.html#stylesandthemes", //$NON-NLS-1$ + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this theme."), + new TextAttributeDescriptor("parent", //$NON-NLS-1$ + null /* nsUri */, + new AttributeInfo("parent", //$NON-NLS-1$ + Format.STRING_SET)) + .setTooltip("An optional parent theme. All values from the specified theme will be inherited into this theme. Any values with identical names that you specify will override inherited values."), + }, + new ElementDescriptor[] { + new ElementDescriptor( + TAG_ITEM, + "Item", + "A value to use in this @theme@. It can be a standard string, a hex color value, or a reference to any other resource type.", + "http://code.google.com/android/reference/available-resources.html#stylesandthemes", //$NON-NLS-1$ + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this item."), + new TextValueDescriptor( + "Value*", + "A mandatory standard string, hex color value, or reference to any other resource type.") + }, + null, // no child nodes + false /* not mandatory */) + }, + false /* not mandatory */); + + ElementDescriptor string_array_element = new ElementDescriptor( + TAG_STRING_ARRAY, + "String Array", + "An array of strings. Strings are added as underlying item elements to the array.", + null, // tooltips + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this string array."), + }, + new ElementDescriptor[] { + new ElementDescriptor( + TAG_ITEM, + "Item", + "A string value to use in this string array.", + null, // tooltip + new AttributeDescriptor[] { + new TextValueDescriptor( + "Value*", + "A mandatory string.") + }, + null, // no child nodes + false /* not mandatory */) + }, + false /* not mandatory */); + + ElementDescriptor plurals_element = new ElementDescriptor( + TAG_PLURALS, + "Quantity Strings (Plurals)", + "A quantity string", + null, // tooltips + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("A name for the pair of strings. This name will be used as the resource ID."), + }, + new ElementDescriptor[] { + new ElementDescriptor( + TAG_ITEM, + "Item", + "A plural or singular string", + null, // tooltip + new AttributeDescriptor[] { + new EnumAttributeDescriptor( + "quantity", "Quantity", null, + "A keyword value indicating when this string should be used", + new AttributeInfo("quantity", Format.ENUM_SET) + .setEnumValues(new String[] { + "zero", //$NON-NLS-1$ + "one", //$NON-NLS-1$ + "two", //$NON-NLS-1$ + "few", //$NON-NLS-1$ + "many", //$NON-NLS-1$ + "other" //$NON-NLS-1$ + })) + }, + null, // no child nodes + false /* not mandatory */) + }, + false /* not mandatory */); + + ElementDescriptor integer_array_element = new ElementDescriptor( + TAG_INTEGER_ARRAY, + "Integer Array", + "An array of integers. Integers are added as underlying item elements to the array.", + null, // tooltips + new AttributeDescriptor[] { + new TextAttributeDescriptor(ATTR_NAME, + null /* nsUri */, + nameAttrInfo) + .setTooltip("The mandatory name used in referring to this integer array.") + }, + new ElementDescriptor[] { + new ElementDescriptor( + TAG_ITEM, + "Item", + "An integer value to use in this integer array.", + null, // tooltip + new AttributeDescriptor[] { + new TextValueDescriptor( + "Value*", + "A mandatory integer.") + }, + null, // no child nodes + false /* not mandatory */) + }, + false /* not mandatory */); + + mResourcesElement = new ElementDescriptor( + TAG_RESOURCES, + "Resources", + null, + "http://code.google.com/android/reference/available-resources.html", //$NON-NLS-1$ + null, // no attributes + new ElementDescriptor[] { + string_element, + color_element, + dimen_element, + drawable_element, + style_element, + item_element, + string_array_element, + integer_array_element, + plurals_element, + }, + true /* mandatory */); + } +} |