mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move several methods to AndroidCommonUtils
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<PsiReferen
|
||||
|
||||
String resType = manager.getFileResourceType((PsiFile)refElement);
|
||||
if (resType != null) {
|
||||
String resName = AndroidResourceUtil.getResourceName(resType, vFile.getName());
|
||||
String resName = AndroidCommonUtils.getResourceName(resType, vFile.getName());
|
||||
// unless references can be found by a simple CachedBasedRefSearcher
|
||||
if (!resName.equals(vFile.getNameWithoutExtension()) && StringUtil.isNotEmpty(resName)) {
|
||||
params.getOptimizer().searchWord(resName, params.getEffectiveSearchScope(), true, refElement);
|
||||
|
||||
@@ -46,6 +46,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.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -203,11 +204,11 @@ public class AndroidRenameResourceProcessor extends RenamePsiElementProcessor {
|
||||
if (type == null) return;
|
||||
String name = file.getName();
|
||||
|
||||
if (AndroidResourceUtil.getResourceName(type, name).equals(AndroidResourceUtil.getResourceName(type, newName))) {
|
||||
if (AndroidCommonUtils.getResourceName(type, name).equals(AndroidCommonUtils.getResourceName(type, newName))) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<PsiFile> resourceFiles = manager.findResourceFiles(type, AndroidResourceUtil.getResourceName(type, name));
|
||||
List<PsiFile> resourceFiles = manager.findResourceFiles(type, AndroidCommonUtils.getResourceName(type, name));
|
||||
List<PsiFile> alternativeResources = new ArrayList<PsiFile>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<VirtualFile> 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<PsiElement> list = result.get(key);
|
||||
if (list == null) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -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<XmlElement>
|
||||
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();
|
||||
}
|
||||
|
||||
+2
-1
@@ -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<ResourceValue
|
||||
final LocalResourceManager manager = facet.getLocalResourceManager();
|
||||
|
||||
for (VirtualFile resSubdir : manager.getResourceSubdirs(null)) {
|
||||
final String resType = AndroidResourceUtil.getResourceTypeByDirName(resSubdir.getName());
|
||||
final String resType = AndroidCommonUtils.getResourceTypeByDirName(resSubdir.getName());
|
||||
|
||||
if (resType != null && com.android.resources.ResourceType.getEnum(resType) != null) {
|
||||
result.add(resType);
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.jetbrains.android.compiler.AndroidCompileUtil;
|
||||
import org.jetbrains.android.dom.manifest.Manifest;
|
||||
import org.jetbrains.android.fileTypes.AndroidIdlFileType;
|
||||
import org.jetbrains.android.fileTypes.AndroidRenderscriptFileType;
|
||||
import org.jetbrains.android.util.AndroidResourceUtil;
|
||||
import org.jetbrains.android.util.AndroidCommonUtils;
|
||||
import org.jetbrains.android.util.AndroidUtils;
|
||||
import org.jetbrains.android.util.ResourceEntry;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -203,7 +203,7 @@ class AndroidResourceFilesListener extends VirtualFileAdapter {
|
||||
final VirtualFile resourceDir = AndroidRootUtil.getResourceDir(myFacet);
|
||||
|
||||
if (gp == resourceDir &&
|
||||
ResourceFolderType.VALUES.getName().equals(AndroidResourceUtil.getResourceTypeByDirName(parent.getName()))) {
|
||||
ResourceFolderType.VALUES.getName().equals(AndroidCommonUtils.getResourceTypeByDirName(parent.getName()))) {
|
||||
myFacet.getLocalResourceManager().invalidateAttributeDefinitions();
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.jetbrains.android.dom.attrs.AttributeDefinitions;
|
||||
import org.jetbrains.android.dom.resources.ResourceElement;
|
||||
import org.jetbrains.android.dom.resources.Resources;
|
||||
import org.jetbrains.android.facet.AndroidFacet;
|
||||
import org.jetbrains.android.util.AndroidCommonUtils;
|
||||
import org.jetbrains.android.util.AndroidResourceUtil;
|
||||
import org.jetbrains.android.util.AndroidUtils;
|
||||
import org.jetbrains.android.util.ResourceEntry;
|
||||
@@ -102,7 +103,7 @@ public abstract class ResourceManager {
|
||||
for (final VirtualFile resFile : dir.getChildren()) {
|
||||
String extension = resFile.getExtension();
|
||||
if (extensions.length == 0 || extensionSet.contains(extension)) {
|
||||
String s = AndroidResourceUtil.getResourceName(resType, resFile.getName());
|
||||
String s = AndroidCommonUtils.getResourceName(resType, resFile.getName());
|
||||
if (resName == null || AndroidUtils.equal(resName, s, distinguishDelimetersInName)) {
|
||||
PsiFile file = ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() {
|
||||
@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;
|
||||
|
||||
@@ -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<String> REFERABLE_RESOURCE_TYPES = new HashSet<String>();
|
||||
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<VirtualFile> 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<VirtualFile> dirs = new ArrayList<VirtualFile>();
|
||||
@@ -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<ResourceElement> getValueResourcesFromElement(@NotNull String resourceType, @NotNull Resources resources) {
|
||||
final List<ResourceElement> result = new ArrayList<ResourceElement>();
|
||||
|
||||
@@ -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() {
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user