Reports any actions that are registered in the plugin.xml
file and instantiate
the com.intellij.openapi.actionSystem.Presentation
object in their constructors.
Any of the constructors of AnAction
with parameters instantiate the Presentation
object. However, instantiating the Presentation
object in constructor results in allocating
resources, which may not be necessary. Instead of creating an instance of Presentation
that
stores text, description, or icon, it is more efficient to utilize no-argument constructors of
AnAction
and other base classes and follow the convention for setting the text, description,
and icon in plugin.xml
. The IDE will load text, description, and icon only when the action
is actually displayed in the UI.
The convention for setting the text, description, and icon is as follows:
id
attribute for the action in the plugin.xml
file.
icon
attribute if an icon is needed.
<actions>
):
action.<action-id>.text=Translated Action Text
action.<action-id>.description=Translated Action Description
Bad example:
// NewKotlinFileAction.kt
internal class NewKotlinFileAction : AnAction(
KotlinBundle.message("action.new.file.text"),
KotlinBundle.message("action.new.file.description"),
KotlinIcons.FILE
)
<action
class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction"
</action>
Good example:
// NewKotlinFileAction.kt
internal class NewKotlinFileAction : AnAction()
<action
id="Kotlin.NewFile"
class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction"
icon="org.jetbrains.kotlin.idea.KotlinIcons.FILE">
</action>
# KotlinBundle.properties
action.Kotlin.NewFile.text=Kotlin Class/File
action.Kotlin.NewFile.description=Creates a new Kotlin class or file
New in 2023.2