aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceType.java10
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationship.java37
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/MultiResourceFile.java1
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationShipTest.java43
4 files changed, 76 insertions, 15 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceType.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceType.java
index f09719c..4555913 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceType.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/ResourceType.java
@@ -23,17 +23,25 @@ public enum ResourceType {
ANIM("anim", "Animation"), //$NON-NLS-1$
ARRAY("array", "Array", "string-array", "integer-array"), //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-4$
ATTR("attr", "Attr"), //$NON-NLS-1$
+ BOOL("bool", "Boolean"), //$NON-NLS-1$
COLOR("color", "Color"), //$NON-NLS-1$
+ DECLARE_STYLEABLE("declare-styleable", "Declare Stylable"), //$NON-NLS-1$
DIMEN("dimen", "Dimension"), //$NON-NLS-1$
DRAWABLE("drawable", "Drawable"), //$NON-NLS-1$
+ FRACTION("fraction", "Fraction"), //$NON-NLS-1$
ID("id", "ID"), //$NON-NLS-1$
+ INTEGER("integer", "Integer"), //$NON-NLS-1$
LAYOUT("layout", "Layout"), //$NON-NLS-1$
MENU("menu", "Menu"), //$NON-NLS-1$
+ PLURALS("plurals", "Plurals"), //$NON-NLS-1$
RAW("raw", "Raw"), //$NON-NLS-1$
STRING("string", "String"), //$NON-NLS-1$
STYLE("style", "Style"), //$NON-NLS-1$
STYLEABLE("styleable", "Styleable"), //$NON-NLS-1$
- XML("xml", "XML"); //$NON-NLS-1$
+ XML("xml", "XML"), //$NON-NLS-1$
+ // this is not actually used. Only there because they get parsed and since we want to
+ // detect new resource type, we need to have this one exist.
+ PUBLIC("public", "###"); //$NON-NLS-1$ //$NON-NLS-2$
private final String mName;
private final String mDisplayName;
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationship.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationship.java
index 4b45f6e..c96182d 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationship.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationship.java
@@ -28,39 +28,48 @@ import java.util.Set;
* {@link ResourceFolderType}.
*/
public final class FolderTypeRelationship {
-
+
private final static HashMap<ResourceType, ResourceFolderType[]> mTypeToFolderMap =
new HashMap<ResourceType, ResourceFolderType[]>();
-
+
private final static HashMap<ResourceFolderType, ResourceType[]> mFolderToTypeMap =
new HashMap<ResourceFolderType, ResourceType[]>();
-
+
// generate the relationships.
static {
HashMap<ResourceType, List<ResourceFolderType>> typeToFolderMap =
new HashMap<ResourceType, List<ResourceFolderType>>();
-
+
HashMap<ResourceFolderType, List<ResourceType>> folderToTypeMap =
new HashMap<ResourceFolderType, List<ResourceType>>();
add(ResourceType.ANIM, ResourceFolderType.ANIM, typeToFolderMap, folderToTypeMap);
add(ResourceType.ARRAY, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.ATTR, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.BOOL, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.COLOR, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.COLOR, ResourceFolderType.COLOR, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.DECLARE_STYLEABLE, ResourceFolderType.VALUES, typeToFolderMap,
+ folderToTypeMap);
add(ResourceType.DIMEN, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.DRAWABLE, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.DRAWABLE, ResourceFolderType.DRAWABLE, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.FRACTION, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.ID, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.INTEGER, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.LAYOUT, ResourceFolderType.LAYOUT, typeToFolderMap, folderToTypeMap);
add(ResourceType.MENU, ResourceFolderType.MENU, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.PLURALS, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.PUBLIC, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.RAW, ResourceFolderType.RAW, typeToFolderMap, folderToTypeMap);
add(ResourceType.STRING, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.STYLE, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
+ add(ResourceType.STYLEABLE, ResourceFolderType.VALUES, typeToFolderMap, folderToTypeMap);
add(ResourceType.XML, ResourceFolderType.XML, typeToFolderMap, folderToTypeMap);
-
+
optimize(typeToFolderMap, folderToTypeMap);
}
-
+
/**
* Returns a list of {@link ResourceType}s that can be generated from files inside a folder
* of the specified type.
@@ -74,7 +83,7 @@ public final class FolderTypeRelationship {
}
return new ResourceType[0];
}
-
+
/**
* Returns a list of {@link ResourceFolderType} that can contain files generating resources
* of the specified type.
@@ -88,7 +97,7 @@ public final class FolderTypeRelationship {
}
return new ResourceFolderType[0];
}
-
+
/**
* Returns true if the {@link ResourceType} and the {@link ResourceFolderType} values match.
* @param resType the resource type.
@@ -98,7 +107,7 @@ public final class FolderTypeRelationship {
*/
public static boolean match(ResourceType resType, ResourceFolderType folderType) {
ResourceFolderType[] array = mTypeToFolderMap.get(resType);
-
+
if (array != null && array.length > 0) {
for (ResourceFolderType fType : array) {
if (fType == folderType) {
@@ -106,17 +115,17 @@ public final class FolderTypeRelationship {
}
}
}
-
+
return false;
}
-
+
/**
* Adds a {@link ResourceType} - {@link ResourceFolderType} relationship. this indicates that
* a file in the folder can generate a resource of the specified type.
* @param type The resourceType
* @param folder The {@link ResourceFolderType}
- * @param folderToTypeMap
- * @param typeToFolderMap
+ * @param folderToTypeMap
+ * @param typeToFolderMap
*/
private static void add(ResourceType type, ResourceFolderType folder,
HashMap<ResourceType, List<ResourceFolderType>> typeToFolderMap,
@@ -130,7 +139,7 @@ public final class FolderTypeRelationship {
if (folderList.indexOf(folder) == -1) {
folderList.add(folder);
}
-
+
// now we add the type to the list associated with the folder.
List<ResourceType> typeList = folderToTypeMap.get(folder);
if (typeList == null) {
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/MultiResourceFile.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/MultiResourceFile.java
index ae56f67..a96a4e8 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/MultiResourceFile.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/resources/manager/MultiResourceFile.java
@@ -136,6 +136,7 @@ public final class MultiResourceFile extends ResourceFile implements IValueResou
*/
public void addResourceValue(String resType, ResourceValue value) {
ResourceType type = ResourceType.getEnum(resType);
+ assert type != null;
if (type != null) {
HashMap<String, ResourceValue> list = mResourceItems.get(type);
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationShipTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationShipTest.java
new file mode 100644
index 0000000..a865ded
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/manager/FolderTypeRelationShipTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2010 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.resources.manager;
+
+import com.android.ide.eclipse.adt.internal.resources.ResourceType;
+
+import junit.framework.TestCase;
+
+public class FolderTypeRelationShipTest extends TestCase {
+
+ public void testResourceType() {
+ // all resource type should be in the FolderTypeRelationShip map.
+ // loop on all the enum, and make sure there's at least one folder type for it.
+ for (ResourceType type : ResourceType.values()) {
+ assertTrue(type.getDisplayName(),
+ FolderTypeRelationship.getRelatedFolders(type).length > 0);
+ }
+ }
+
+ public void testResourceFolderType() {
+ // all resource folder type should generate at least one type of resource.
+ // loop on all the enum, and make sure there's at least one res type for it.
+ for (ResourceFolderType type : ResourceFolderType.values()) {
+ assertTrue(type.getName(),
+ FolderTypeRelationship.getRelatedResourceTypes(type).length > 0);
+ }
+ }
+
+}