Extracted Java code action titles to resources

This commit is contained in:
Akash Yadav
2022-04-12 22:18:51 +05:30
parent df85149bd6
commit 75900028ee
16 changed files with 98 additions and 17 deletions
@@ -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)
@@ -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)
@@ -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
@@ -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("//")) {
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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) {
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<resources>
<string name="action_import_classes">Import class(es)</string>
<string name="action_generate_setters_getters">Generate setters/getters</string>
<string name="action_add_throws">Add \'throws\'</string>
<string name="action_comment_line">Comment line</string>
<string name="action_create_missing_method">Create missing method</string>
<string name="action_convert_to_block">Convert to block</string>
<string name="action_generate_constructor">Generate constructor</string>
<string name="action_implement_abstract_methods">Implement abstract method(s)</string>
<string name="action_remove_class">Remove class</string>
<string name="action_remove_method">Remove method</string>
<string name="action_remove_unused_throws">Remove unused throws</string>
<string name="action_suppress_unchecked_warning">Suppress \'unchecked\' warning</string>
<string name="action_uncomment_line">Uncomment line</string>
<string name="action_convert_to_statement">Convert to statement</string>
</resources>