| /* |
| * 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.animator; |
| |
| import com.android.SdkConstants; |
| import com.android.ide.common.resources.platform.DeclareStyleableInfo; |
| 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.XmlnsAttributeDescriptor; |
| |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| |
| /** Descriptors for the res/anim resources */ |
| public class AnimDescriptors implements IDescriptorProvider { |
| /** The root element descriptor */ |
| private ElementDescriptor mDescriptor; |
| /** The root element descriptors */ |
| private ElementDescriptor[] mRootDescriptors; |
| private Map<String, ElementDescriptor> nameToDescriptor; |
| |
| /** @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 mRootDescriptors; |
| } |
| |
| public ElementDescriptor getElementDescriptor(String mRootTag) { |
| if (nameToDescriptor == null) { |
| nameToDescriptor = new HashMap<String, ElementDescriptor>(); |
| for (ElementDescriptor descriptor : getRootElementDescriptors()) { |
| nameToDescriptor.put(descriptor.getXmlName(), descriptor); |
| } |
| } |
| |
| ElementDescriptor descriptor = nameToDescriptor.get(mRootTag); |
| if (descriptor == null) { |
| descriptor = getDescriptor(); |
| } |
| return descriptor; |
| } |
| |
| public synchronized void updateDescriptors(Map<String, DeclareStyleableInfo> styleMap) { |
| if (styleMap == null) { |
| return; |
| } |
| |
| XmlnsAttributeDescriptor xmlns = new XmlnsAttributeDescriptor(SdkConstants.ANDROID_NS_NAME, |
| SdkConstants.ANDROID_URI); |
| |
| List<ElementDescriptor> descriptors = new ArrayList<ElementDescriptor>(); |
| |
| String sdkUrl = |
| "http://developer.android.com/guide/topics/graphics/view-animation.html"; //$NON-NLS-1$ |
| ElementDescriptor set = AnimatorDescriptors.addElement(descriptors, styleMap, |
| "set", "Set", "AnimationSet", "Animation", //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-4$ |
| "A container that holds other animation elements (<alpha>, <scale>, " |
| + "<translate>, <rotate>) or other <set> elements. ", |
| sdkUrl, |
| xmlns, null, true /*mandatory*/); |
| |
| AnimatorDescriptors.addElement(descriptors, styleMap, |
| "alpha", "Alpha", "AlphaAnimation", "Animation", //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-4$ |
| "A fade-in or fade-out animation.", |
| sdkUrl, |
| xmlns, null, true /*mandatory*/); |
| |
| AnimatorDescriptors.addElement(descriptors, styleMap, |
| "scale", "Scale", "ScaleAnimation", "Animation", //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-4$ |
| "A resizing animation. You can specify the center point of the image from " |
| + "which it grows outward (or inward) by specifying pivotX and pivotY. " |
| + "For example, if these values are 0, 0 (top-left corner), all growth " |
| + "will be down and to the right.", |
| sdkUrl, |
| xmlns, null, true /*mandatory*/); |
| |
| AnimatorDescriptors.addElement(descriptors, styleMap, |
| "rotate", "Rotate", "RotateAnimation", "Animation", //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-4$ |
| "A rotation animation.", |
| sdkUrl, |
| xmlns, null, true /*mandatory*/); |
| |
| AnimatorDescriptors.addElement(descriptors, styleMap, |
| "translate", "Translate", "TranslateAnimation", "Animation", //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-4$ |
| "A vertical and/or horizontal motion. Supports the following attributes in " |
| + "any of the following three formats: values from -100 to 100 ending " |
| + "with \"%\", indicating a percentage relative to itself; values from " |
| + "-100 to 100 ending in \"%p\", indicating a percentage relative to its " |
| + "parent; a float value with no suffix, indicating an absolute value.", |
| sdkUrl, |
| xmlns, null, true /*mandatory*/); |
| |
| mRootDescriptors = descriptors.toArray(new ElementDescriptor[descriptors.size()]); |
| |
| // Allow <set> to nest the others (and other sets) |
| if (set != null) { |
| set.setChildren(mRootDescriptors); |
| } |
| } |
| } |