Smart Input Source插件推荐给大家使用,它可以实现根据输入处上下文自动切换到对应的输入法,将开发者从杂乱繁琐的输入法切换中解救出来。
前言
自己探索IDEA插件开发之路并不好走,国内这方面资料较少且不成体系,IDEA虽然有官方的开发教程,但是英文版不太好理解而且讲得太浅,以至于会遇到很多无法解决的问题。因此,作者写了这篇系列教程,为了让中文开发者快速入门。授人予鱼不如授人予渔,作者觉得自我解决问题的思路比教程更重要,所以开篇首先给大家总结作者在开发过程的思路。
官方文档
IntelliJ Platform Plugin SDK是插件开发的官方文档,这里对IntelliJ IDE做了简单而全面的介绍,我们需要尽量去通读这篇文档,我觉得它最重要的作用是告诉我这个概念用英文怎么描述,这个对后续遇到问题时查找解决方案非常重要。所以当我们不知道该怎么描述我们遇到的问题的时候,首先来这里找下有没有对应的介绍。
开源插件
IntelliJ IDEA插件很多都是开源的,我们可以学习里面的代码,看是否能解决我们的问题。如果能找到一款实现功能很相近的开源插件,那将事半功倍。
IntelliJ插件市场是一个非常好寻找开源插件的地方,在这里可以根据关键字寻找你想要的插件,然后进入插件详情页面,找到Source Code,如下所示,有时作者可能没有设置Source Code,也许你可以去作者的Github找到远吗。
另外一个寻找开源插件的好地方就是Github,输入IDEA+关键字可以找到很多开源插件。
IDEA源码
IntelliJ IDEA是一个开源项目,在Github可以找到源代码intellij-community,另外我们也可以在插件项目中查看到源代码,那样会更方便。IDEA里面的很多官方功能其实也是插件的形式提供的,所以我们可以参考他们的实现来完成我们的想法。其中最关键的还是需要知道IDEA里面的概念如何用英文描述,只有知道某个功能的英文描述我们才能找到相应的类,才能知道他们是怎么实现的。所以,如果安装了中文汉化包的话赶紧把它卸载吧。
举个我自己的实际例子,我想知道键盘事件怎么监听,我知道IDEA有个功能点击shift两次便能查找类或方法,通过IDEA使用界面我了解到这个功能叫SearchEverywhere,于是我在项目工程里面用SearchEverywhere功能搜索关键字SearchEverywhere,于是找到了最相近的实现类com.intellij.ide.actions.SearchEverywhereAction,通过阅读源代码找到了点击两次shift与SearchEverywhere功能的联系,如下图中所示,它是通过ModifierKeyDoubleClickHandler类注册了点击两次shift后激活SearchEverywhere功能。
继续深入到ModifierKeyDoubleClickHandler里面,我找到了怎么监听键盘事件的代码如下所示,通过IdeEventQueue.EventDispatcher应该可以监听到IDEA里面所有事件,通过event instanceof KeyEvent判断是否为键盘事件,点击左上角插头形状图标,发现这个类还需要在plugin.xml里面进行注册,如下所示。
通过研究ModifierKeyDoubleClickHandler代码,我还明白了一个概念叫ModifierKey(修饰键),mac系统的修饰键有command、option、control、shift,这些按键跟普通按键可以组成快捷键。
别问为什么不用百度,特别是IDEA插件开发相关文档中为资料更是少之又少。在Google提问的关键还是在于怎么描述你的问题,只有用准确的英文描述才能让你快速找到想要的答案,所以如果不知道怎么描述你的问题,可以先阅读官方文档。