diff --git a/plugins/android/rt/src/org/jetbrains/android/util/AndroidCommonUtils.java b/plugins/android/rt/src/org/jetbrains/android/util/AndroidCommonUtils.java index 18ca93b3ed2b..5d0b064366ce 100644 --- a/plugins/android/rt/src/org/jetbrains/android/util/AndroidCommonUtils.java +++ b/plugins/android/rt/src/org/jetbrains/android/util/AndroidCommonUtils.java @@ -11,6 +11,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,6 +38,9 @@ public class AndroidCommonUtils { private static Pattern R_PATTERN = Pattern.compile("R(\\$.*)?\\.class"); public static final Pattern COMPILER_MESSAGE_PATTERN = Pattern.compile("(.+):(\\d+):.+"); + public static final String[] FILE_RESOURCE_TYPES = new String[]{"drawable", "anim", "layout", "values", "menu", "xml", "raw", "color"}; + @NonNls public static final String PNG_EXTENSION = "png"; + private static final String[] DRAWABLE_EXTENSIONS = new String[]{PNG_EXTENSION, "jpg", "gif"}; private AndroidCommonUtils() { } @@ -226,4 +230,35 @@ public class AndroidCommonUtils { bis.close(); } } + + @Nullable + public static String getResourceTypeByDirName(@NotNull String name) { + final int index = name.indexOf('-'); + final String type = index >= 0 ? name.substring(0, index) : name; + return ArrayUtil.find(FILE_RESOURCE_TYPES, type) >= 0 ? type : null; + } + + @NotNull + public static String getResourceName(@NotNull String resourceType, @NotNull String fileName) { + final String extension = FileUtil.getExtension(fileName); + final String s = FileUtil.getNameWithoutExtension(fileName); + + return resourceType.equals("drawable") && + ArrayUtil.find(DRAWABLE_EXTENSIONS, extension) >= 0 && + s.endsWith(".9") && + extension.equals(PNG_EXTENSION) + ? s.substring(0, s.length() - 2) + : s; + } + + @NotNull + public static String getResourceTypeByTagName(@NotNull String tagName) { + if (tagName.equals("declare-styleable")) { + tagName = "styleable"; + } + else if (tagName.endsWith("-array")) { + tagName = "array"; + } + return tagName; + } } diff --git a/plugins/android/src/org/jetbrains/android/AndroidReferenceSearchExecutor.java b/plugins/android/src/org/jetbrains/android/AndroidReferenceSearchExecutor.java index b03ed7f9a6a8..1a1d776187ab 100644 --- a/plugins/android/src/org/jetbrains/android/AndroidReferenceSearchExecutor.java +++ b/plugins/android/src/org/jetbrains/android/AndroidReferenceSearchExecutor.java @@ -24,7 +24,7 @@ import com.intellij.psi.PsiReference; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.util.Processor; import org.jetbrains.android.resourceManagers.LocalResourceManager; -import org.jetbrains.android.util.AndroidResourceUtil; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.annotations.NotNull; /** @@ -49,7 +49,7 @@ public class AndroidReferenceSearchExecutor extends QueryExecutorBase resourceFiles = manager.findResourceFiles(type, AndroidResourceUtil.getResourceName(type, name)); + List resourceFiles = manager.findResourceFiles(type, AndroidCommonUtils.getResourceName(type, name)); List alternativeResources = new ArrayList(); for (PsiFile resourceFile : resourceFiles) { if (!resourceFile.getManager().areElementsEquivalent(file, resourceFile) && resourceFile.getName().equals(name)) { @@ -231,7 +232,7 @@ public class AndroidRenameResourceProcessor extends RenamePsiElementProcessor { } PsiField[] resFields = AndroidResourceUtil.findResourceFieldsForFileResource(file, false); for (PsiField resField : resFields) { - String newFieldName = AndroidResourceUtil.getResourceName(type, newName); + String newFieldName = AndroidCommonUtils.getResourceName(type, newName); allRenames.put(resField, newFieldName); } } diff --git a/plugins/android/src/org/jetbrains/android/AndroidResourcesLineMarkerProvider.java b/plugins/android/src/org/jetbrains/android/AndroidResourcesLineMarkerProvider.java index e0cafa1f6955..0802c6d5a896 100644 --- a/plugins/android/src/org/jetbrains/android/AndroidResourcesLineMarkerProvider.java +++ b/plugins/android/src/org/jetbrains/android/AndroidResourcesLineMarkerProvider.java @@ -40,6 +40,7 @@ import org.jetbrains.android.dom.resources.ResourceElement; import org.jetbrains.android.dom.resources.Resources; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.resourceManagers.LocalResourceManager; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.android.util.AndroidResourceUtil; import org.jetbrains.android.util.AndroidUtils; import org.jetbrains.annotations.NotNull; @@ -201,13 +202,13 @@ public class AndroidResourcesLineMarkerProvider implements LineMarkerProvider { public void run() { List resourceSubdirs = resManager.getResourceSubdirs(null); for (VirtualFile dir : resourceSubdirs) { - String resType = AndroidResourceUtil.getResourceTypeByDirName(dir.getName()); + String resType = AndroidCommonUtils.getResourceTypeByDirName(dir.getName()); if (resType != null) { for (VirtualFile resourceFile : dir.getChildren()) { if (!resourceFile.isDirectory()) { PsiFile resourcePsiFile = psiManager.findFile(resourceFile); if (resourcePsiFile != null) { - String resName = AndroidResourceUtil.getResourceName(resType, resourceFile.getName()); + String resName = AndroidCommonUtils.getResourceName(resType, resourceFile.getName()); MyResourceEntry key = new MyResourceEntry(resName, resType); List list = result.get(key); if (list == null) { diff --git a/plugins/android/src/org/jetbrains/android/AndroidXmlSchemaProvider.java b/plugins/android/src/org/jetbrains/android/AndroidXmlSchemaProvider.java index 235dac102afb..9c9c3fb8194c 100644 --- a/plugins/android/src/org/jetbrains/android/AndroidXmlSchemaProvider.java +++ b/plugins/android/src/org/jetbrains/android/AndroidXmlSchemaProvider.java @@ -36,6 +36,7 @@ import gnu.trove.THashMap; import org.jetbrains.android.dom.manifest.Manifest; import org.jetbrains.android.dom.manifest.ManifestDomFileDescription; import org.jetbrains.android.facet.AndroidFacet; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.android.util.AndroidResourceUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -109,7 +110,7 @@ public class AndroidXmlSchemaProvider extends XmlSchemaProvider { return false; } - final String resType = AndroidResourceUtil.getResourceTypeByDirName(parent.getName()); + final String resType = AndroidCommonUtils.getResourceTypeByDirName(parent.getName()); if (resType == null) { return false; } diff --git a/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java b/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java index 3b9aeffb5cc8..b855315ccac8 100644 --- a/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java +++ b/plugins/android/src/org/jetbrains/android/actions/CreateXmlResourceDialog.java @@ -24,6 +24,7 @@ import org.jetbrains.android.sdk.AndroidSdkUtils; import org.jetbrains.android.uipreview.DeviceConfiguratorPanel; import org.jetbrains.android.uipreview.InvalidOptionValueException; import org.jetbrains.android.util.AndroidBundle; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.android.util.AndroidResourceUtil; import org.jetbrains.android.util.AndroidUtils; import org.jetbrains.annotations.NotNull; @@ -142,7 +143,7 @@ public class CreateXmlResourceDialog extends DialogWrapper { return new ValidationInfo("specify module", myModuleCombo); } else if (!ResourceFolderType.VALUES.getName().equals( - AndroidResourceUtil.getResourceTypeByDirName(directoryName))) { + AndroidCommonUtils.getResourceTypeByDirName(directoryName))) { return new ValidationInfo("directory name is not appropriate for value resources"); } diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidPngFilesCachingCompiler.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidPngFilesCachingCompiler.java index e92f51586537..e870068e4b81 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidPngFilesCachingCompiler.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidPngFilesCachingCompiler.java @@ -16,7 +16,7 @@ import org.jetbrains.android.compiler.tools.AndroidApt; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.sdk.AndroidPlatform; import org.jetbrains.android.util.AndroidBundle; -import org.jetbrains.android.util.AndroidUtils; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -218,7 +218,7 @@ public class AndroidPngFilesCachingCompiler implements SourceGeneratingCompiler collectPngFiles(child, visited); } } - else if (AndroidUtils.PNG_EXTENSION.equals(file.getExtension())) { + else if (AndroidCommonUtils.PNG_EXTENSION.equals(file.getExtension())) { myTimestamps.put(file.getPath(), file.getTimeStamp()); } } diff --git a/plugins/android/src/org/jetbrains/android/dom/converters/AndroidResourceReference.java b/plugins/android/src/org/jetbrains/android/dom/converters/AndroidResourceReference.java index b7f73cfae8fc..4f326f9cb957 100644 --- a/plugins/android/src/org/jetbrains/android/dom/converters/AndroidResourceReference.java +++ b/plugins/android/src/org/jetbrains/android/dom/converters/AndroidResourceReference.java @@ -32,6 +32,7 @@ import org.jetbrains.android.dom.wrappers.FileResourceElementWrapper; import org.jetbrains.android.dom.wrappers.ValueResourceElementWrapper; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.resourceManagers.ResourceManager; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.android.util.AndroidResourceUtil; import org.jetbrains.annotations.NotNull; @@ -86,7 +87,7 @@ public class AndroidResourceReference extends PsiReferenceBase.Poly String resType = value.getResourceType(); if (resType != null && newElementName != null) { myValue.setValue(ResourceValue.referenceTo(value.getPrefix(), value.getPackage(), resType, - AndroidResourceUtil.getResourceName(resType, newElementName))); + AndroidCommonUtils.getResourceName(resType, newElementName))); } return myValue.getXmlTag(); } diff --git a/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java b/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java index 6c14aa0600cc..894130354557 100644 --- a/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java +++ b/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java @@ -41,6 +41,7 @@ import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.resourceManagers.LocalResourceManager; import org.jetbrains.android.resourceManagers.ResourceManager; import org.jetbrains.android.util.AndroidBundle; +import org.jetbrains.android.util.AndroidCommonUtils; import org.jetbrains.android.util.AndroidResourceUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -172,7 +173,7 @@ public class ResourceReferenceConverter extends ResolvingConverter() { @Nullable @@ -197,7 +198,7 @@ public abstract class ResourceManager { if (possibleResDir == null || !isResourceDir(possibleResDir.getVirtualFile())) { return null; } - String type = AndroidResourceUtil.getResourceTypeByDirName(dir.getName()); + String type = AndroidCommonUtils.getResourceTypeByDirName(dir.getName()); if (type == null) return null; return type; } @@ -211,7 +212,7 @@ public abstract class ResourceManager { for (VirtualFile dir : dirs) { for (VirtualFile resourceFile : dir.getChildren()) { if (resourceFile.isDirectory()) continue; - result.add(AndroidResourceUtil.getResourceName(resourceType, resourceFile.getName())); + result.add(AndroidCommonUtils.getResourceName(resourceType, resourceFile.getName())); } } return result; diff --git a/plugins/android/src/org/jetbrains/android/util/AndroidResourceUtil.java b/plugins/android/src/org/jetbrains/android/util/AndroidResourceUtil.java index 55e1f650c729..de145f8db2ce 100644 --- a/plugins/android/src/org/jetbrains/android/util/AndroidResourceUtil.java +++ b/plugins/android/src/org/jetbrains/android/util/AndroidResourceUtil.java @@ -23,7 +23,6 @@ import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModulePackageIndex; import com.intellij.openapi.roots.ModuleRootManager; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; @@ -57,12 +56,10 @@ public class AndroidResourceUtil { public static final String NEW_ID_PREFIX = "@+id/"; public static final String[] VALUE_RESOURCE_TYPES = new String[]{"drawable", "dimen", "color", "string", "style", "array", "id", "bool", "integer", "integer-array"}; - private static final String[] DRAWABLE_EXTENSIONS = new String[]{AndroidUtils.PNG_EXTENSION, "jpg", "gif"}; public static final Set REFERABLE_RESOURCE_TYPES = new HashSet(); - public static final String[] FILE_RESOURCE_TYPES = new String[]{"drawable", "anim", "layout", "values", "menu", "xml", "raw", "color"}; static { - addAll(REFERABLE_RESOURCE_TYPES, FILE_RESOURCE_TYPES); + addAll(REFERABLE_RESOURCE_TYPES, AndroidCommonUtils.FILE_RESOURCE_TYPES); addAll(REFERABLE_RESOURCE_TYPES, VALUE_RESOURCE_TYPES); REFERABLE_RESOURCE_TYPES.remove("values"); } @@ -194,7 +191,7 @@ public class AndroidResourceUtil { return PsiField.EMPTY_ARRAY; } - final String resourceName = getResourceName(resourceType, file.getName()); + final String resourceName = AndroidCommonUtils.getResourceName(resourceType, file.getName()); return findResourceFields(facet, resourceType, resourceName, onlyInOwnPackages); } @@ -253,7 +250,7 @@ public class AndroidResourceUtil { String resClassName = tag.getName(); resClassName = resClassName.equals("item") ? tag.getAttributeValue("type", null) - : getResourceTypeByTagName(resClassName); + : AndroidCommonUtils.getResourceTypeByTagName(resClassName); if (resClassName != null) { final String resourceName = tag.getAttributeValue("name"); return resourceName != null ? resClassName : null; @@ -261,17 +258,6 @@ public class AndroidResourceUtil { return null; } - @NotNull - public static String getResourceTypeByTagName(@NotNull String tagName) { - if (tagName.equals("declare-styleable")) { - tagName = "styleable"; - } - else if (tagName.endsWith("-array")) { - tagName = "array"; - } - return tagName; - } - @Nullable public static String getResourceClassName(@NotNull PsiField field) { final PsiClass resourceClass = field.getContainingClass(); @@ -395,16 +381,9 @@ public class AndroidResourceUtil { throw new IllegalArgumentException("Incorrect resource type"); } - @Nullable - public static String getResourceTypeByDirName(@NotNull String name) { - final int index = name.indexOf('-'); - final String type = index >= 0 ? name.substring(0, index) : name; - return ArrayUtil.find(FILE_RESOURCE_TYPES, type) >= 0 ? type : null; - } - @NotNull public static List getResourceSubdirs(@Nullable String resourceType, @NotNull VirtualFile[] resourceDirs) { - if (ArrayUtil.find(FILE_RESOURCE_TYPES, resourceType) < 0 && resourceType != null) { + if (ArrayUtil.find(AndroidCommonUtils.FILE_RESOURCE_TYPES, resourceType) < 0 && resourceType != null) { return Collections.emptyList(); } final List dirs = new ArrayList(); @@ -418,7 +397,7 @@ public class AndroidResourceUtil { } else { for (VirtualFile child : resourcesDir.getChildren()) { - String type = getResourceTypeByDirName(child.getName()); + String type = AndroidCommonUtils.getResourceTypeByDirName(child.getName()); if (resourceType.equals(type)) dirs.add(child); } } @@ -434,19 +413,6 @@ public class AndroidResourceUtil { return resourceType + "s.xml"; } - @NotNull - public static String getResourceName(@NotNull String resourceType, @NotNull String fileName) { - final String extension = FileUtil.getExtension(fileName); - final String s = FileUtil.getNameWithoutExtension(fileName); - - return resourceType.equals("drawable") && - ArrayUtil.find(DRAWABLE_EXTENSIONS, extension) >= 0 && - s.endsWith(".9") && - extension.equals(AndroidUtils.PNG_EXTENSION) - ? s.substring(0, s.length() - 2) - : s; - } - @NotNull public static List getValueResourcesFromElement(@NotNull String resourceType, @NotNull Resources resources) { final List result = new ArrayList(); diff --git a/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java b/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java index 08b9b55c4efa..2836427f7954 100644 --- a/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java +++ b/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java @@ -126,8 +126,6 @@ public class AndroidUtils { @NonNls public static final String ANDROID_TARGET_PROPERTY = "target"; @NonNls public static final String ANDROID_LIBRARY_REFERENCE_PROPERTY_PREFIX = "android.library.reference."; - @NonNls public static final String PNG_EXTENSION = "png"; - private AndroidUtils() { }