Intellij Idea插件開發(fā)之創(chuàng)建項目層級的右鍵菜單
在使用Android Studio的過程中,發(fā)現自帶的一些插件無法滿足項目的實際需要,便著手自己開發(fā)對應的插件。下面是我開發(fā)插件過程中的一個記錄,會持續(xù)和大家分享。
分享一:創(chuàng)建Project右鍵菜單
1,按照項目向導一步一步創(chuàng)建一個Demo項目,就不再介紹了,可以參照這篇文章http://m.fzitv.net/article/135535.htm
2,創(chuàng)建Action,在plugin配置文件中你會看到
<action id="FirstAction" class="FirstAction" text="FirstAction" description="右鍵Action"> <add-to-group group-id="ProjectViewPopupMenu" anchor="after" relative-to-action="ReplaceInPath"/> </action>

3,運行后,IDE會另外開啟一個IDE(由一個類似Genymotion的容器包裹)??葱Ч遣皇呛苁煜?,對,這就是常用Project右鍵菜單:

4,根據觸發(fā)的文件類型動態(tài)控制Action的隱藏顯示
@Override
public void update(AnActionEvent event) {//根據擴展名是否是jar,顯示隱藏此Action
String extension = getFileExtension(event.getDataContext());
this.getTemplatePresentation().setEnabled(extension != null && "jar".equals(extension));
}
完整代碼:
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vfs.VirtualFile;
/**
* Created by ABC on 16/8/17.
*/
public class FirstAction extends AnAction {
private Project mProject;
@Override
public void actionPerformed(AnActionEvent event) {
mProject = event.getData(PlatformDataKeys.PROJECT);
DataContext dataContext = event.getDataContext();
if ("jar".equals(getFileExtension(dataContext))) {//根據擴展名判定是否進行下面的處理
//獲取選中的文件
VirtualFile file = DataKeys.VIRTUAL_FILE.getData(event.getDataContext());
if (file != null) {
Messages.showMessageDialog(mProject, file.getName(), "select file", Messages.getInformationIcon());
}
}
}
@Override
public void update(AnActionEvent event) {
//在Action顯示之前,根據選中文件擴展名判定是否顯示此Action
String extension = getFileExtension(event.getDataContext());
this.getTemplatePresentation().setEnabled(extension != null && "jar".equals(extension));
}
public static String getFileExtension(DataContext dataContext) {
VirtualFile file = DataKeys.VIRTUAL_FILE.getData(dataContext);
return file == null ? null : file.getExtension();
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家
相關文章
Netty分布式ByteBuf使用page級別的內存分配解析
這篇文章主要介紹了Netty分布式ByteBuf使用page級別的內存分配解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03
Java之NoClassDefFoundError的原因及分析
在Java開發(fā)中,經常會遇到ClassNotFoundException和NoClassDefFoundError異常,ClassNotFoundException發(fā)生在編譯時JVM無法找到類,而NoClassDefFoundError則發(fā)生在運行時JVM無法加載類,這兩個異常雖然原因相似,但有本質區(qū)別2024-09-09

