通过action获得editor中的内容
如果你不熟悉如何开始一个plugin,一步一步(一)。
本次主要实现功能
- 通过在主菜单上添加一个自己的菜单项,
- 点击后可以获得编辑器的内容
本次涉及内容- 如何将自己的菜单插入到合适的位置,
- 如何获得editor中的内容
一:向主菜单上添加一项新菜单
这一步完成后的效果
- 启动一个新的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>
-
<group>
标签表示这个是个菜单组,text
属性是显示的内容,'description'描述 -
<add-to-group>
标签表示要添加到那个菜单,group-id
是添加到的菜单id,这里是MainMenu
,就是添加到组菜单上,anchor
表示具体菜单的什么位置,这里是last
表示添加到主菜单的最后,就是Help菜单后面了。 -
系统的group-id比较多,常见的描述下,要想了解更多可以参考这个网页Built-in Action ID's,或者查看源代码的
platform\platform-resources-en\src\messages\ActionsBundle.properties
这个文件。 -
MainMenu
:ide的主菜单;FileMenu
:file菜单;EditMenu
:edit菜单;ViewMenu
: view菜单;GoToMenu
:Navigate;CodeMenu
:code;AnalyzeMenu
:Analyze;RefactoringMenu
:Refactor;BuildMenu
: Build;RunMenu
:Run;ToolsMenu
:Tools;VcsGroups
: VCSWindowMenu
:Window;HelpMenu
:Help -
EditorPopupMenu
:编辑器中的右键菜单 -
class="ReadDocument"
:这个是要用来承接action的一个类。 -
添加动作处理类,在左边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);
}
}
第一步完成,动作设计已经完成,下一步考虑如何获得editor的内容。
获得editor中的文本内容
- 获得编辑器对象
- 获得编辑器中的文档对象
- 获得文档对象内容
- 显示内容
这一步完成后的效果
直接在刚才的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);
}
}
网友评论