Intellij Idea插件开发之创建项目层级的右键菜单
在使用Android Studio的过程中,发现自带的一些插件无法满足项目的实际需要,便着手自己开发对应的插件。下面是我开发插件过程中的一个记录,会持续和大家分享。
分享一:创建Project右键菜单
1,按照项目向导一步一步创建一个Demo项目,就不再介绍了,可以参照这篇文章https://www.jb51.net/article/135535.htm
2,创建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,根据触发的文件类型动态控制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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家
相关文章
spring hibernate实现动态替换表名(分表)的方法
下面小编就为大家带来一篇spring hibernate实现动态替换表名(分表)的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-08-08SpringBoot+MyBatis+Redis实现分布式缓存
本文主要介绍了SpringBoot+MyBatis+Redis实现分布式缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-01-01Java中tomcat memecached session 共享同步问题的解决办法
这篇文章主要介绍了Java中tomcat memecached session 共享同步问题的解决办法的相关资料,需要的朋友可以参考下2015-10-10详解Spring Cloud Finchley版中Consul多实例注册的问题处理
这篇文章主要介绍了详解Spring Cloud Finchley版中Consul多实例注册的问题处理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-08-08Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)
下面小编就为大家带来一篇Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-02-02
最新评论