From 64b6f4680e8a6921f95a697f3ff96066cefa867b Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Wed, 7 Dec 2022 10:13:12 +0530 Subject: [PATCH] refactor: changed signature of ActionData helper functions --- .../itsaky/androidide/actions/ActionItem.kt | 3 +++ .../itsaky/androidide/actions/actionUtils.kt | 19 +++++++++---------- .../lsp/java/actions/BaseJavaCodeAction.kt | 8 ++++---- .../lsp/java/actions/FieldBasedAction.kt | 5 ++--- .../lsp/java/actions/common/CommentAction.kt | 2 +- .../actions/common/FindReferencesAction.kt | 2 +- .../actions/common/GoToDefinitionAction.kt | 2 +- .../actions/common/OrganizeImportsAction.kt | 6 +++--- .../common/RemoveUnusedImportsAction.kt | 6 +++--- .../java/actions/common/UncommentAction.kt | 2 +- .../actions/diagnostics/AddImportAction.kt | 12 ++++++------ .../actions/diagnostics/AddThrowsAction.kt | 6 +++--- .../diagnostics/CreateMissingMethodAction.kt | 6 +++--- .../actions/diagnostics/FieldToBlockAction.kt | 6 +++--- .../ImplementAbstractMethodsAction.kt | 2 +- .../actions/diagnostics/RemoveClassAction.kt | 6 +++--- .../actions/diagnostics/RemoveMethodAction.kt | 6 +++--- .../diagnostics/RemoveUnusedThrowsAction.kt | 6 +++--- .../SuppressUncheckedWarningAction.kt | 6 +++--- .../diagnostics/VariableToStatementAction.kt | 6 +++--- .../generators/GenerateConstructorAction.kt | 4 ++-- .../GenerateMissingConstructorAction.kt | 6 +++--- .../GenerateSettersAndGettersAction.kt | 6 +++--- .../GenerateToStringMethodAction.kt | 6 +++--- .../OverrideSuperclassMethodsAction.kt | 15 +++++++-------- uidesigner/build.gradle | 1 + 26 files changed, 78 insertions(+), 77 deletions(-) diff --git a/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt b/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt index d6cbcdc90..89ff0ff2f 100644 --- a/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt +++ b/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt @@ -77,6 +77,9 @@ interface ActionItem { /** Location marker for action items shown in editor activity's toolbar. */ EDITOR_TOOLBAR("editor.activity.toolbar"), + /** Location marker for action items shown in UI Designer activity's toolbar. */ + UI_DESIGNER_TOOLBAR("editor.activity.toolbar"), + /** Location marker for action items shown in editor's text action menu. */ EDITOR_TEXT_ACTIONS("editor.textActions"), diff --git a/actions/src/main/java/com/itsaky/androidide/actions/actionUtils.kt b/actions/src/main/java/com/itsaky/androidide/actions/actionUtils.kt index 1d524f68b..d3d2afb4b 100644 --- a/actions/src/main/java/com/itsaky/androidide/actions/actionUtils.kt +++ b/actions/src/main/java/com/itsaky/androidide/actions/actionUtils.kt @@ -24,16 +24,16 @@ import io.github.rosemoe.sora.widget.CodeEditor import java.io.File import java.nio.file.Path -fun requireFile(data: ActionData): File { - return data.get(File::class.java) ?: throw IllegalArgumentException("No file instance provided") +fun ActionData.requireFile(): File { + return get(File::class.java) ?: throw IllegalArgumentException("No file instance provided") } -fun requirePath(data: ActionData): Path { - return requireFile(data).toPath() +fun ActionData.requirePath(): Path { + return requireFile().toPath() } -fun requireEditor(data: ActionData): CodeEditor { - return data.get(CodeEditor::class.java) +fun ActionData.requireEditor(): CodeEditor { + return get(CodeEditor::class.java) ?: throw IllegalArgumentException("An editor instance is required but none was provided") } @@ -45,13 +45,12 @@ fun newDialogBuilder(data: ActionData): MaterialAlertDialogBuilder { /** * Checks if the given [ActionData] has instances of the given [types]. * - * @param data The data to check. * @param types The type of objects to look for. - * @return `true` if the [data] has the given [types], `false` otherwise. + * @return `true` if this [ActionData] has the given [types], `false` otherwise. */ -fun hasRequiredData(data: ActionData, vararg types: Class<*>): Boolean { +fun ActionData.hasRequiredData(vararg types: Class<*>): Boolean { for (type in types) { - data.get(type) ?: return false + get(type) ?: return false } return true diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/BaseJavaCodeAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/BaseJavaCodeAction.kt index fef561221..9150171d3 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/BaseJavaCodeAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/BaseJavaCodeAction.kt @@ -49,7 +49,7 @@ abstract class BaseJavaCodeAction : EditorActionItem { override fun prepare(data: ActionData) { if ( - !hasRequiredData(data, Context::class.java, JavaLanguageServer::class.java, File::class.java) + !data.hasRequiredData(Context::class.java, JavaLanguageServer::class.java, File::class.java) ) { markInvisible() return @@ -59,7 +59,7 @@ abstract class BaseJavaCodeAction : EditorActionItem { label = data[Context::class.java]!!.getString(titleTextRes) } - val file = requireFile(data) + val file = data.requireFile() visible = DocumentUtils.isJavaFile(file.toPath()) enabled = visible } @@ -67,10 +67,10 @@ abstract class BaseJavaCodeAction : EditorActionItem { fun performCodeAction(data: ActionData, result: Rewrite) { val server = ILanguageServerRegistry.getDefault().getServer(JavaLanguageServer.SERVER_ID)!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return) val client = server.client!! - val file = requireFile(data) + val file = data.requireFile() client.performCodeAction(file, result.asCodeActions(compiler, label)) } diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/FieldBasedAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/FieldBasedAction.kt index 46b6c92d9..a5eed58c8 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/FieldBasedAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/FieldBasedAction.kt @@ -54,8 +54,7 @@ abstract class FieldBasedAction : BaseJavaCodeAction() { if ( !visible || - !hasRequiredData( - data, + !data.hasRequiredData( com.itsaky.androidide.models.Range::class.java, CodeEditor::class.java ) || @@ -71,7 +70,7 @@ abstract class FieldBasedAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val range = data[com.itsaky.androidide.models.Range::class.java]!! - val file = requirePath(data) + val file = data.requirePath() val module = ProjectManager.findModuleForFile(file) ?: return Any() return JavaCompilerProvider.get(module).compile(file).get { task -> diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/CommentAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/CommentAction.kt index 88639994f..5b8c2817a 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/CommentAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/CommentAction.kt @@ -31,7 +31,7 @@ class CommentAction : BaseJavaCodeAction() { override var requiresUIThread: Boolean = true override fun execAction(data: ActionData): Boolean { - val editor = requireEditor(data) + val editor = data.requireEditor() val text = editor.text val cursor = editor.cursor diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/FindReferencesAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/FindReferencesAction.kt index 298e391d3..ad24c4fa5 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/FindReferencesAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/FindReferencesAction.kt @@ -40,7 +40,7 @@ class FindReferencesAction : BaseJavaCodeAction() { override fun prepare(data: ActionData) { super.prepare(data) - if (!visible || !hasRequiredData(data, CodeEditor::class.java, File::class.java)) { + if (!visible || !data.hasRequiredData( CodeEditor::class.java, File::class.java)) { markInvisible() return } diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/GoToDefinitionAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/GoToDefinitionAction.kt index a61654f12..3f2aef41e 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/GoToDefinitionAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/GoToDefinitionAction.kt @@ -41,7 +41,7 @@ class GoToDefinitionAction : BaseJavaCodeAction() { override fun prepare(data: ActionData) { super.prepare(data) - if (!visible || !hasRequiredData(data, CodeEditor::class.java, File::class.java)) { + if (!visible || !data.hasRequiredData( CodeEditor::class.java, File::class.java)) { markInvisible() return } diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/OrganizeImportsAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/OrganizeImportsAction.kt index aea1ee371..ff7069305 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/OrganizeImportsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/OrganizeImportsAction.kt @@ -25,7 +25,7 @@ class OrganizeImportsAction : BaseJavaCodeAction() { return } - if (!hasRequiredData(data, CodeEditor::class.java)) { + if (!data.hasRequiredData(CodeEditor::class.java)) { markInvisible() return } @@ -37,7 +37,7 @@ class OrganizeImportsAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val watch = com.itsaky.androidide.utils.StopWatch("Organize imports") return try { - val editor = requireEditor(data) + val editor = data.requireEditor() val content = editor.text val server = data[JavaLanguageServer::class.java] val settings = server!!.settings as JavaServerSettings @@ -54,7 +54,7 @@ class OrganizeImportsAction : BaseJavaCodeAction() { super.postExec(data, result) if (result is String) { if (result.isNotEmpty()) { - val editor = requireEditor(data) + val editor = data.requireEditor() editor.setText(result) } } diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/RemoveUnusedImportsAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/RemoveUnusedImportsAction.kt index c8787fe28..3ea190d72 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/RemoveUnusedImportsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/RemoveUnusedImportsAction.kt @@ -24,7 +24,7 @@ class RemoveUnusedImportsAction : BaseJavaCodeAction() { return } - if (!hasRequiredData(data, CodeEditor::class.java)) { + if (!data.hasRequiredData(CodeEditor::class.java)) { markInvisible() return } @@ -36,7 +36,7 @@ class RemoveUnusedImportsAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val watch = com.itsaky.androidide.utils.StopWatch("Remove unused imports") return try { - val editor = requireEditor(data) + val editor = data.requireEditor() val content = editor.text val output = RemoveUnusedImports.removeUnusedImports(content.toString()) watch.log() @@ -49,7 +49,7 @@ class RemoveUnusedImportsAction : BaseJavaCodeAction() { override fun postExec(data: ActionData, result: Any) { if (result is String && result.isNotEmpty()) { - val editor = requireEditor(data) + val editor = data.requireEditor() editor.setText(result) } } diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/UncommentAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/UncommentAction.kt index 1894bf2c9..d486f406d 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/UncommentAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/common/UncommentAction.kt @@ -31,7 +31,7 @@ class UncommentAction : BaseJavaCodeAction() { override var requiresUIThread: Boolean = true override fun execAction(data: ActionData): Boolean { - val editor = requireEditor(data) + val editor = data.requireEditor() val text = editor.text val cursor = editor.cursor diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddImportAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddImportAction.kt index d18ac268d..855bf4677 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddImportAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddImportAction.kt @@ -27,7 +27,6 @@ import com.itsaky.androidide.javac.services.util.JavaDiagnosticUtils import com.itsaky.androidide.lsp.api.ILanguageServerRegistry import com.itsaky.androidide.lsp.java.JavaCompilerProvider import com.itsaky.androidide.lsp.java.JavaLanguageServer -import com.itsaky.androidide.resources.R import com.itsaky.androidide.lsp.java.actions.BaseJavaCodeAction import com.itsaky.androidide.lsp.java.models.DiagnosticCode import com.itsaky.androidide.lsp.java.rewrite.AddImport @@ -35,6 +34,7 @@ import com.itsaky.androidide.lsp.java.rewrite.Rewrite import com.itsaky.androidide.lsp.models.CodeActionItem import com.itsaky.androidide.lsp.models.DiagnosticItem import com.itsaky.androidide.projects.ProjectManager +import com.itsaky.androidide.resources.R import com.itsaky.androidide.utils.ILogger import javax.tools.Diagnostic import javax.tools.JavaFileObject @@ -52,7 +52,7 @@ class AddImportAction : BaseJavaCodeAction() { override fun prepare(data: ActionData) { super.prepare(data) - if (!visible || !hasRequiredData(data, DiagnosticItem::class.java)) { + if (!visible || !data.hasRequiredData(DiagnosticItem::class.java)) { markInvisible() return } @@ -63,7 +63,7 @@ class AddImportAction : BaseJavaCodeAction() { return } - val file = requireFile(data) + val file = data.requireFile() val module = ProjectManager.findModuleForFile(file) ?: run { @@ -108,7 +108,7 @@ class AddImportAction : BaseJavaCodeAction() { JavaDiagnosticUtils.asUnwrapper( data.get(DiagnosticItem::class.java)!!.extra as Diagnostic )!! - val file = requireFile(data) + val file = data.requireFile() val module = ProjectManager.findModuleForFile(file) ?: run { @@ -132,7 +132,7 @@ class AddImportAction : BaseJavaCodeAction() { } titles.add(klass) - rewrites.add(AddImport(requirePath(data), klass)) + rewrites.add(AddImport(data.requirePath(), klass)) } if (rewrites.isEmpty()) { @@ -149,7 +149,7 @@ class AddImportAction : BaseJavaCodeAction() { return } - val file = requireFile(data) + val file = data.requireFile() val module = ProjectManager.findModuleForFile(file) ?: run { diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddThrowsAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddThrowsAction.kt index cc5147636..63ad07f17 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddThrowsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/AddThrowsAction.kt @@ -44,7 +44,7 @@ class AddThrowsAction : BaseJavaCodeAction() { if ( !visible || - !hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) + !data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) ) { markInvisible() return @@ -60,8 +60,8 @@ class AddThrowsAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val diagnostic = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { task -> val needsThrow = CodeActionUtils.findMethod(task, diagnostic.range) val exceptionName = CodeActionUtils.extractExceptionName(diagnostic.message) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/CreateMissingMethodAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/CreateMissingMethodAction.kt index 53f71569a..86187fcbe 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/CreateMissingMethodAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/CreateMissingMethodAction.kt @@ -44,7 +44,7 @@ class CreateMissingMethodAction : BaseJavaCodeAction() { if ( !visible || - !hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) + !data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) ) { markInvisible() return @@ -60,8 +60,8 @@ class CreateMissingMethodAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val diagnostic = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { CreateMissingMethod(file, findPosition(it, diagnostic.range.start)) } diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/FieldToBlockAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/FieldToBlockAction.kt index 0bcd0018b..acbffbcac 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/FieldToBlockAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/FieldToBlockAction.kt @@ -48,7 +48,7 @@ class FieldToBlockAction : BaseJavaCodeAction() { return } - if (!hasRequiredData(data, DiagnosticItem::class.java)) { + if (!data.hasRequiredData( DiagnosticItem::class.java)) { markInvisible() return } @@ -62,9 +62,9 @@ class FieldToBlockAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) val diagnostic = data[DiagnosticItem::class.java]!! - val file = requirePath(data) + val file = data.requirePath() return compiler.compile(file).get { ConvertFieldToBlock(file, findPosition(it, diagnostic.range.start)) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/ImplementAbstractMethodsAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/ImplementAbstractMethodsAction.kt index e1546a93e..ccdb9f0f7 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/ImplementAbstractMethodsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/ImplementAbstractMethodsAction.kt @@ -45,7 +45,7 @@ class ImplementAbstractMethodsAction : BaseJavaCodeAction() { return } - if (!hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { + if (!data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { markInvisible() return } diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveClassAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveClassAction.kt index 30cd68f00..a1413d4ab 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveClassAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveClassAction.kt @@ -42,7 +42,7 @@ class RemoveClassAction : BaseJavaCodeAction() { override fun prepare(data: ActionData) { super.prepare(data) - if (!visible || !hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { + if (!visible || !data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { markInvisible() return } @@ -57,8 +57,8 @@ class RemoveClassAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val diagnostic = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { RemoveClass(file, findPosition(it, diagnostic.range.start)) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveMethodAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveMethodAction.kt index 9d99e9717..dff04bc96 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveMethodAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveMethodAction.kt @@ -42,7 +42,7 @@ class RemoveMethodAction : BaseJavaCodeAction() { override fun prepare(data: ActionData) { super.prepare(data) - if (!visible || !hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { + if (!visible || !data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { markInvisible() return } @@ -57,8 +57,8 @@ class RemoveMethodAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val diagnostic = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { val unusedMethod = findMethod(it, diagnostic.range) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveUnusedThrowsAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveUnusedThrowsAction.kt index 346fc5f98..40dcc65de 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveUnusedThrowsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/RemoveUnusedThrowsAction.kt @@ -44,7 +44,7 @@ class RemoveUnusedThrowsAction : BaseJavaCodeAction() { if ( !visible || - !hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) + !data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) ) { markInvisible() return @@ -60,8 +60,8 @@ class RemoveUnusedThrowsAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val d = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { task -> val notThrown = CodeActionUtils.extractNotThrownExceptionName(d.message) val methodWithExtraThrow = CodeActionUtils.findMethod(task, d.range) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/SuppressUncheckedWarningAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/SuppressUncheckedWarningAction.kt index 8019c8bb6..0d66f9532 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/SuppressUncheckedWarningAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/SuppressUncheckedWarningAction.kt @@ -42,7 +42,7 @@ class SuppressUncheckedWarningAction : BaseJavaCodeAction() { override fun prepare(data: ActionData) { super.prepare(data) - if (!visible || !hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { + if (!visible || !data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { markInvisible() return } @@ -57,8 +57,8 @@ class SuppressUncheckedWarningAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val diagnostic = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { task -> val warnedMethod = CodeActionUtils.findMethod(task, diagnostic.range) return@get AddSuppressWarningAnnotation( diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/VariableToStatementAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/VariableToStatementAction.kt index 2d89b27fa..8dfebcc5f 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/VariableToStatementAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/diagnostics/VariableToStatementAction.kt @@ -47,7 +47,7 @@ class VariableToStatementAction : BaseJavaCodeAction() { return } - if (!hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { + if (!data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java)) { markInvisible() return } @@ -65,8 +65,8 @@ class VariableToStatementAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val diagnostic = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val path = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val path = data.requirePath() return compiler.compile(path).get { ConvertVariableToStatement(path, findPosition(it, diagnostic.range.start)) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateConstructorAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateConstructorAction.kt index ba7f7cf7c..84f949cce 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateConstructorAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateConstructorAction.kt @@ -72,9 +72,9 @@ class GenerateConstructorAction : FieldBasedAction() { private fun generateConstructor(data: ActionData, selected: MutableSet) { val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return) val range = data[com.itsaky.androidide.models.Range::class.java]!! - val file = requirePath(data) + val file = data.requirePath() compiler.compile(file).run { task -> val triple = findFields(task, file, range) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateMissingConstructorAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateMissingConstructorAction.kt index a8fb521e1..1f01f6c89 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateMissingConstructorAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateMissingConstructorAction.kt @@ -43,7 +43,7 @@ class GenerateMissingConstructorAction : BaseJavaCodeAction() { if ( !visible || - !hasRequiredData(data, com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) + !data.hasRequiredData( com.itsaky.androidide.lsp.models.DiagnosticItem::class.java) ) { markInvisible() return @@ -59,8 +59,8 @@ class GenerateMissingConstructorAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val diagnostic = data[com.itsaky.androidide.lsp.models.DiagnosticItem::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { task -> val needsConstructor = CodeActionUtils.findClassNeedingConstructor(task, diagnostic.range) ?: return@get false diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateSettersAndGettersAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateSettersAndGettersAction.kt index 1a7ca8d9f..33fdbc967 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateSettersAndGettersAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateSettersAndGettersAction.kt @@ -82,9 +82,9 @@ class GenerateSettersAndGettersAction : FieldBasedAction() { private fun generateForFields(data: ActionData, names: MutableSet) { val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return) val range = data[com.itsaky.androidide.models.Range::class.java]!! - val file = requirePath(data) + val file = data.requirePath() compiler.compile(file).run { task -> val triple = findFields(task, file, range) @@ -106,7 +106,7 @@ class GenerateSettersAndGettersAction : FieldBasedAction() { type: ClassTree, paths: List, ) { - val file = requirePath(data) + val file = data.requirePath() val editor = data[CodeEditor::class.java]!! val trees = Trees.instance(task.task) val insert = EditHelper.insertAtEndOfClass(task.task, task.root(file), type) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateToStringMethodAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateToStringMethodAction.kt index 504e41765..b81012197 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateToStringMethodAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/GenerateToStringMethodAction.kt @@ -80,9 +80,9 @@ class GenerateToStringMethodAction : FieldBasedAction() { private fun generateToString(data: ActionData, selected: MutableSet) { val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return) val range = data[com.itsaky.androidide.models.Range::class.java]!! - val file = requirePath(data) + val file = data.requirePath() compiler.compile(file).run { task -> val triple = findFields(task, file, range) @@ -112,7 +112,7 @@ class GenerateToStringMethodAction : FieldBasedAction() { return } - val file = requirePath(data) + val file = data.requirePath() val editor = data[CodeEditor::class.java]!! val trees = JavacTrees.instance(task.task) val indent = EditHelper.indent(task.task, task.root(), type) + 4 diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/OverrideSuperclassMethodsAction.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/OverrideSuperclassMethodsAction.kt index f216bc76c..8cab3a52e 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/OverrideSuperclassMethodsAction.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/actions/generators/OverrideSuperclassMethodsAction.kt @@ -71,8 +71,7 @@ class OverrideSuperclassMethodsAction : BaseJavaCodeAction() { if ( !visible || - !hasRequiredData( - data, + !data.hasRequiredData( com.itsaky.androidide.models.Range::class.java, CodeEditor::class.java ) @@ -88,8 +87,8 @@ class OverrideSuperclassMethodsAction : BaseJavaCodeAction() { override fun execAction(data: ActionData): Any { val range = data[com.itsaky.androidide.models.Range::class.java]!! val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return Any()) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return Any()) + val file = data.requirePath() return compiler.compile(file).get { task -> // 1-based line and column index @@ -201,8 +200,8 @@ class OverrideSuperclassMethodsAction : BaseJavaCodeAction() { private fun overrideMethods(data: ActionData, checkedMethods: MutableList) { val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return) - val file = requirePath(data) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return) + val file = data.requirePath() compiler.compile(file).run { task -> val types = task.task.types @@ -267,9 +266,9 @@ class OverrideSuperclassMethodsAction : BaseJavaCodeAction() { position: com.itsaky.androidide.models.Position, ) { val compiler = - JavaCompilerProvider.get(ProjectManager.findModuleForFile(requireFile(data)) ?: return) + JavaCompilerProvider.get(ProjectManager.findModuleForFile(data.requireFile()) ?: return) val editor = data[CodeEditor::class.java]!! - val file = requirePath(data) + val file = data.requirePath() val text = editor.text text.beginBatchEdit() diff --git a/uidesigner/build.gradle b/uidesigner/build.gradle index cc687e38b..e414230f0 100644 --- a/uidesigner/build.gradle +++ b/uidesigner/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation common.utilcode implementation google.material + implementation project(path: ':actions') implementation project(path: ':common') implementation project(path: ':logger') implementation project(path: ':lookup')