aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/otherxml/descriptors/OtherXmlDescriptors.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/otherxml/descriptors/OtherXmlDescriptors.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/otherxml/descriptors/OtherXmlDescriptors.java373
1 files changed, 0 insertions, 373 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/otherxml/descriptors/OtherXmlDescriptors.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/otherxml/descriptors/OtherXmlDescriptors.java
deleted file mode 100644
index 7f3ed0939..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/otherxml/descriptors/OtherXmlDescriptors.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * Copyright (C) 2008 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.otherxml.descriptors;
-
-import static com.android.SdkConstants.ANDROID_NS_NAME;
-import static com.android.SdkConstants.ANDROID_URI;
-
-import com.android.SdkConstants;
-import com.android.ide.common.resources.platform.AttributeInfo;
-import com.android.ide.common.resources.platform.DeclareStyleableInfo;
-import com.android.ide.common.resources.platform.ViewClassInfo;
-import com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor;
-import com.android.ide.eclipse.adt.internal.editors.descriptors.DescriptorsUtils;
-import com.android.ide.eclipse.adt.internal.editors.descriptors.DocumentDescriptor;
-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.SeparatorAttributeDescriptor;
-import com.android.ide.eclipse.adt.internal.editors.descriptors.XmlnsAttributeDescriptor;
-import com.android.ide.eclipse.adt.internal.editors.layout.descriptors.ViewElementDescriptor;
-
-import java.util.ArrayList;
-import java.util.Map;
-
-
-/**
- * Description of the /res/xml structure.
- * Currently supports the <searchable> and <preferences> root nodes.
- */
-public final class OtherXmlDescriptors implements IDescriptorProvider {
-
- // Public attributes names, attributes descriptors and elements descriptors referenced
- // elsewhere.
- public static final String PREF_KEY_ATTR = "key"; //$NON-NLS-1$
-
- /** The root document descriptor for both searchable and preferences. */
- private DocumentDescriptor mDescriptor = new DocumentDescriptor("xml_doc", null /* children */); //$NON-NLS-1$
-
- /** The root document descriptor for searchable. */
- private DocumentDescriptor mSearchDescriptor = new DocumentDescriptor("xml_doc", null /* children */); //$NON-NLS-1$
-
- /** The root document descriptor for preferences. */
- private DocumentDescriptor mPrefDescriptor = new DocumentDescriptor("xml_doc", null /* children */); //$NON-NLS-1$
-
- /** The root document descriptor for widget provider. */
- private DocumentDescriptor mAppWidgetDescriptor = new DocumentDescriptor("xml_doc", null /* children */); //$NON-NLS-1$
-
- /** @return the root descriptor for both searchable and preferences. */
- @Override
- public DocumentDescriptor getDescriptor() {
- return mDescriptor;
- }
-
- @Override
- public ElementDescriptor[] getRootElementDescriptors() {
- return mDescriptor.getChildren();
- }
-
- /** @return the root descriptor for searchable. */
- public DocumentDescriptor getSearchableDescriptor() {
- return mSearchDescriptor;
- }
-
- /** @return the root descriptor for preferences. */
- public DocumentDescriptor getPreferencesDescriptor() {
- return mPrefDescriptor;
- }
-
- /** @return the root descriptor for widget providers. */
- public DocumentDescriptor getAppWidgetDescriptor() {
- return mAppWidgetDescriptor;
- }
-
- public IDescriptorProvider getSearchableProvider() {
- return new IDescriptorProvider() {
- @Override
- public ElementDescriptor getDescriptor() {
- return mSearchDescriptor;
- }
-
- @Override
- public ElementDescriptor[] getRootElementDescriptors() {
- return mSearchDescriptor.getChildren();
- }
- };
- }
-
- public IDescriptorProvider getPreferencesProvider() {
- return new IDescriptorProvider() {
- @Override
- public ElementDescriptor getDescriptor() {
- return mPrefDescriptor;
- }
-
- @Override
- public ElementDescriptor[] getRootElementDescriptors() {
- return mPrefDescriptor.getChildren();
- }
- };
- }
-
- public IDescriptorProvider getAppWidgetProvider() {
- return new IDescriptorProvider() {
- @Override
- public ElementDescriptor getDescriptor() {
- return mAppWidgetDescriptor;
- }
-
- @Override
- public ElementDescriptor[] getRootElementDescriptors() {
- return mAppWidgetDescriptor.getChildren();
- }
- };
- }
-
- /**
- * Updates the document descriptor.
- * <p/>
- * It first computes the new children of the descriptor and then updates them
- * all at once.
- *
- * @param searchableStyleMap The map style=>attributes for <searchable> from the attrs.xml file
- * @param appWidgetStyleMap The map style=>attributes for <appwidget-provider> from the attrs.xml file
- * @param prefs The list of non-group preference descriptions
- * @param prefGroups The list of preference group descriptions
- */
- public synchronized void updateDescriptors(
- Map<String, DeclareStyleableInfo> searchableStyleMap,
- Map<String, DeclareStyleableInfo> appWidgetStyleMap,
- ViewClassInfo[] prefs, ViewClassInfo[] prefGroups) {
-
- XmlnsAttributeDescriptor xmlns = new XmlnsAttributeDescriptor(ANDROID_NS_NAME,
- ANDROID_URI);
-
- ElementDescriptor searchable = createSearchable(searchableStyleMap, xmlns);
- ElementDescriptor appWidget = createAppWidgetProviderInfo(appWidgetStyleMap, xmlns);
- ElementDescriptor preferences = createPreference(prefs, prefGroups, xmlns);
- ArrayList<ElementDescriptor> list = new ArrayList<ElementDescriptor>();
- if (searchable != null) {
- list.add(searchable);
- mSearchDescriptor.setChildren(new ElementDescriptor[]{ searchable });
- }
- if (appWidget != null) {
- list.add(appWidget);
- mAppWidgetDescriptor.setChildren(new ElementDescriptor[]{ appWidget });
- }
- if (preferences != null) {
- list.add(preferences);
- mPrefDescriptor.setChildren(new ElementDescriptor[]{ preferences });
- }
-
- if (list.size() > 0) {
- mDescriptor.setChildren(list.toArray(new ElementDescriptor[list.size()]));
- }
- }
-
- //-------------------------
- // Creation of <searchable>
- //-------------------------
-
- /**
- * Returns the new ElementDescriptor for <searchable>
- */
- private ElementDescriptor createSearchable(
- Map<String, DeclareStyleableInfo> searchableStyleMap,
- XmlnsAttributeDescriptor xmlns) {
-
- ElementDescriptor action_key = createElement(searchableStyleMap,
- "SearchableActionKey", //$NON-NLS-1$ styleName
- "actionkey", //$NON-NLS-1$ xmlName
- "Action Key", // uiName
- null, // sdk url
- null, // extraAttribute
- null, // childrenElements
- false /* mandatory */ );
-
- ElementDescriptor searchable = createElement(searchableStyleMap,
- "Searchable", //$NON-NLS-1$ styleName
- "searchable", //$NON-NLS-1$ xmlName
- "Searchable", // uiName
- null, // sdk url
- xmlns, // extraAttribute
- new ElementDescriptor[] { action_key }, // childrenElements
- false /* mandatory */ );
- return searchable;
- }
-
- /**
- * Returns the new ElementDescriptor for <appwidget-provider>
- */
- private ElementDescriptor createAppWidgetProviderInfo(
- Map<String, DeclareStyleableInfo> appWidgetStyleMap,
- XmlnsAttributeDescriptor xmlns) {
-
- if (appWidgetStyleMap == null) {
- return null;
- }
-
- ElementDescriptor appWidget = createElement(appWidgetStyleMap,
- "AppWidgetProviderInfo", //$NON-NLS-1$ styleName
- "appwidget-provider", //$NON-NLS-1$ xmlName
- "AppWidget Provider", // uiName
- null, // sdk url
- xmlns, // extraAttribute
- null, // childrenElements
- false /* mandatory */ );
- return appWidget;
- }
-
- /**
- * Returns a new ElementDescriptor constructed from the information given here
- * and the javadoc & attributes extracted from the style map if any.
- */
- private ElementDescriptor createElement(
- Map<String, DeclareStyleableInfo> styleMap, String styleName,
- String xmlName, String uiName, String sdkUrl,
- AttributeDescriptor extraAttribute,
- ElementDescriptor[] childrenElements, boolean mandatory) {
-
- ElementDescriptor element = new ElementDescriptor(xmlName, uiName, null, sdkUrl,
- null, childrenElements, mandatory);
-
- return updateElement(element, styleMap, styleName, extraAttribute);
- }
-
- /**
- * Updates an ElementDescriptor with the javadoc & attributes extracted from the style
- * map if any.
- */
- private ElementDescriptor updateElement(ElementDescriptor element,
- Map<String, DeclareStyleableInfo> styleMap,
- String styleName,
- AttributeDescriptor extraAttribute) {
- ArrayList<AttributeDescriptor> descs = new ArrayList<AttributeDescriptor>();
-
- DeclareStyleableInfo style = styleMap != null ? styleMap.get(styleName) : null;
- if (style != null) {
- DescriptorsUtils.appendAttributes(descs,
- null, // elementName
- SdkConstants.NS_RESOURCES,
- style.getAttributes(),
- null, // requiredAttributes
- null); // overrides
- element.setTooltip(style.getJavaDoc());
- }
-
- if (extraAttribute != null) {
- descs.add(extraAttribute);
- }
-
- element.setAttributes(descs.toArray(new AttributeDescriptor[descs.size()]));
- return element;
- }
-
- //--------------------------
- // Creation of <Preferences>
- //--------------------------
-
- /**
- * Returns the new ElementDescriptor for <Preferences>
- */
- private ElementDescriptor createPreference(ViewClassInfo[] prefs,
- ViewClassInfo[] prefGroups, XmlnsAttributeDescriptor xmlns) {
-
- ArrayList<ElementDescriptor> newPrefs = new ArrayList<ElementDescriptor>();
- if (prefs != null) {
- for (ViewClassInfo info : prefs) {
- ElementDescriptor desc = convertPref(info);
- newPrefs.add(desc);
- }
- }
-
- ElementDescriptor topPreferences = null;
-
- ArrayList<ElementDescriptor> newGroups = new ArrayList<ElementDescriptor>();
- if (prefGroups != null) {
- for (ViewClassInfo info : prefGroups) {
- ElementDescriptor desc = convertPref(info);
- newGroups.add(desc);
-
- if (info.getFullClassName() == SdkConstants.CLASS_PREFERENCES) {
- topPreferences = desc;
- }
- }
- }
-
- ArrayList<ElementDescriptor> everything = new ArrayList<ElementDescriptor>();
- everything.addAll(newGroups);
- everything.addAll(newPrefs);
- ElementDescriptor[] newArray = everything.toArray(new ElementDescriptor[everything.size()]);
-
- // Link all groups to everything else here.. recursively
- for (ElementDescriptor layoutDesc : newGroups) {
- layoutDesc.setChildren(newArray);
- }
-
- // The "top" element to be returned corresponds to the class "Preferences".
- // Its descriptor has already been created. However the root one also needs
- // the hidden xmlns:android definition..
- if (topPreferences != null) {
- AttributeDescriptor[] attrs = topPreferences.getAttributes();
- AttributeDescriptor[] newAttrs = new AttributeDescriptor[attrs.length + 1];
- System.arraycopy(attrs, 0, newAttrs, 0, attrs.length);
- newAttrs[attrs.length] = xmlns;
- return new ElementDescriptor(
- topPreferences.getXmlName(),
- topPreferences.getUiName(),
- topPreferences.getTooltip(),
- topPreferences.getSdkUrl(),
- newAttrs,
- topPreferences.getChildren(),
- false /* mandatory */);
- } else {
- return null;
- }
- }
-
- /**
- * Creates an element descriptor from a given {@link ViewClassInfo}.
- */
- private ElementDescriptor convertPref(ViewClassInfo info) {
- String xml_name = info.getShortClassName();
- String tooltip = info.getJavaDoc();
-
- // Process all Preference attributes
- ArrayList<AttributeDescriptor> attributes = new ArrayList<AttributeDescriptor>();
- DescriptorsUtils.appendAttributes(attributes,
- null, // elementName
- SdkConstants.NS_RESOURCES,
- info.getAttributes(),
- null, // requiredAttributes
- null); // overrides
-
- for (ViewClassInfo link = info.getSuperClass();
- link != null;
- link = link.getSuperClass()) {
- AttributeInfo[] attrList = link.getAttributes();
- if (attrList.length > 0) {
- attributes.add(new SeparatorAttributeDescriptor(
- String.format("Attributes from %1$s", link.getShortClassName())));
- DescriptorsUtils.appendAttributes(attributes,
- null, // elementName
- SdkConstants.NS_RESOURCES,
- attrList,
- null, // requiredAttributes
- null); // overrides
- }
- }
-
- return new ViewElementDescriptor(xml_name,
- xml_name, // ui_name
- info.getFullClassName(),
- tooltip,
- null, // sdk_url
- attributes.toArray(new AttributeDescriptor[attributes.size()]),
- null,
- null, // children
- false /* mandatory */);
- }
-}