summaryrefslogtreecommitdiff
path: root/android-lint/src
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2021-12-21 20:20:48 -0800
committerTor Norbye <tnorbye@google.com>2021-12-23 20:01:10 +0000
commit79f7e33b5871d8b4392fd787653c1409e969f7ab (patch)
tree312139eaa3aafbb302a85a600cd89435b4d3737b /android-lint/src
parent09debda8b850bed5da9decb97871df2bf50ff0ae (diff)
downloadidea-79f7e33b5871d8b4392fd787653c1409e969f7ab.tar.gz
211770054: Preserve quickfix order in the IDE
When there are multiple quickfixes registered, IntelliJ will show them in *alphabetical* order, not the logical order they were registered in. This CL attempts to work around that by using inspection priorities. IntelliJ only has a concept of top/high/normal/low priorities, not a general rank, so we cannot guarantee the order, but for short lists of 2-4 items it should be fine, and that's nearly always the case. (Most of this fix updates various existing quickfixes to extend DefaultLintQuickFix instead of implementing the LintQuickFix interface directly which involves passing the display name to the super constructor; then we add a priority property on DefaultLintQuickFix which is used to remember the priority sorting for when we construct IntentionActions from these.) Test: AndroidLintInspectionBaseTest#testSortingPriority Fixes: 211770054 Change-Id: I59d8990d1e1be903148711525fd79c6a9900d77f
Diffstat (limited to 'android-lint/src')
-rw-r--r--android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintAndroidGradlePluginVersionInspection.kt13
-rw-r--r--android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintObsoleteSdkIntInspection.java10
-rw-r--r--android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintSwitchIntDefInspection.java9
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/AddMissingPrefixQuickFix.java14
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetApiQuickFix.kt4
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetVersionCheckQuickFix.kt12
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertNamespaceQuickFix.java11
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertToDpQuickFix.java14
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/GenerateMotionSceneFix.kt6
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/InefficientWeightQuickFix.java14
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/MigrateDrawableToMipmapFix.java11
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/MoveToDebugManifestQuickFix.java14
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/OpenFirebaseAssistantQuickFix.java14
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/ParcelableQuickFix.java13
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveAttributeQuickFix.java14
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveSdkCheckFix.kt15
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveUselessViewQuickFix.java11
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/SetScrollViewSizeQuickFix.java14
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/UnusedResourcesQuickFix.java13
-rw-r--r--android-lint/src/com/android/tools/idea/lint/quickFixes/UpgradeAppCompatV7Fix.java14
20 files changed, 93 insertions, 147 deletions
diff --git a/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintAndroidGradlePluginVersionInspection.kt b/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintAndroidGradlePluginVersionInspection.kt
index 6ff4fe60d76..8790ec0aeda 100644
--- a/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintAndroidGradlePluginVersionInspection.kt
+++ b/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintAndroidGradlePluginVersionInspection.kt
@@ -20,6 +20,7 @@ import com.android.tools.idea.lint.AndroidLintBundle
import com.android.tools.idea.lint.common.AndroidLintInspectionBase
import com.android.tools.idea.lint.common.AndroidQuickfixContexts
import com.android.tools.idea.lint.common.AndroidQuickfixContexts.ContextType
+import com.android.tools.idea.lint.common.DefaultLintQuickFix
import com.android.tools.idea.lint.common.LintIdeQuickFix
import com.android.tools.idea.lint.common.LintIdeSupport.Companion.get
import com.android.tools.lint.checks.GradleDetector
@@ -49,16 +50,16 @@ class AndroidLintAndroidGradlePluginVersionInspection : AndroidLintInspectionBas
return quickFixes.toArray(LintIdeQuickFix.EMPTY_ARRAY)
}
- class InvokeAGPUpgradeAssistantQuickFix(private val agpVersion: GradleVersion?) : LintIdeQuickFix {
+ class InvokeAGPUpgradeAssistantQuickFix(agpVersion: GradleVersion?) : DefaultLintQuickFix(
+ if (agpVersion == null)
+ "Invoke Upgrade Assistant"
+ else
+ "Invoke Upgrade Assistant for upgrade to $agpVersion"
+ ) {
override fun apply(startElement: PsiElement, endElement: PsiElement, context: AndroidQuickfixContexts.Context) {
get().updateAgpToLatest(startElement.project)
}
override fun isApplicable(startElement: PsiElement, endElement: PsiElement, contextType: ContextType): Boolean = true
-
- override fun getName(): String = if (agpVersion == null)
- "Invoke Upgrade Assistant"
- else
- "Invoke Upgrade Assistant for upgrade to $agpVersion"
}
} \ No newline at end of file
diff --git a/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintObsoleteSdkIntInspection.java b/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintObsoleteSdkIntInspection.java
index 497c3d6d836..11b70440dc1 100644
--- a/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintObsoleteSdkIntInspection.java
+++ b/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintObsoleteSdkIntInspection.java
@@ -24,11 +24,12 @@ import com.android.ide.common.util.PathString;
import com.android.resources.ResourceFolderType;
import com.android.resources.ResourceType;
import com.android.sdklib.AndroidVersion;
-import com.android.tools.idea.lint.quickFixes.RemoveSdkCheckFix;
+import com.android.tools.idea.lint.AndroidLintBundle;
import com.android.tools.idea.lint.common.AndroidLintInspectionBase;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.android.tools.idea.lint.common.LintIdeQuickFix;
-import com.android.tools.idea.lint.AndroidLintBundle;
+import com.android.tools.idea.lint.quickFixes.RemoveSdkCheckFix;
import com.android.tools.idea.res.IdeResourcesUtil;
import com.android.tools.idea.res.LocalResourceRepository;
import com.android.tools.idea.res.ResourceFolderRegistry;
@@ -116,7 +117,7 @@ public class AndroidLintObsoleteSdkIntInspection extends AndroidLintInspectionBa
* <p>
* TODO: Consider adding this as a refactoring action, or a context menu action on resource folders
*/
- private static class MergeResourceFolderFix implements LintIdeQuickFix {
+ private static class MergeResourceFolderFix extends DefaultLintQuickFix {
private final AndroidFacet facet;
private final VirtualFile dir;
private final String destFolderName;
@@ -125,6 +126,7 @@ public class AndroidLintObsoleteSdkIntInspection extends AndroidLintInspectionBa
MergeResourceFolderFix(@NotNull AndroidFacet facet, @NotNull VirtualFile dir, @NotNull String destFolderName,
AndroidVersion minSdkVersion) {
+ super(""); // getName overridden
this.facet = facet;
this.dir = dir;
this.destFolderName = destFolderName;
@@ -177,7 +179,7 @@ public class AndroidLintObsoleteSdkIntInspection extends AndroidLintInspectionBa
}
// Sort numerically, not alphabetically
- Collections.sort(folders, (f1, f2) -> {
+ folders.sort((f1, f2) -> {
FolderConfiguration configuration1 = FolderConfiguration.getConfigForFolder(f1.getName());
FolderConfiguration configuration2 = FolderConfiguration.getConfigForFolder(f2.getName());
assert configuration1 != null; // because otherwise it wouldn't have made it into the folders list above
diff --git a/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintSwitchIntDefInspection.java b/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintSwitchIntDefInspection.java
index e8ed0566e60..8e62a568abd 100644
--- a/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintSwitchIntDefInspection.java
+++ b/android-lint/src/com/android/tools/idea/lint/inspections/AndroidLintSwitchIntDefInspection.java
@@ -17,6 +17,7 @@ package com.android.tools.idea.lint.inspections;
import com.android.tools.idea.lint.common.AndroidLintInspectionBase;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.android.tools.idea.lint.common.LintIdeQuickFix;
import com.android.tools.idea.lint.AndroidLintBundle;
import com.android.tools.lint.checks.AnnotationDetector;
@@ -54,7 +55,7 @@ public class AndroidLintSwitchIntDefInspection extends AndroidLintInspectionBase
@SuppressWarnings("unchecked")
List<String> missingCases = LintFix.getStringList(fixData, AnnotationDetector.KEY_CASES);
if (missingCases != null && !missingCases.isEmpty()) {
- return new LintIdeQuickFix[]{new LintIdeQuickFix() {
+ return new LintIdeQuickFix[]{new DefaultLintQuickFix("Add Missing @IntDef Constants") {
@Override
public void apply(@NotNull PsiElement startElement,
@NotNull PsiElement endElement,
@@ -108,12 +109,6 @@ public class AndroidLintSwitchIntDefInspection extends AndroidLintInspectionBase
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return startElement.isValid();
}
-
- @NotNull
- @Override
- public String getName() {
- return "Add Missing @IntDef Constants";
- }
}};
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/AddMissingPrefixQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/AddMissingPrefixQuickFix.java
index 67e532d9861..2620550e58a 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/AddMissingPrefixQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/AddMissingPrefixQuickFix.java
@@ -17,8 +17,8 @@ package com.android.tools.idea.lint.quickFixes;
import com.android.SdkConstants;
import com.android.tools.idea.lint.AndroidLintBundle;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.PsiElement;
@@ -31,9 +31,13 @@ import com.intellij.xml.XmlNamespaceHelper;
import java.util.Collections;
import org.jetbrains.annotations.NotNull;
-public class AddMissingPrefixQuickFix implements LintIdeQuickFix {
+public class AddMissingPrefixQuickFix extends DefaultLintQuickFix {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.android.inspections.lint.AddMissingPrefixQuickFix");
+ public AddMissingPrefixQuickFix() {
+ super(AndroidLintBundle.message("android.lint.fix.add.android.prefix"));
+ }
+
@Override
public void apply(@NotNull PsiElement startElement, @NotNull PsiElement endElement, @NotNull AndroidQuickfixContexts.Context context) {
final XmlAttribute attribute = PsiTreeUtil.getParentOfType(startElement, XmlAttribute.class, false);
@@ -80,10 +84,4 @@ public class AddMissingPrefixQuickFix implements LintIdeQuickFix {
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return PsiTreeUtil.getParentOfType(startElement, XmlAttribute.class, false) != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.add.android.prefix");
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetApiQuickFix.kt b/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetApiQuickFix.kt
index 3c4a98b5660..4990ebdb659 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetApiQuickFix.kt
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetApiQuickFix.kt
@@ -21,7 +21,7 @@ import com.android.SdkConstants.TOOLS_URI
import com.android.sdklib.SdkVersionInfo
import com.android.tools.idea.lint.AndroidLintBundle
import com.android.tools.idea.lint.common.AndroidQuickfixContexts
-import com.android.tools.idea.lint.common.LintIdeQuickFix
+import com.android.tools.idea.lint.common.DefaultLintQuickFix
import com.android.tools.idea.lint.common.isAnnotationTarget
import com.android.tools.idea.lint.common.isNewLineNeededForAnnotation
import com.android.tools.idea.res.ensureNamespaceImported
@@ -56,7 +56,7 @@ import java.util.Locale
class AddTargetApiQuickFix(private val api: Int,
private val requiresApi: Boolean,
private val element: PsiElement,
- private val requireClass: Boolean = false) : LintIdeQuickFix {
+ private val requireClass: Boolean = false) : DefaultLintQuickFix("") { // overriding getName() below
private fun getAnnotationValue(fullyQualified: Boolean): String {
return AddTargetVersionCheckQuickFix.getVersionField(api, fullyQualified)
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetVersionCheckQuickFix.kt b/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetVersionCheckQuickFix.kt
index 2d2e5d9b03a..b9eafc04a07 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetVersionCheckQuickFix.kt
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/AddTargetVersionCheckQuickFix.kt
@@ -17,7 +17,7 @@ package com.android.tools.idea.lint.quickFixes
import com.android.sdklib.SdkVersionInfo
import com.android.tools.idea.lint.common.AndroidQuickfixContexts
-import com.android.tools.idea.lint.common.LintIdeQuickFix
+import com.android.tools.idea.lint.common.DefaultLintQuickFix
import com.intellij.codeInsight.FileModificationService
import com.intellij.codeInsight.generation.surroundWith.JavaWithIfSurrounder
import com.intellij.codeInspection.JavaSuppressionUtil
@@ -57,11 +57,9 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
/** Fix which surrounds an API warning with a version check */
-class AddTargetVersionCheckQuickFix(private val api: Int) : LintIdeQuickFix {
-
- override fun getName(): String {
- return "Surround with if (VERSION.SDK_INT >= VERSION_CODES.${getVersionField(api, false)}) { ... }"
- }
+class AddTargetVersionCheckQuickFix(private val api: Int) : DefaultLintQuickFix(
+ "Surround with if (VERSION.SDK_INT >= VERSION_CODES.${getVersionField(api, false)}) { ... }"
+) {
override fun isApplicable(startElement: PsiElement,
endElement: PsiElement,
@@ -95,7 +93,7 @@ class AddTargetVersionCheckQuickFix(private val api: Int) : LintIdeQuickFix {
private fun handleKotlin(element: PsiElement) {
val targetExpression = getKotlinTargetExpression(element) ?: return
- val project = targetExpression.project ?: return
+ val project = targetExpression.project
val editor = targetExpression.findExistingEditor() ?: return
val file = targetExpression.containingFile
val documentManager = PsiDocumentManager.getInstance(project)
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertNamespaceQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertNamespaceQuickFix.java
index 62a468bc9e0..48ac47cb0a0 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertNamespaceQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertNamespaceQuickFix.java
@@ -22,15 +22,16 @@ import static com.android.SdkConstants.XMLNS;
import com.android.tools.idea.lint.AndroidLintBundle;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlAttribute;
import com.intellij.psi.xml.XmlTag;
import org.jetbrains.annotations.NotNull;
-public class ConvertNamespaceQuickFix implements LintIdeQuickFix {
+public class ConvertNamespaceQuickFix extends DefaultLintQuickFix {
public ConvertNamespaceQuickFix() {
+ super(AndroidLintBundle.message("android.lint.fix.replace.namespace"));
}
@Override
@@ -56,10 +57,4 @@ public class ConvertNamespaceQuickFix implements LintIdeQuickFix {
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return PsiTreeUtil.getParentOfType(startElement, XmlTag.class) != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.replace.namespace");
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertToDpQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertToDpQuickFix.java
index 0ffed7ff5eb..db3475a26a1 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertToDpQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/ConvertToDpQuickFix.java
@@ -17,8 +17,8 @@ package com.android.tools.idea.lint.quickFixes;
import com.android.resources.Density;
import com.android.tools.idea.lint.AndroidLintBundle;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
@@ -35,12 +35,16 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
-public class ConvertToDpQuickFix implements LintIdeQuickFix {
+public class ConvertToDpQuickFix extends DefaultLintQuickFix {
private static final Logger LOG = Logger.getInstance("#com.android.tools.idea.lint.quickFixes.ConvertToDpQuickFix");
private static final Pattern PX_ATTR_VALUE_PATTERN = Pattern.compile("(\\d+)px");
private static int ourPrevDpi = Density.DEFAULT_DENSITY;
+ public ConvertToDpQuickFix() {
+ super(AndroidLintBundle.message("android.lint.fix.convert.to.dp"));
+ }
+
@Override
public boolean startInWriteAction() {
return false; // Cannot start the write action until after the modal dialog is shown.
@@ -158,10 +162,4 @@ public class ConvertToDpQuickFix implements LintIdeQuickFix {
return contextType != AndroidQuickfixContexts.BatchContext.TYPE &&
PsiTreeUtil.getParentOfType(startElement, XmlTag.class) != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.convert.to.dp");
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/GenerateMotionSceneFix.kt b/android-lint/src/com/android/tools/idea/lint/quickFixes/GenerateMotionSceneFix.kt
index bad6d4f9802..559de610a10 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/GenerateMotionSceneFix.kt
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/GenerateMotionSceneFix.kt
@@ -25,7 +25,7 @@ import com.android.ide.common.rendering.api.ResourceNamespace
import com.android.resources.ResourceType
import com.android.resources.ResourceUrl
import com.android.tools.idea.lint.common.AndroidQuickfixContexts
-import com.android.tools.idea.lint.common.LintIdeQuickFix
+import com.android.tools.idea.lint.common.DefaultLintQuickFix
import com.android.tools.idea.res.ResourceRepositoryManager
import com.android.tools.idea.util.ReformatUtil
import com.intellij.openapi.command.WriteCommandAction
@@ -49,9 +49,7 @@ import java.io.IOException
* <li>Set the layoutDescription attribute on the MotionLayout. </li>
* </ul>
*/
-class GenerateMotionSceneFix(val url: ResourceUrl) : LintIdeQuickFix {
- override fun getName() = "Generate MotionScene file"
-
+class GenerateMotionSceneFix(val url: ResourceUrl) : DefaultLintQuickFix("Generate MotionScene file") {
override fun isApplicable(startElement: PsiElement, endElement: PsiElement, contextType: AndroidQuickfixContexts.ContextType): Boolean {
val facet = AndroidFacet.getInstance(startElement) ?: return false
val appResources = ResourceRepositoryManager.getAppResources(facet)
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/InefficientWeightQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/InefficientWeightQuickFix.java
index dadd8c39c85..dfa4cd8f5c6 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/InefficientWeightQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/InefficientWeightQuickFix.java
@@ -17,14 +17,18 @@ package com.android.tools.idea.lint.quickFixes;
import com.android.SdkConstants;
import com.android.tools.idea.lint.AndroidLintBundle;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlTag;
import org.jetbrains.annotations.NotNull;
-public class InefficientWeightQuickFix implements LintIdeQuickFix {
+public class InefficientWeightQuickFix extends DefaultLintQuickFix {
+
+ public InefficientWeightQuickFix() {
+ super(AndroidLintBundle.message("android.lint.fix.replace.with.zero.dp"));
+ }
@Override
public void apply(@NotNull PsiElement startElement, @NotNull PsiElement endElement, @NotNull AndroidQuickfixContexts.Context context) {
@@ -59,10 +63,4 @@ public class InefficientWeightQuickFix implements LintIdeQuickFix {
}
return tag.getParentTag() != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.replace.with.zero.dp");
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/MigrateDrawableToMipmapFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/MigrateDrawableToMipmapFix.java
index 89ea384ba5f..69878ac88da 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/MigrateDrawableToMipmapFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/MigrateDrawableToMipmapFix.java
@@ -26,7 +26,7 @@ import com.android.resources.ResourceFolderType;
import com.android.resources.ResourceType;
import com.android.resources.ResourceUrl;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.android.tools.idea.res.IdeResourcesUtil;
import com.android.tools.idea.res.LocalResourceRepository;
import com.android.tools.idea.res.ResourceRepositoryManager;
@@ -61,10 +61,11 @@ import org.jetbrains.annotations.NotNull;
* folders into mipmap folders (created if necessary) as well as updating resource references in XML
* and Java files
*/
-public class MigrateDrawableToMipmapFix implements LintIdeQuickFix {
+public class MigrateDrawableToMipmapFix extends DefaultLintQuickFix {
private final ResourceUrl myUrl;
public MigrateDrawableToMipmapFix(@NotNull ResourceUrl url) {
+ super("Convert " + url + " to @mipmap/" + url.name);
myUrl = url;
}
@@ -206,10 +207,4 @@ public class MigrateDrawableToMipmapFix implements LintIdeQuickFix {
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return true;
}
-
- @NotNull
- @Override
- public String getName() {
- return "Convert " + myUrl + " to @mipmap/" + myUrl.name;
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/MoveToDebugManifestQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/MoveToDebugManifestQuickFix.java
index 9a709d25977..3af81352edb 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/MoveToDebugManifestQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/MoveToDebugManifestQuickFix.java
@@ -25,7 +25,7 @@ import com.android.tools.idea.gradle.model.IdeBuildType;
import com.android.tools.idea.gradle.model.IdeBuildTypeContainer;
import com.android.tools.idea.gradle.project.model.AndroidModuleModel;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.android.utils.Pair;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Document;
@@ -54,7 +54,11 @@ import org.jetbrains.annotations.Nullable;
* Quickfix for the {@link com.android.tools.lint.checks.ManifestDetector#MOCK_LOCATION} error, which deletes a mock
* location permission from a non-debug manifest and adds it to a debug specific one (which is created if possible)
*/
-public class MoveToDebugManifestQuickFix implements LintIdeQuickFix {
+public class MoveToDebugManifestQuickFix extends DefaultLintQuickFix {
+ public MoveToDebugManifestQuickFix() {
+ super("Move to debug-specific manifest");
+ }
+
@Override
public void apply(@NotNull PsiElement startElement, @NotNull PsiElement endElement, @NotNull AndroidQuickfixContexts.Context context) {
final XmlAttribute attribute = PsiTreeUtil.getParentOfType(startElement, XmlAttribute.class);
@@ -161,10 +165,4 @@ public class MoveToDebugManifestQuickFix implements LintIdeQuickFix {
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return PsiTreeUtil.getParentOfType(startElement, XmlAttribute.class) != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return "Move to debug-specific manifest";
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/OpenFirebaseAssistantQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/OpenFirebaseAssistantQuickFix.java
index b8aebab0515..a75dca6f05e 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/OpenFirebaseAssistantQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/OpenFirebaseAssistantQuickFix.java
@@ -17,7 +17,7 @@ package com.android.tools.idea.lint.quickFixes;
import com.android.tools.idea.lint.AndroidLintBundle;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.android.tools.idea.project.AndroidNotification;
import com.intellij.ide.DataManager;
import com.intellij.ide.plugins.PluginManagerConfigurable;
@@ -32,7 +32,11 @@ import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
-public class OpenFirebaseAssistantQuickFix implements LintIdeQuickFix {
+public class OpenFirebaseAssistantQuickFix extends DefaultLintQuickFix {
+ public OpenFirebaseAssistantQuickFix() {
+ super(AndroidLintBundle.message("android.lint.fix.open.firebase.assistant"));
+ }
+
@Override
public void apply(@NotNull PsiElement startElement, @NotNull PsiElement endElement, @NotNull AndroidQuickfixContexts.Context context) {
DataManager.getInstance()
@@ -69,10 +73,4 @@ public class OpenFirebaseAssistantQuickFix implements LintIdeQuickFix {
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return startElement.getText().startsWith("'com.google.android.gms:play-services:");
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.open.firebase.assistant");
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/ParcelableQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/ParcelableQuickFix.java
index c7f9ba33ccd..87d98ee90fd 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/ParcelableQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/ParcelableQuickFix.java
@@ -21,7 +21,7 @@ import static com.intellij.psi.CommonClassNames.JAVA_UTIL_ARRAY_LIST;
import static com.intellij.psi.CommonClassNames.JAVA_UTIL_LIST;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.Project;
@@ -69,7 +69,7 @@ import org.jetbrains.annotations.Nullable;
* <li>Remove existing implementation and redo the code generation.</li>
* </ul>
*/
-public class ParcelableQuickFix implements LintIdeQuickFix {
+public class ParcelableQuickFix extends DefaultLintQuickFix {
private static final String CREATOR =
"public static final android.os.Parcelable.Creator<%1$s> CREATOR = new android.os.Parcelable.Creator<%1$s>() {\n" +
" @Override\n" +
@@ -111,20 +111,13 @@ public class ParcelableQuickFix implements LintIdeQuickFix {
REIMPLEMENT,
}
- private final String myName;
private final Operation myOperation;
public ParcelableQuickFix(String name, Operation operation) {
- myName = name;
+ super(name);
myOperation = operation;
}
- @NotNull
- @Override
- public String getName() {
- return myName;
- }
-
@Override
public boolean isApplicable(@NotNull PsiElement startElement,
@NotNull PsiElement endElement,
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveAttributeQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveAttributeQuickFix.java
index 256e39e3fcf..85eea235f35 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveAttributeQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveAttributeQuickFix.java
@@ -1,14 +1,18 @@
package com.android.tools.idea.lint.quickFixes;
import com.android.tools.idea.lint.AndroidLintBundle;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlAttribute;
import org.jetbrains.annotations.NotNull;
-public class RemoveAttributeQuickFix implements LintIdeQuickFix {
+public class RemoveAttributeQuickFix extends DefaultLintQuickFix {
+ public RemoveAttributeQuickFix() {
+ super(AndroidLintBundle.message("android.lint.fix.remove.attribute"));
+ }
+
@Override
public void apply(@NotNull PsiElement startElement, @NotNull PsiElement endElement, @NotNull AndroidQuickfixContexts.Context context) {
final XmlAttribute attribute = PsiTreeUtil.getParentOfType(startElement, XmlAttribute.class);
@@ -23,10 +27,4 @@ public class RemoveAttributeQuickFix implements LintIdeQuickFix {
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return PsiTreeUtil.getParentOfType(startElement, XmlAttribute.class) != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.remove.attribute");
- }
} \ No newline at end of file
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveSdkCheckFix.kt b/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveSdkCheckFix.kt
index e4ed9144d32..0fe7073f17e 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveSdkCheckFix.kt
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveSdkCheckFix.kt
@@ -16,7 +16,7 @@
package com.android.tools.idea.lint.quickFixes
import com.android.tools.idea.lint.common.AndroidQuickfixContexts
-import com.android.tools.idea.lint.common.LintIdeQuickFix
+import com.android.tools.idea.lint.common.DefaultLintQuickFix
import com.intellij.codeInsight.FileModificationService
import com.intellij.psi.PsiElement
import com.intellij.psi.impl.source.tree.TreeElement
@@ -32,7 +32,10 @@ import org.jetbrains.kotlin.psi.KtPsiFactory
* Removes an obsolete if-SDK_INT check. This is only handling Kotlin code since for Java
* we reuse the builtin SimplifyBooleanExpressionFix check.
*/
-class RemoveSdkCheckFix(var removeThen: Boolean) : LintIdeQuickFix {
+class RemoveSdkCheckFix(var removeThen: Boolean) : DefaultLintQuickFix(
+ "Remove obsolete SDK version check",
+ "Remove obsolete SDK version checks"
+) {
override fun apply(startElement: PsiElement, endElement: PsiElement, context: AndroidQuickfixContexts.Context) {
val condition = findSdkConditional(startElement) ?: return
@@ -102,12 +105,4 @@ class RemoveSdkCheckFix(var removeThen: Boolean) : LintIdeQuickFix {
contextType: AndroidQuickfixContexts.ContextType): Boolean {
return true
}
-
- override fun getName(): String {
- return "Remove obsolete SDK version check"
- }
-
- override fun getFamilyName(): String {
- return "Remove obsolete SDK version checks"
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveUselessViewQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveUselessViewQuickFix.java
index f26eda38c86..fdd80b7b905 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveUselessViewQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/RemoveUselessViewQuickFix.java
@@ -16,8 +16,8 @@
package com.android.tools.idea.lint.quickFixes;
import com.android.tools.idea.lint.AndroidLintBundle;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.android.tools.lint.checks.UselessViewDetector;
import com.android.tools.lint.detector.api.Issue;
import com.intellij.openapi.command.WriteCommandAction;
@@ -26,10 +26,11 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlTag;
import org.jetbrains.annotations.NotNull;
-public class RemoveUselessViewQuickFix implements LintIdeQuickFix {
+public class RemoveUselessViewQuickFix extends DefaultLintQuickFix {
private final Issue myIssue;
public RemoveUselessViewQuickFix(@NotNull Issue issue) {
+ super(AndroidLintBundle.message("android.lint.fix.remove.unnecessary.view"));
myIssue = issue;
}
@@ -64,10 +65,4 @@ public class RemoveUselessViewQuickFix implements LintIdeQuickFix {
}
return tag.getParentTag() != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.remove.unnecessary.view");
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/SetScrollViewSizeQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/SetScrollViewSizeQuickFix.java
index 6a1fe297f0c..39128732b34 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/SetScrollViewSizeQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/SetScrollViewSizeQuickFix.java
@@ -17,14 +17,18 @@ package com.android.tools.idea.lint.quickFixes;
import com.android.SdkConstants;
import com.android.tools.idea.lint.AndroidLintBundle;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlTag;
import org.jetbrains.annotations.NotNull;
-public class SetScrollViewSizeQuickFix implements LintIdeQuickFix {
+public class SetScrollViewSizeQuickFix extends DefaultLintQuickFix {
+ public SetScrollViewSizeQuickFix() {
+ super(AndroidLintBundle.message("android.lint.fix.set.to.wrap.content"));
+ }
+
@Override
public void apply(@NotNull PsiElement startElement, @NotNull PsiElement endElement, @NotNull AndroidQuickfixContexts.Context context) {
final XmlTag tag = PsiTreeUtil.getParentOfType(startElement, XmlTag.class);
@@ -54,10 +58,4 @@ public class SetScrollViewSizeQuickFix implements LintIdeQuickFix {
}
return tag.getParentTag() != null;
}
-
- @NotNull
- @Override
- public String getName() {
- return AndroidLintBundle.message("android.lint.fix.set.to.wrap.content");
- }
}
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/UnusedResourcesQuickFix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/UnusedResourcesQuickFix.java
index d9315ad8982..9e0d894cfdc 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/UnusedResourcesQuickFix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/UnusedResourcesQuickFix.java
@@ -15,18 +15,19 @@
*/
package com.android.tools.idea.lint.quickFixes;
+import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
-import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
import org.jetbrains.android.refactoring.UnusedResourcesHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-public class UnusedResourcesQuickFix implements LintIdeQuickFix {
+public class UnusedResourcesQuickFix extends DefaultLintQuickFix {
private final String myResource;
public UnusedResourcesQuickFix(@Nullable String resource) {
+ super(resource != null ? "Remove Declarations for " + resource : "Remove All Unused Resources");
myResource = resource;
}
@@ -43,12 +44,6 @@ public class UnusedResourcesQuickFix implements LintIdeQuickFix {
return true;
}
- @NotNull
- @Override
- public String getName() {
- return myResource != null ? "Remove Declarations for " + myResource : "Remove All Unused Resources";
- }
-
@Override
public boolean startInWriteAction() {
return false;
diff --git a/android-lint/src/com/android/tools/idea/lint/quickFixes/UpgradeAppCompatV7Fix.java b/android-lint/src/com/android/tools/idea/lint/quickFixes/UpgradeAppCompatV7Fix.java
index 25e72c24a6c..35bfe274c8e 100644
--- a/android-lint/src/com/android/tools/idea/lint/quickFixes/UpgradeAppCompatV7Fix.java
+++ b/android-lint/src/com/android/tools/idea/lint/quickFixes/UpgradeAppCompatV7Fix.java
@@ -19,7 +19,7 @@ import static com.android.tools.lint.checks.FontDetector.MIN_APPSUPPORT_VERSION;
import com.android.tools.idea.AndroidPsiUtils;
import com.android.tools.idea.lint.common.AndroidQuickfixContexts;
-import com.android.tools.idea.lint.common.LintIdeQuickFix;
+import com.android.tools.idea.lint.common.DefaultLintQuickFix;
import com.android.tools.idea.lint.common.LintIdeSupport;
import com.intellij.openapi.module.Module;
import com.intellij.psi.PsiElement;
@@ -31,7 +31,11 @@ import org.jetbrains.annotations.Nullable;
* which is the minimum for downloadable font support
* (and also installs it in the local maven repository if necessary)
*/
-public class UpgradeAppCompatV7Fix implements LintIdeQuickFix {
+public class UpgradeAppCompatV7Fix extends DefaultLintQuickFix {
+ public UpgradeAppCompatV7Fix() {
+ super("Upgrade appcompat-v7 to recommended version");
+ }
+
@Override
public void apply(@NotNull PsiElement startElement,
@NotNull PsiElement endElement,
@@ -52,10 +56,4 @@ public class UpgradeAppCompatV7Fix implements LintIdeQuickFix {
@NotNull AndroidQuickfixContexts.ContextType contextType) {
return true;
}
-
- @NotNull
- @Override
- public String getName() {
- return "Upgrade appcompat-v7 to recommended version";
- }
}