手把手制作个划词翻译的IDEA插件
简介
- 看这篇之前可以先看下IDEA插件制作(环境搭建demo篇)
- 插件功能: 划词翻译
- 使用方式: 选中单词后按
ctrl+shift+alt+O
后即弹出翻译 - 效果如下
源码
插件工程目录
- 工程相当简单, 代码也相当简单…
代码分析
-
actionPerformed
为插件的核心流程, 你按下ctrl+shift+alt+O
时执行的就是这个方法 - 总流程: 获取编辑器的文本 --> 将文本进行翻译 --> 弹窗显示翻译后文本
- 编辑器指的就是Editor, 都是调API直接查官方文档即可…参考链接在最下面
- 翻译用的是有道的rest api (用的是我自己的账号, 所以随时都可能过期或欠费无法使用…)
- 弹窗就是popups, 同样是调API的, 直接查看官方文档, 参考链接在最下面
@Override
public void actionPerformed(AnActionEvent anActionEvent) {
Editor editor = anActionEvent.getData(PlatformDataKeys.EDITOR);
if (editor == null) return;
String sText = editor.getSelectionModel().getSelectedText();
String translated = getTranslation(sText);
showTip(translated, editor);
}
private void showTip(String msg, Editor editor) {
ApplicationManager.getApplication().invokeLater(() -> JBPopupFactory.getInstance()
.createHtmlTextBalloonBuilder(msg, Messages.getInformationIcon(),
new JBColor(new Color(214, 241, 255), new Color(0, 200, 250)), null)
.setFadeoutTime(20000)
.setHideOnAction(true)
.createBalloon()
.show(JBPopupFactory.getInstance()
.guessBestPopupLocation(editor), Balloon.Position.below));
}
关于plugin.xml
-
插件的基础信息
-
插件的菜单和快捷键