通過action獲得editor中的內(nèi)容
如果你不熟悉如何開始一個plugin,一步一步(一)朴译。
本次主要實現(xiàn)功能
- 通過在主菜單上添加一個自己的菜單項,
- 點擊后可以獲得編輯器的內(nèi)容
本次涉及內(nèi)容- 如何將自己的菜單插入到合適的位置,
- 如何獲得editor中的內(nèi)容
一:向主菜單上添加一項新菜單
這一步完成后的效果
- 啟動一個新的plugin項目
在plugin.xml中的<actions>....</actions>
添加菜單組和對應(yīng)菜單項
<actions>
<group id="MingManMan.Menu" text="我的菜單" description="慢慢的菜單組">
<add-to-group group-id="MainMenu" anchor="last" />
<action id="MingManMan.ReadDocument" class="ReadDocument" text="獲得Editor中的內(nèi)容" description="獲得編輯器中的全部內(nèi)容" />
</group>
</actions>
<group>
標簽表示這個是個菜單組嗤瞎,text
屬性是顯示的內(nèi)容山橄,'description'描述<add-to-group>
標簽表示要添加到那個菜單垮媒,group-id
是添加到的菜單id,這里是MainMenu
,就是添加到組菜單上睡雇,anchor
表示具體菜單的什么位置萌衬,這里是last
表示添加到主菜單的最后,就是Help菜單后面了它抱。系統(tǒng)的group-id比較多秕豫,常見的描述下,要想了解更多可以參考這個網(wǎng)頁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
:HelpEditorPopupMenu
:編輯器中的右鍵菜單class="ReadDocument"
:這個是要用來承接action的一個類回铛。添加動作處理類,在左邊Project窗口克锣,點擊src目錄茵肃,右鍵選擇新建,輸入類名字建立新類袭祟,并在類中輸入內(nèi)容如下:
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);
}
}
第一步完成验残,動作設(shè)計已經(jīng)完成,下一步考慮如何獲得editor的內(nèi)容榕酒。
獲得editor中的文本內(nèi)容
- 獲得編輯器對象
- 獲得編輯器中的文檔對象
- 獲得文檔對象內(nèi)容
- 顯示內(nèi)容
這一步完成后的效果
直接在剛才的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();
//獲得編輯器內(nèi)容
String mytext=document.getText();
Messages.showDialog(mytext,"當前editor中的內(nèi)容",new String[]{"OK"}, -1, null);
}
}