手把手做个划词翻译的IDEA插件

729 阅读1分钟

简介

  • 看这篇之前可先看下 IDEA插件Demo搭建篇
  • 插件功能: 划词翻译
  • 使用方式: 选中单词后按ctrl+shift+alt+O后即弹出翻译
  • 效果如下
    result.png

源码

插件工程目录

  • 工程相当简单, 代码也相当简单...
    catalog.png

代码分析

  • 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

  • 插件的基础信息

    1.png

  • 插件的菜单和快捷键

    2.png

参考

Intellij SDK editor相关

Intellij SDK popups相关