监听编辑板块切换
开发工具:IntellJ Idea
开发语言:Kotlin
功能描述:实现监听编辑板块切换
效果图:
打印日志:
下面是实现该功能的代码:
<idea-plugin>
<id>com.your.company.unique.plugin.id</id>
<name>Djy</name>
<version>1.0</version>
<vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>
<description><![CDATA[
Enter short description for your plugin here.<br>
<em>most HTML tags may be used</em>
]]></description>
<change-notes><![CDATA[
Add change notes here.<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
<idea-version since-build="145.0"/>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->
<depends>com.intellij.modules.lang</depends>
<project-components>
<component>
<implementation-class>
plugin.CodePlugin
</implementation-class>
</component>
</project-components>
<actions>
</actions>
</idea-plugin>
当前代码的配置是project启动的时候会调用的函数
<project-components>
<component>
<implementation-class>
plugin.CodePlugin
</implementation-class>
</component>
</project-components>
plugin.CodePlugin代码:
package plugin
import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.components.ProjectComponent
import com.intellij.openapi.editor.actionSystem.EditorActionManager
import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.fileEditor.FileEditorManagerListener
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.ProjectManager
import inject.EditorInject
class CodePlugin(private var project:Project):ProjectComponent {
private lateinit var inject:EditorInject
init {
}
override fun getComponentName(): String {
return "plugin.CodePlugin"
}
override fun disposeComponent() {
super.disposeComponent()
}
override fun projectClosed() {
super.projectClosed()
}
override fun initComponent() {
super.initComponent()
inject=EditorInject(project)
project.messageBus.connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER,inject)
}
override fun projectOpened() {
super.projectOpened()
}
}
当前注意的是需要初始化的时候传递一个project参数
xml配置的是project-components 要不然会报错
inject.EditorInject 代码
package inject
import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.fileEditor.FileEditorManagerEvent
import com.intellij.openapi.fileEditor.FileEditorManagerListener
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import plugin.KotlinPlugin
class EditorInject(private var project: Project) : FileEditorManagerListener {
override fun selectionChanged(event: FileEditorManagerEvent) {
super.selectionChanged(event)
var source = event.manager
var file = event.newFile
print("\n"+file!!.name)
}
override fun fileOpened(source: FileEditorManager, file: VirtualFile) {
super.fileOpened(source, file)
}
override fun fileClosed(source: FileEditorManager, file: VirtualFile) {
super.fileClosed(source, file)
}
}
这样子就实现编辑器的监听效果~(≧▽≦)/~啦啦啦