一步一步学习android studio 插件开发(二)

通过action获得editor中的内容

如果你不熟悉如何开始一个plugin,一步一步(一)
本次主要实现功能

  1. 通过在主菜单上添加一个自己的菜单项,
  2. 点击后可以获得编辑器的内容
    本次涉及内容
  3. 如何将自己的菜单插入到合适的位置,
  4. 如何获得editor中的内容

一:向主菜单上添加一项新菜单

这一步完成后的效果

《一步一步学习android studio 插件开发(二)》

  1. 启动一个新的plugin项目
    在plugin.xml中的<actions>....</actions>添加菜单组和对应菜单项
<actions>
  <group id="MingManMan.Menu" text="我的菜单" description="慢慢的菜单组">
    <add-to-group group-id="MainMenu" anchor="last"  />
       <action id="MingManMan.ReadDocument" class="ReadDocument" text="获得Editor中的内容" description="获得编辑器中的全部内容" />
  </group>
</actions>
  1. <group> 标签表示这个是个菜单组,text属性是显示的内容,’description’描述

  2. <add-to-group>标签表示要添加到那个菜单,group-id是添加到的菜单id,这里是MainMenu,就是添加到组菜单上,anchor表示具体菜单的什么位置,这里是last表示添加到主菜单的最后,就是Help菜单后面了。

  3. 系统的group-id比较多,常见的描述下,要想了解更多可以参考这个网页Built-in Action ID’s,或者查看源代码的platform\platform-resources-en\src\messages\ActionsBundle.properties这个文件。

  4. MainMenu:ide的主菜单; FileMenu:file菜单; EditMenu:edit菜单; ViewMenu: view菜单;GoToMenu:Navigate;CodeMenu:code; AnalyzeMenu:Analyze; RefactoringMenu:Refactor; BuildMenu: Build; RunMenu:Run; ToolsMenu:Tools;VcsGroups: VCS WindowMenu:Window; HelpMenu:Help

  5. EditorPopupMenu:编辑器中的右键菜单

  6. class="ReadDocument":这个是要用来承接action的一个类。

  7. 添加动作处理类,在左边Project窗口,点击src目录,右键选择新建,输入类名字建立新类,并在类中输入内容如下:


import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.ui.Messages;
public class ReadDocument extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent anActionEvent) {
        Messages.showDialog("慢慢的菜单","慢慢消息",new String[]{"OK"}, -1, null);
    }
}

《一步一步学习android studio 插件开发(二)》

第一步完成,动作设计已经完成,下一步考虑如何获得editor的内容。

获得editor中的文本内容

  1. 获得编辑器对象
  2. 获得编辑器中的文档对象
  3. 获得文档对象内容
  4. 显示内容
    这一步完成后的效果
    《一步一步学习android studio 插件开发(二)》
    直接在刚才的ReadDcoument中进行修改,最终样子如下
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.ui.Messages;
public class ReadDocument extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent anActionEvent) {

        //获得editor
        final Editor editor = anActionEvent.getRequiredData(CommonDataKeys.EDITOR);
        //获得编辑器中的文档对象
        final Document document = editor.getDocument();
        //获得编辑器内容
        String mytext=document.getText();
        Messages.showDialog(mytext,"当前editor中的内容",new String[]{"OK"}, -1, null);
    }
}
    原文作者:明慢慢
    原文地址: https://www.jianshu.com/p/bff83af39c7e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞