aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/AndroidTargetData.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/AndroidTargetData.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/AndroidTargetData.java417
1 files changed, 0 insertions, 417 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/AndroidTargetData.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/AndroidTargetData.java
deleted file mode 100644
index 85ae9fdc0..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/AndroidTargetData.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * 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.sdk;
-
-import com.android.annotations.NonNull;
-import com.android.annotations.Nullable;
-import com.android.ide.common.rendering.LayoutLibrary;
-import com.android.ide.common.rendering.api.LayoutLog;
-import com.android.ide.common.resources.ResourceRepository;
-import com.android.ide.common.resources.platform.AttributeInfo;
-import com.android.ide.common.sdk.LoadStatus;
-import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.internal.editors.animator.AnimDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.animator.AnimatorDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.color.ColorDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.descriptors.IDescriptorProvider;
-import com.android.ide.eclipse.adt.internal.editors.drawable.DrawableDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.layout.descriptors.LayoutDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.manifest.descriptors.AndroidManifestDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.menu.descriptors.MenuDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.otherxml.descriptors.OtherXmlDescriptors;
-import com.android.ide.eclipse.adt.internal.editors.values.descriptors.ValuesDescriptors;
-import com.android.ide.eclipse.adt.internal.resources.manager.ProjectResources;
-import com.android.sdklib.IAndroidTarget;
-import com.android.sdklib.IAndroidTarget.IOptionalLibrary;
-
-import org.eclipse.core.runtime.IStatus;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Map;
-
-/**
- * This class contains the data of an Android Target as loaded from the SDK.
- */
-public class AndroidTargetData {
-
- public final static int DESCRIPTOR_MANIFEST = 1;
- public final static int DESCRIPTOR_LAYOUT = 2;
- public final static int DESCRIPTOR_MENU = 3;
- public final static int DESCRIPTOR_OTHER_XML = 4;
- public final static int DESCRIPTOR_RESOURCES = 5;
- public final static int DESCRIPTOR_SEARCHABLE = 6;
- public final static int DESCRIPTOR_PREFERENCES = 7;
- public final static int DESCRIPTOR_APPWIDGET_PROVIDER = 8;
- public final static int DESCRIPTOR_DRAWABLE = 9;
- public final static int DESCRIPTOR_ANIMATOR = 10;
- public final static int DESCRIPTOR_ANIM = 11;
- public final static int DESCRIPTOR_COLOR = 12;
-
- private final IAndroidTarget mTarget;
-
- /**
- * mAttributeValues is a map { key => list [ values ] }.
- * The key for the map is "(element-xml-name,attribute-namespace:attribute-xml-local-name)".
- * The attribute namespace prefix must be:
- * - "android" for SdkConstants.NS_RESOURCES
- * - "xmlns" for the XMLNS URI.
- *
- * This is used for attributes that do not have a unique name, but still need to be populated
- * with values in the UI. Uniquely named attributes have their values in {@link #mEnumValueMap}.
- */
- private Hashtable<String, String[]> mAttributeValues = new Hashtable<String, String[]>();
-
- private AndroidManifestDescriptors mManifestDescriptors;
- private DrawableDescriptors mDrawableDescriptors;
- private AnimatorDescriptors mAnimatorDescriptors;
- private AnimDescriptors mAnimDescriptors;
- private ColorDescriptors mColorDescriptors;
- private LayoutDescriptors mLayoutDescriptors;
- private MenuDescriptors mMenuDescriptors;
- private OtherXmlDescriptors mOtherXmlDescriptors;
-
- private Map<String, Map<String, Integer>> mEnumValueMap;
-
- private ResourceRepository mFrameworkResources;
- private LayoutLibrary mLayoutLibrary;
- private Map<String, AttributeInfo> mAttributeMap;
-
- private boolean mLayoutBridgeInit = false;
-
- AndroidTargetData(IAndroidTarget androidTarget) {
- mTarget = androidTarget;
- }
-
- /**
- * Sets the associated map from string attribute name to
- * {@link AttributeInfo}
- *
- * @param attributeMap the map
- */
- public void setAttributeMap(@NonNull Map<String, AttributeInfo> attributeMap) {
- mAttributeMap = attributeMap;
- }
-
- /**
- * Returns the associated map from string attribute name to
- * {@link AttributeInfo}
- *
- * @return the map
- */
- @Nullable
- public Map<String, AttributeInfo> getAttributeMap() {
- return mAttributeMap;
- }
-
- /**
- * Creates an AndroidTargetData object.
- */
- void setExtraData(
- AndroidManifestDescriptors manifestDescriptors,
- LayoutDescriptors layoutDescriptors,
- MenuDescriptors menuDescriptors,
- OtherXmlDescriptors otherXmlDescriptors,
- DrawableDescriptors drawableDescriptors,
- AnimatorDescriptors animatorDescriptors,
- AnimDescriptors animDescriptors,
- ColorDescriptors colorDescriptors,
- Map<String, Map<String, Integer>> enumValueMap,
- String[] permissionValues,
- String[] activityIntentActionValues,
- String[] broadcastIntentActionValues,
- String[] serviceIntentActionValues,
- String[] intentCategoryValues,
- String[] platformLibraries,
- IOptionalLibrary[] optionalLibraries,
- ResourceRepository frameworkResources,
- LayoutLibrary layoutLibrary) {
-
- mManifestDescriptors = manifestDescriptors;
- mDrawableDescriptors = drawableDescriptors;
- mAnimatorDescriptors = animatorDescriptors;
- mAnimDescriptors = animDescriptors;
- mColorDescriptors = colorDescriptors;
- mLayoutDescriptors = layoutDescriptors;
- mMenuDescriptors = menuDescriptors;
- mOtherXmlDescriptors = otherXmlDescriptors;
- mEnumValueMap = enumValueMap;
- mFrameworkResources = frameworkResources;
- mLayoutLibrary = layoutLibrary;
-
- setPermissions(permissionValues);
- setIntentFilterActionsAndCategories(activityIntentActionValues, broadcastIntentActionValues,
- serviceIntentActionValues, intentCategoryValues);
- setOptionalLibraries(platformLibraries, optionalLibraries);
- }
-
- /**
- * Returns an {@link IDescriptorProvider} from a given Id.
- * The Id can be one of {@link #DESCRIPTOR_MANIFEST}, {@link #DESCRIPTOR_LAYOUT},
- * {@link #DESCRIPTOR_MENU}, or {@link #DESCRIPTOR_OTHER_XML}.
- * All other values will throw an {@link IllegalArgumentException}.
- */
- public IDescriptorProvider getDescriptorProvider(int descriptorId) {
- switch (descriptorId) {
- case DESCRIPTOR_MANIFEST:
- return mManifestDescriptors;
- case DESCRIPTOR_LAYOUT:
- return mLayoutDescriptors;
- case DESCRIPTOR_MENU:
- return mMenuDescriptors;
- case DESCRIPTOR_OTHER_XML:
- return mOtherXmlDescriptors;
- case DESCRIPTOR_RESOURCES:
- // FIXME: since it's hard-coded the Resources Descriptors are not platform dependent.
- return ValuesDescriptors.getInstance();
- case DESCRIPTOR_PREFERENCES:
- return mOtherXmlDescriptors.getPreferencesProvider();
- case DESCRIPTOR_APPWIDGET_PROVIDER:
- return mOtherXmlDescriptors.getAppWidgetProvider();
- case DESCRIPTOR_SEARCHABLE:
- return mOtherXmlDescriptors.getSearchableProvider();
- case DESCRIPTOR_DRAWABLE:
- return mDrawableDescriptors;
- case DESCRIPTOR_ANIMATOR:
- return mAnimatorDescriptors;
- case DESCRIPTOR_ANIM:
- return mAnimDescriptors;
- case DESCRIPTOR_COLOR:
- return mColorDescriptors;
- default :
- throw new IllegalArgumentException();
- }
- }
-
- /**
- * Returns the manifest descriptors.
- */
- public AndroidManifestDescriptors getManifestDescriptors() {
- return mManifestDescriptors;
- }
-
- /**
- * Returns the drawable descriptors
- */
- public DrawableDescriptors getDrawableDescriptors() {
- return mDrawableDescriptors;
- }
-
- /**
- * Returns the animation descriptors
- */
- public AnimDescriptors getAnimDescriptors() {
- return mAnimDescriptors;
- }
-
- /**
- * Returns the color descriptors
- */
- public ColorDescriptors getColorDescriptors() {
- return mColorDescriptors;
- }
-
- /**
- * Returns the animator descriptors
- */
- public AnimatorDescriptors getAnimatorDescriptors() {
- return mAnimatorDescriptors;
- }
-
- /**
- * Returns the layout Descriptors.
- */
- public LayoutDescriptors getLayoutDescriptors() {
- return mLayoutDescriptors;
- }
-
- /**
- * Returns the menu descriptors.
- */
- public MenuDescriptors getMenuDescriptors() {
- return mMenuDescriptors;
- }
-
- /**
- * Returns the XML descriptors
- */
- public OtherXmlDescriptors getXmlDescriptors() {
- return mOtherXmlDescriptors;
- }
-
- /**
- * Returns this list of possible values for an XML attribute.
- * <p/>This should only be called for attributes for which possible values depend on the
- * parent element node.
- * <p/>For attributes that have the same values no matter the parent node, use
- * {@link #getEnumValueMap()}.
- * @param elementName the name of the element containing the attribute.
- * @param attributeName the name of the attribute
- * @return an array of String with the possible values, or <code>null</code> if no values were
- * found.
- */
- public String[] getAttributeValues(String elementName, String attributeName) {
- String key = String.format("(%1$s,%2$s)", elementName, attributeName); //$NON-NLS-1$
- return mAttributeValues.get(key);
- }
-
- /**
- * Returns this list of possible values for an XML attribute.
- * <p/>This should only be called for attributes for which possible values depend on the
- * parent and great-grand-parent element node.
- * <p/>The typical example of this is for the 'name' attribute under
- * activity/intent-filter/action
- * <p/>For attributes that have the same values no matter the parent node, use
- * {@link #getEnumValueMap()}.
- * @param elementName the name of the element containing the attribute.
- * @param attributeName the name of the attribute
- * @param greatGrandParentElementName the great-grand-parent node.
- * @return an array of String with the possible values, or <code>null</code> if no values were
- * found.
- */
- public String[] getAttributeValues(String elementName, String attributeName,
- String greatGrandParentElementName) {
- if (greatGrandParentElementName != null) {
- String key = String.format("(%1$s,%2$s,%3$s)", //$NON-NLS-1$
- greatGrandParentElementName, elementName, attributeName);
- String[] values = mAttributeValues.get(key);
- if (values != null) {
- return values;
- }
- }
-
- return getAttributeValues(elementName, attributeName);
- }
-
- /**
- * Returns the enum values map.
- * <p/>The map defines the possible values for XML attributes. The key is the attribute name
- * and the value is a map of (string, integer) in which the key (string) is the name of
- * the value, and the Integer is the numerical value in the compiled binary XML files.
- */
- public Map<String, Map<String, Integer>> getEnumValueMap() {
- return mEnumValueMap;
- }
-
- /**
- * Returns the {@link ProjectResources} containing the Framework Resources.
- */
- public ResourceRepository getFrameworkResources() {
- return mFrameworkResources;
- }
-
- /**
- * Returns a {@link LayoutLibrary} object possibly containing a {@link LayoutBridge} object.
- * <p/>If {@link LayoutLibrary#getBridge()} is <code>null</code>,
- * {@link LayoutBridge#getStatus()} will contain the reason (either {@link LoadStatus#LOADING}
- * or {@link LoadStatus#FAILED}).
- * <p/>Valid {@link LayoutBridge} objects are always initialized before being returned.
- */
- public synchronized LayoutLibrary getLayoutLibrary() {
- if (mLayoutBridgeInit == false && mLayoutLibrary.getStatus() == LoadStatus.LOADED) {
- boolean ok = mLayoutLibrary.init(
- mTarget.getProperties(),
- new File(mTarget.getPath(IAndroidTarget.FONTS)),
- getEnumValueMap(),
- new LayoutLog() {
-
- @Override
- public void error(String tag, String message, Throwable throwable,
- Object data) {
- AdtPlugin.log(throwable, message);
- }
-
- @Override
- public void error(String tag, String message, Object data) {
- AdtPlugin.log(IStatus.ERROR, message);
- }
-
- @Override
- public void warning(String tag, String message, Object data) {
- AdtPlugin.log(IStatus.WARNING, message);
- }
- });
- if (!ok) {
- AdtPlugin.log(IStatus.ERROR,
- "LayoutLibrary initialization failed");
- }
- mLayoutBridgeInit = true;
- }
-
- return mLayoutLibrary;
- }
-
- /**
- * Sets the permission values
- * @param permissionValues the list of permissions
- */
- private void setPermissions(String[] permissionValues) {
- setValues("(uses-permission,android:name)", permissionValues); //$NON-NLS-1$
- setValues("(application,android:permission)", permissionValues); //$NON-NLS-1$
- setValues("(activity,android:permission)", permissionValues); //$NON-NLS-1$
- setValues("(receiver,android:permission)", permissionValues); //$NON-NLS-1$
- setValues("(service,android:permission)", permissionValues); //$NON-NLS-1$
- setValues("(provider,android:permission)", permissionValues); //$NON-NLS-1$
- }
-
- private void setIntentFilterActionsAndCategories(String[] activityIntentActions,
- String[] broadcastIntentActions, String[] serviceIntentActions,
- String[] intentCategoryValues) {
- setValues("(activity,action,android:name)", activityIntentActions); //$NON-NLS-1$
- setValues("(receiver,action,android:name)", broadcastIntentActions); //$NON-NLS-1$
- setValues("(service,action,android:name)", serviceIntentActions); //$NON-NLS-1$
- setValues("(category,android:name)", intentCategoryValues); //$NON-NLS-1$
- }
-
- private void setOptionalLibraries(String[] platformLibraries,
- IOptionalLibrary[] optionalLibraries) {
-
- ArrayList<String> libs = new ArrayList<String>();
-
- if (platformLibraries != null) {
- for (String name : platformLibraries) {
- libs.add(name);
- }
- }
-
- if (optionalLibraries != null) {
- for (int i = 0; i < optionalLibraries.length; i++) {
- libs.add(optionalLibraries[i].getName());
- }
- }
- setValues("(uses-library,android:name)", libs.toArray(new String[libs.size()]));
- }
-
- /**
- * Sets a (name, values) pair in the hash map.
- * <p/>
- * If the name is already present in the map, it is first removed.
- * @param name the name associated with the values.
- * @param values The values to add.
- */
- private void setValues(String name, String[] values) {
- mAttributeValues.remove(name);
- mAttributeValues.put(name, values);
- }
-
- public void dispose() {
- if (mLayoutLibrary != null) {
- mLayoutLibrary.dispose();
- }
- }
-}