aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/values/descriptors/ValuesDescriptors.java
diff options
context:
space:
mode:
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.java337
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 */);
+ }
+}