From 7e64533302c0cf7980b49ba6d8f461c0d4d56ab3 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Tue, 7 Nov 2023 23:46:37 +0530 Subject: [PATCH] fix(actions): make ActionItem visible and enabled by default --- .../main/java/com/itsaky/androidide/actions/ActionItem.kt | 7 ++++++- .../itsaky/androidide/actions/locations/CodeActionsMenu.kt | 1 + .../java/com/itsaky/androidide/actions/BaseBuildAction.kt | 1 + .../java/com/itsaky/androidide/actions/BaseEditorAction.kt | 1 + .../com/itsaky/androidide/actions/EditorActivityAction.kt | 1 + .../com/itsaky/androidide/actions/EditorRelatedAction.kt | 2 ++ .../actions/build/QuickRunWithCancellationAction.kt | 2 +- .../itsaky/androidide/actions/editor/LongSelectAction.kt | 1 + .../androidide/actions/etc/DisconnectLogSendersAction.kt | 1 + .../com/itsaky/androidide/actions/etc/FileTreeAction.kt | 5 ----- .../com/itsaky/androidide/actions/etc/FindActionMenu.kt | 2 ++ .../itsaky/androidide/actions/etc/FindInProjectAction.kt | 1 + .../com/itsaky/androidide/actions/etc/LaunchAppAction.kt | 1 + .../com/itsaky/androidide/actions/file/SaveFileAction.kt | 2 +- .../androidide/actions/filetree/BaseDirNodeAction.kt | 1 + .../androidide/actions/filetree/BaseFileTreeAction.kt | 1 + .../androidide/actions/sidebar/AbstractSidebarAction.kt | 5 ----- .../androidide/lsp/java/actions/BaseJavaCodeAction.kt | 1 + .../java/actions/diagnostics/VariableToStatementAction.kt | 1 - .../com/itsaky/androidide/uidesigner/actions/RedoAction.kt | 1 + .../androidide/uidesigner/actions/ShowHierarchyAction.kt | 1 + .../itsaky/androidide/uidesigner/actions/ShowXmlAction.kt | 1 + .../androidide/uidesigner/actions/UiDesignerAction.kt | 1 + .../com/itsaky/androidide/uidesigner/actions/UndoAction.kt | 1 + 24 files changed, 28 insertions(+), 14 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 aac90c823..0ef3b4eca 100644 --- a/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt +++ b/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt @@ -23,6 +23,7 @@ import android.graphics.PorterDuffColorFilter import android.graphics.drawable.Drawable import android.view.Menu import android.view.View +import androidx.annotation.CallSuper import com.itsaky.androidide.utils.resolveAttr /** @@ -87,7 +88,11 @@ interface ActionItem { * * @param data The data containing various information about the event. */ - fun prepare(data: ActionData) + @CallSuper + fun prepare(data: ActionData) { + visible = true + enabled = true + } /** * Execute the action. The action executed in a background thread by default. diff --git a/actions/src/main/java/com/itsaky/androidide/actions/locations/CodeActionsMenu.kt b/actions/src/main/java/com/itsaky/androidide/actions/locations/CodeActionsMenu.kt index d1d96bc92..017e95121 100644 --- a/actions/src/main/java/com/itsaky/androidide/actions/locations/CodeActionsMenu.kt +++ b/actions/src/main/java/com/itsaky/androidide/actions/locations/CodeActionsMenu.kt @@ -42,6 +42,7 @@ object CodeActionsMenu : ActionMenu { override var location: ActionItem.Location = ActionItem.Location.EDITOR_TEXT_ACTIONS override fun prepare(data: ActionData) { + super.prepare(data) if (icon == null) { icon = ContextCompat.getDrawable(data[Context::class.java]!!, R.drawable.ic_code) } diff --git a/app/src/main/java/com/itsaky/androidide/actions/BaseBuildAction.kt b/app/src/main/java/com/itsaky/androidide/actions/BaseBuildAction.kt index 97d72766d..0dc30063e 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/BaseBuildAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/BaseBuildAction.kt @@ -33,6 +33,7 @@ abstract class BaseBuildAction : EditorActivityAction() { get() = Lookup.getDefault().lookup(BuildService.KEY_BUILD_SERVICE) override fun prepare(data: ActionData) { + super.prepare(data) val context = data.getActivity() if (context == null) { visible = false diff --git a/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt b/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt index 37b69d7c5..496ed7d8f 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt @@ -33,6 +33,7 @@ abstract class BaseEditorAction : EditorActionItem { override var location: ActionItem.Location = ActionItem.Location.EDITOR_TEXT_ACTIONS override fun prepare(data: ActionData) { + super.prepare(data) getEditor(data) ?: kotlin.run { visible = false diff --git a/app/src/main/java/com/itsaky/androidide/actions/EditorActivityAction.kt b/app/src/main/java/com/itsaky/androidide/actions/EditorActivityAction.kt index 55792ed00..900e4deb2 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/EditorActivityAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/EditorActivityAction.kt @@ -41,6 +41,7 @@ abstract class EditorActivityAction : ActionItem { CoroutineName("${javaClass.simpleName}Scope") override fun prepare(data: ActionData) { + super.prepare(data) if (!data.hasRequiredData(Context::class.java)) { markInvisible() } diff --git a/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt b/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt index ea5c7dd5e..3e4a1400c 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt @@ -26,6 +26,8 @@ abstract class EditorRelatedAction : EditorActivityAction(), EditorActionItem { override var requiresUIThread: Boolean = true override fun prepare(data: ActionData) { + super.prepare(data) + super.prepare(data) val editor = data.getEditor() ?: run { diff --git a/app/src/main/java/com/itsaky/androidide/actions/build/QuickRunWithCancellationAction.kt b/app/src/main/java/com/itsaky/androidide/actions/build/QuickRunWithCancellationAction.kt index 033e70c6b..b9a40f791 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/build/QuickRunWithCancellationAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/build/QuickRunWithCancellationAction.kt @@ -67,7 +67,7 @@ class QuickRunWithCancellationAction(context: Context, override val order: Int) override var requiresUIThread: Boolean = true override fun prepare(data: ActionData) { - + super.prepare(data) val context = data.getActivity() ?: run { markInvisible() return diff --git a/app/src/main/java/com/itsaky/androidide/actions/editor/LongSelectAction.kt b/app/src/main/java/com/itsaky/androidide/actions/editor/LongSelectAction.kt index a7dda7933..771d3cd7b 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/editor/LongSelectAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/editor/LongSelectAction.kt @@ -41,6 +41,7 @@ class LongSelectAction(context: Context, override val order: Int) : EditorRelate } override fun prepare(data: ActionData) { + super.prepare(data) data.getEditor() ?: markInvisible() } diff --git a/app/src/main/java/com/itsaky/androidide/actions/etc/DisconnectLogSendersAction.kt b/app/src/main/java/com/itsaky/androidide/actions/etc/DisconnectLogSendersAction.kt index 525d03251..33df98b3a 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/etc/DisconnectLogSendersAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/etc/DisconnectLogSendersAction.kt @@ -40,6 +40,7 @@ class DisconnectLogSendersAction(context: Context, override val order: Int) : Ed } override fun prepare(data: ActionData) { + super.prepare(data) data.getActivity() ?: run { markInvisible() return diff --git a/app/src/main/java/com/itsaky/androidide/actions/etc/FileTreeAction.kt b/app/src/main/java/com/itsaky/androidide/actions/etc/FileTreeAction.kt index cf70e294c..78798dfcb 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/etc/FileTreeAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/etc/FileTreeAction.kt @@ -36,11 +36,6 @@ class FileTreeAction(context: Context, override val order: Int) : EditorActivity icon = ContextCompat.getDrawable(context, R.drawable.ic_folder) } - override fun prepare(data: ActionData) { - visible = true - enabled = true - } - override suspend fun execAction(data: ActionData): Boolean { val context = data.getActivity() ?: return false diff --git a/app/src/main/java/com/itsaky/androidide/actions/etc/FindActionMenu.kt b/app/src/main/java/com/itsaky/androidide/actions/etc/FindActionMenu.kt index 3318b310f..115e79464 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/etc/FindActionMenu.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/etc/FindActionMenu.kt @@ -40,6 +40,8 @@ class FindActionMenu(context: Context, override val order: Int) : EditorActivity } override fun prepare(data: ActionData) { + super.prepare(data) + super.prepare(data) visible = true enabled = children.size > 0 } diff --git a/app/src/main/java/com/itsaky/androidide/actions/etc/FindInProjectAction.kt b/app/src/main/java/com/itsaky/androidide/actions/etc/FindInProjectAction.kt index 34af2a403..2af6d864d 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/etc/FindInProjectAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/etc/FindInProjectAction.kt @@ -40,6 +40,7 @@ class FindInProjectAction() : EditorActivityAction() { override val id: String = "ide.editor.find.inProject" override fun prepare(data: ActionData) { + super.prepare(data) data.getActivity() ?: run { markInvisible() diff --git a/app/src/main/java/com/itsaky/androidide/actions/etc/LaunchAppAction.kt b/app/src/main/java/com/itsaky/androidide/actions/etc/LaunchAppAction.kt index ad01e2d3b..befba6da2 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/etc/LaunchAppAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/etc/LaunchAppAction.kt @@ -47,6 +47,7 @@ class LaunchAppAction(context: Context, override val order: Int) : EditorActivit } override fun prepare(data: ActionData) { + super.prepare(data) data.getActivity() ?: run { markInvisible() return diff --git a/app/src/main/java/com/itsaky/androidide/actions/file/SaveFileAction.kt b/app/src/main/java/com/itsaky/androidide/actions/file/SaveFileAction.kt index 87f6b620b..9bbd2ecda 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/file/SaveFileAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/file/SaveFileAction.kt @@ -44,7 +44,7 @@ class SaveFileAction(context: Context, override val order: Int) : EditorRelatedA } override fun prepare(data: ActionData) { - + super.prepare(data) val context = data.getActivity() ?: run { diff --git a/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseDirNodeAction.kt b/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseDirNodeAction.kt index cc02671ae..1244c9141 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseDirNodeAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseDirNodeAction.kt @@ -34,6 +34,7 @@ abstract class BaseDirNodeAction(context: Context, @DrawableRes iconRes: Int? = null) : BaseFileTreeAction(context, labelRes, iconRes) { override fun prepare(data: ActionData) { + super.prepare(data) if (!data.hasFileTreeData()) { markInvisible() return diff --git a/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseFileTreeAction.kt b/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseFileTreeAction.kt index 19c4dbf15..08b891715 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseFileTreeAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/filetree/BaseFileTreeAction.kt @@ -53,6 +53,7 @@ abstract class BaseFileTreeAction( } override fun prepare(data: ActionData) { + super.prepare(data) if (!data.hasFileTreeData()) { markInvisible() return diff --git a/app/src/main/java/com/itsaky/androidide/actions/sidebar/AbstractSidebarAction.kt b/app/src/main/java/com/itsaky/androidide/actions/sidebar/AbstractSidebarAction.kt index a59dc0010..998a0e47e 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/sidebar/AbstractSidebarAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/sidebar/AbstractSidebarAction.kt @@ -18,7 +18,6 @@ package com.itsaky.androidide.actions.sidebar import android.graphics.drawable.Drawable -import android.view.Menu import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.actions.ActionItem import com.itsaky.androidide.actions.SidebarActionItem @@ -41,10 +40,6 @@ abstract class AbstractSidebarAction : SidebarActionItem { override var icon: Drawable? = null override var label: String = "" - // should not be needed - override fun prepare(data: ActionData) { - } - override suspend fun execAction(data: ActionData): Any { return false } 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 9cae8d15d..abac28fd8 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 @@ -54,6 +54,7 @@ abstract class BaseJavaCodeAction : EditorActionItem { protected abstract val titleTextRes: Int override fun prepare(data: ActionData) { + super.prepare(data) if ( !data.hasRequiredData(Context::class.java, JavaLanguageServer::class.java, File::class.java) ) { 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 6bf4f61b8..5fff3e8c1 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 @@ -39,7 +39,6 @@ class VariableToStatementAction : BaseJavaCodeAction() { override val titleTextRes: Int = R.string.action_convert_to_statement - @Suppress("UNCHECKED_CAST") override fun prepare(data: ActionData) { super.prepare(data) diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/RedoAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/RedoAction.kt index 81079aec2..879cc1baf 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/RedoAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/RedoAction.kt @@ -37,6 +37,7 @@ class RedoAction(context: Context) : UiDesignerAction() { } override fun prepare(data: ActionData) { + super.prepare(data) visible = true enabled = data.requireWorkspace().undoManager.canRedo() } diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowHierarchyAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowHierarchyAction.kt index 978276490..ed1b2dbf3 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowHierarchyAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowHierarchyAction.kt @@ -41,6 +41,7 @@ class ShowHierarchyAction(context: Context) : UiDesignerAction() { } override fun prepare(data: ActionData) { + super.prepare(data) if (!data.hasRequiredData(Context::class.java, Fragment::class.java)) { markInvisible() return diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowXmlAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowXmlAction.kt index 6f3e5fa4a..7857a3b74 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowXmlAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/ShowXmlAction.kt @@ -47,6 +47,7 @@ class ShowXmlAction(context: Context) : UiDesignerAction() { } override fun prepare(data: ActionData) { + super.prepare(data) if (!data.hasRequiredData(Context::class.java, Fragment::class.java)) { markInvisible() return diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UiDesignerAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UiDesignerAction.kt index 848df7ce1..dcbd46400 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UiDesignerAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UiDesignerAction.kt @@ -44,6 +44,7 @@ abstract class UiDesignerAction : ActionItem { override var visible: Boolean = true override fun prepare(data: ActionData) { + super.prepare(data) if (!data.hasRequiredData(Context::class.java, Fragment::class.java)) { markInvisible() return diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UndoAction.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UndoAction.kt index 1bc82ea34..08c8ce90c 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UndoAction.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/actions/UndoAction.kt @@ -38,6 +38,7 @@ class UndoAction(context: Context) : UiDesignerAction() { } override fun prepare(data: ActionData) { + super.prepare(data) visible = true enabled = data.requireWorkspace().undoManager.canUndo() }