diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddImportAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddImportAction.kt index b4fe46732..bf1a01692 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddImportAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddImportAction.kt @@ -21,6 +21,7 @@ import com.google.common.collect.Iterables.toArray import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.AddImport import com.itsaky.lsp.java.rewrite.Rewrite import com.itsaky.lsp.java.utils.JavaDiagnosticUtils @@ -30,13 +31,15 @@ import javax.tools.Diagnostic import javax.tools.JavaFileObject /** @author Akash Yadav */ -class AddImportAction : BaseCodeAction() { +class AddImportAction() : BaseCodeAction() { + override val id: String = "lsp_java_addImport" override var label: String = "Import class(es)" private val diagnosticCode = "compiler.err.cant.resolve.location" - private val log = Logger.newInstance("AddImportAction") + override val titleTextRes: Int = R.string.action_import_classes + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddThrowsAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddThrowsAction.kt index 9d45be329..61c90bf90 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddThrowsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/AddThrowsAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.AddException import com.itsaky.lsp.java.utils.CodeActionUtils import com.itsaky.lsp.models.DiagnosticItem @@ -27,10 +28,12 @@ import com.itsaky.lsp.models.DiagnosticItem /** @author Akash Yadav */ class AddThrowsAction : BaseCodeAction() { override val id = "lsp_java_addThrows" - override var label: String = "Add 'throws'" + override var label: String = "" private val diagnosticCode = "compiler.err.unreported.exception.need.to.catch.or.throw" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_add_throws + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/BaseCodeAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/BaseCodeAction.kt index 62570dae5..7f24e32fe 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/BaseCodeAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/BaseCodeAction.kt @@ -39,13 +39,20 @@ abstract class BaseCodeAction : ActionItem { override var requiresUIThread: Boolean = false override var location: ActionItem.Location = ActionItem.Location.EDITOR_CODE_ACTIONS + protected abstract val titleTextRes: Int + override fun prepare(data: ActionData) { - if (!hasRequiredData(data, JavaLanguageServer::class.java, File::class.java)) { + if (!hasRequiredData( + data, Context::class.java, JavaLanguageServer::class.java, File::class.java)) { markInvisible() return } + if (titleTextRes != -1) { + label = data[Context::class.java]!!.getString(titleTextRes) + } + val file = requireFile(data) visible = FileStore.isJavaFile(file.toPath()) enabled = visible diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CommentAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CommentAction.kt index b0a501f1c..e7eb27553 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CommentAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CommentAction.kt @@ -18,18 +18,21 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData +import com.itsaky.lsp.java.R /** @author Akash Yadav */ class CommentAction : BaseCodeAction() { override val id: String = "lsp_java_commentLine" - override var label: String = "Comment line" + override var label: String = "" + + override val titleTextRes: Int = R.string.action_comment_line override fun execAction(data: ActionData): Boolean { val editor = requireEditor(data) val text = editor.text val cursor = editor.cursor var line = cursor.leftLine - + text.beginBatchEdit() while (line >= cursor.leftLine && line <= cursor.rightLine) { if (!text.getLineString(line).trim { it <= ' ' }.startsWith("//")) { diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CreateMissingMethodAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CreateMissingMethodAction.kt index 791a2ad31..3a51f5eab 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CreateMissingMethodAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/CreateMissingMethodAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.CreateMissingMethod import com.itsaky.lsp.java.utils.CodeActionUtils.findPosition import com.itsaky.lsp.models.DiagnosticItem @@ -27,10 +28,12 @@ import com.itsaky.lsp.models.DiagnosticItem /** @author Akash Yadav */ class CreateMissingMethodAction : BaseCodeAction() { override val id: String = "lsp_java_createMissingMethod" - override var label: String = "Create missing method" + override var label: String = "" private val diagnosticCode = "compiler.err.cant.resolve.location.args" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_create_missing_method + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/FieldToBlockAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/FieldToBlockAction.kt index 954746f25..379009c10 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/FieldToBlockAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/FieldToBlockAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.ConvertFieldToBlock import com.itsaky.lsp.java.utils.CodeActionUtils.findPosition import com.itsaky.lsp.models.DiagnosticItem @@ -28,10 +29,12 @@ import com.itsaky.lsp.models.DiagnosticItem class FieldToBlockAction : BaseCodeAction() { override val id: String = "lsp_java_fieldToBlock" - override var label: String = "Convert to block" + override var label: String = "" private val diagnosticCode = "unused_field" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_convert_to_block + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateConstructorAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateConstructorAction.kt index 6eb6ad1a4..89be7b9f7 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateConstructorAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateConstructorAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.GenerateRecordConstructor import com.itsaky.lsp.java.utils.CodeActionUtils import com.itsaky.lsp.models.DiagnosticItem @@ -27,9 +28,10 @@ import com.itsaky.lsp.models.DiagnosticItem /** @author Akash Yadav */ class GenerateConstructorAction : BaseCodeAction() { override val id = "lsp_java_generateConstructor" - override var label: String = "Generate constructor" + override var label: String = "" private val diagnosticCode = "compiler.err.var.not.initialized.in.default.constructor" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_generate_constructor override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateSettersAndGettersAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateSettersAndGettersAction.kt index b7d422740..2fae9cfd1 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateSettersAndGettersAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/GenerateSettersAndGettersAction.kt @@ -22,6 +22,7 @@ import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.app.BaseApplication import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.compiler.CompileTask import com.itsaky.lsp.java.utils.EditHelper import com.itsaky.lsp.java.utils.JavaPoetUtils.Companion.print @@ -44,9 +45,11 @@ import javax.lang.model.element.VariableElement /** @author Akash Yadav */ class GenerateSettersAndGettersAction : BaseCodeAction() { override val id: String = "lsp_java_generateSettersAndGetters" - override var label: String = "Generate setters/getters" + override var label: String = "" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_generate_setters_getters + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/ImplementAbstractMethodsAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/ImplementAbstractMethodsAction.kt index dc157d616..2386e7184 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/ImplementAbstractMethodsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/ImplementAbstractMethodsAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.ImplementAbstractMethods import com.itsaky.lsp.java.utils.JavaDiagnosticUtils import com.itsaky.lsp.models.DiagnosticItem @@ -30,10 +31,12 @@ import javax.tools.JavaFileObject /** @author Akash Yadav */ class ImplementAbstractMethodsAction : BaseCodeAction() { override val id: String = "lsp_java_implementAbstractMethods" - override var label: String = "Implement abstract method(s)" + override var label: String = "" private var diagnosticCode = "compiler.err.does.not.override.abstract" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_implement_abstract_methods + @Suppress("UNCHECKED_CAST") override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveClassAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveClassAction.kt index c0da9f83c..56e9d8400 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveClassAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveClassAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.RemoveClass import com.itsaky.lsp.java.utils.CodeActionUtils.findPosition import com.itsaky.lsp.models.DiagnosticItem @@ -27,10 +28,12 @@ import com.itsaky.lsp.models.DiagnosticItem /** @author Akash Yadav */ class RemoveClassAction : BaseCodeAction() { override val id: String = "lsp_java_removeClass" - override var label: String = "Remove class" + override var label: String = "" private val diagnosticCode = "unused_class" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_remove_class + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveMethodAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveMethodAction.kt index d349aa78c..4ebf9f018 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveMethodAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveMethodAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.RemoveMethod import com.itsaky.lsp.java.utils.CodeActionUtils.findMethod import com.itsaky.lsp.models.DiagnosticItem @@ -27,10 +28,12 @@ import com.itsaky.lsp.models.DiagnosticItem /** @author Akash Yadav */ class RemoveMethodAction : BaseCodeAction() { override val id: String = "lsp_java_removeMethod" - override var label: String = "Remove method" + override var label: String = "" private val diagnosticCode = "unused_method" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_remove_method + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveUnusedThrowsAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveUnusedThrowsAction.kt index 7a50898d3..c6e84c795 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveUnusedThrowsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/RemoveUnusedThrowsAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.RemoveException import com.itsaky.lsp.java.utils.CodeActionUtils import com.itsaky.lsp.models.DiagnosticItem @@ -27,10 +28,12 @@ import com.itsaky.lsp.models.DiagnosticItem /** @author Akash Yadav */ class RemoveUnusedThrowsAction : BaseCodeAction() { override val id: String = "lsp_java_removeUnusedThrows" - override var label: String = "Remove unused throws" + override var label: String = "" private val diagnosticCode = "unused_throws" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_remove_unused_throws + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/SuppressUncheckedWarningAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/SuppressUncheckedWarningAction.kt index 466289bfa..80b83650b 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/SuppressUncheckedWarningAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/SuppressUncheckedWarningAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.AddSuppressWarningAnnotation import com.itsaky.lsp.java.utils.CodeActionUtils import com.itsaky.lsp.models.DiagnosticItem @@ -27,10 +28,12 @@ import com.itsaky.lsp.models.DiagnosticItem /** @author Akash Yadav */ class SuppressUncheckedWarningAction : BaseCodeAction() { override val id = "lsp_java_suppressUncheckedWarning" - override var label: String = "Suppress 'unchecked' warning" + override var label: String = "" private val diagnosticCode = "compiler.warn.unchecked.call.mbr.of.raw.type" private val log = Logger.newInstance(javaClass.simpleName) + override val titleTextRes: Int = R.string.action_suppress_unchecked_warning + override fun prepare(data: ActionData) { super.prepare(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/UncommentAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/UncommentAction.kt index d2a43e7bc..0d15e515f 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/UncommentAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/UncommentAction.kt @@ -18,11 +18,14 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData +import com.itsaky.lsp.java.R /** @author Akash Yadav */ class UncommentAction : BaseCodeAction() { override val id: String = "lsp_java_uncommentLine" - override var label: String = "Uncomment line" + override var label: String = "" + + override val titleTextRes: Int = R.string.action_uncomment_line override fun execAction(data: ActionData): Boolean { val editor = requireEditor(data) diff --git a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/VariableToStatementAction.kt b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/VariableToStatementAction.kt index 380cb877a..8a5b7c4c6 100644 --- a/lsp/java/src/main/java/com/itsaky/lsp/java/actions/VariableToStatementAction.kt +++ b/lsp/java/src/main/java/com/itsaky/lsp/java/actions/VariableToStatementAction.kt @@ -20,6 +20,7 @@ package com.itsaky.lsp.java.actions import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.utils.Logger import com.itsaky.lsp.java.JavaLanguageServer +import com.itsaky.lsp.java.R import com.itsaky.lsp.java.rewrite.ConvertVariableToStatement import com.itsaky.lsp.java.utils.CodeActionUtils.findPosition import com.itsaky.lsp.models.DiagnosticItem @@ -28,9 +29,11 @@ import java.io.File /** @author Akash Yadav */ class VariableToStatementAction : BaseCodeAction() { override val id: String = "lsp_java_variableToStatement" - override var label: String = "Convert to statement" + override var label: String = "" private val diagnosticCode = "unused_local" private val log = Logger.newInstance(javaClass.simpleName) + + override val titleTextRes: Int = R.string.action_convert_to_statement @Suppress("UNCHECKED_CAST") override fun prepare(data: ActionData) { diff --git a/lsp/java/src/main/res/values/strings.xml b/lsp/java/src/main/res/values/strings.xml new file mode 100644 index 000000000..5de71c581 --- /dev/null +++ b/lsp/java/src/main/res/values/strings.xml @@ -0,0 +1,33 @@ + + + + Import class(es) + Generate setters/getters + Add \'throws\' + Comment line + Create missing method + Convert to block + Generate constructor + Implement abstract method(s) + Remove class + Remove method + Remove unused throws + Suppress \'unchecked\' warning + Uncomment line + Convert to statement + \ No newline at end of file