| /* |
| * Copyright (C) 2011 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.color; |
| |
| import static com.android.SdkConstants.ANDROID_NS_NAME; |
| import static com.android.SdkConstants.ANDROID_URI; |
| |
| import com.android.ide.common.api.IAttributeInfo.Format; |
| import com.android.ide.common.resources.platform.AttributeInfo; |
| import com.android.ide.common.resources.platform.DeclareStyleableInfo; |
| import com.android.ide.eclipse.adt.internal.editors.animator.AnimatorDescriptors; |
| 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.IDescriptorProvider; |
| import com.android.ide.eclipse.adt.internal.editors.descriptors.ReferenceAttributeDescriptor; |
| import com.android.ide.eclipse.adt.internal.editors.descriptors.XmlnsAttributeDescriptor; |
| import com.android.resources.ResourceType; |
| |
| import java.util.Map; |
| |
| /** Descriptors for /res/color XML files */ |
| public class ColorDescriptors implements IDescriptorProvider { |
| private static final String SDK_URL = |
| "http://d.android.com/guide/topics/resources/color-list-resource.html"; //$NON-NLS-1$ |
| |
| public static final String SELECTOR_TAG = "selector"; //$NON-NLS-1$ |
| public static final String ATTR_COLOR = "color"; //$NON-NLS-1$ |
| |
| /** The root element descriptor */ |
| private ElementDescriptor mDescriptor = new ElementDescriptor( |
| SELECTOR_TAG, "Selector", |
| "Required. This must be the root element. Contains one or more <item> elements.", |
| SDK_URL, |
| new AttributeDescriptor[] { |
| new XmlnsAttributeDescriptor(ANDROID_NS_NAME, ANDROID_URI) }, |
| null /*children: added later*/, true /*mandatory*/); |
| |
| /** @return the root descriptor. */ |
| @Override |
| public ElementDescriptor getDescriptor() { |
| if (mDescriptor == null) { |
| mDescriptor = new ElementDescriptor("", getRootElementDescriptors()); //$NON-NLS-1$ |
| } |
| |
| return mDescriptor; |
| } |
| |
| @Override |
| public ElementDescriptor[] getRootElementDescriptors() { |
| return new ElementDescriptor[] { mDescriptor }; |
| } |
| |
| public synchronized void updateDescriptors(Map<String, DeclareStyleableInfo> styleMap) { |
| if (styleMap == null) { |
| return; |
| } |
| |
| // Selector children |
| ElementDescriptor selectorItem = AnimatorDescriptors.addElement(null, styleMap, |
| "item", "Item", "DrawableStates", null, //$NON-NLS-1$ //$NON-NLS-3$ |
| "Defines a drawable to use during certain states, as described by " |
| + "its attributes. Must be a child of a <selector> element.", |
| SDK_URL, |
| new ReferenceAttributeDescriptor( |
| ResourceType.COLOR, ATTR_COLOR, |
| ANDROID_URI, |
| new AttributeInfo(ATTR_COLOR, Format.COLOR_SET)).setTooltip( |
| "Hexadeximal color. Required. The color is specified with an RGB value and " |
| + "optional alpha channel.\n" |
| + "The value always begins with a pound (#) character and then " |
| + "followed by the Alpha-Red-Green-Blue information in one of " |
| + "the following formats:\n" |
| + "* RGB\n" |
| + "* ARGB\n" |
| + "* RRGGBB\n" |
| + "* AARRGGBB"), |
| null, /* This is wrong -- we can now embed any above drawable |
| (but without xmlns as extra) */ |
| false /*mandatory*/); |
| |
| if (selectorItem != null) { |
| mDescriptor.setChildren(new ElementDescriptor[] { selectorItem }); |
| } |
| } |
| } |