Intellij Idea插件开发之创建项目层级的右键菜单
时间:2019-04-13
本文章向大家介绍Intellij Idea插件开发之创建项目层级的右键菜单,主要包括Intellij Idea插件开发之创建项目层级的右键菜单使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在使用Android Studio的过程中,发现自带的一些插件无法满足项目的实际需要,便着手自己开发对应的插件。下面是我开发插件过程中的一个记录,会持续和大家分享。
分享一:创建Project右键菜单
1,按照项目向导一步一步创建一个Demo项目,就不再介绍了,可以参照这篇文章//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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家
- 华为面试题——一道关于指针方面的编程题(C/C++)
- Spring Cloud第二篇 创建一个Eureka Server
- 数据挖掘实战(一):Kaggle竞赛经典案例剖析
- 华为面试题——单向链表倒转(一次遍历)
- Flask一步步搭建web应用
- (44) 剖析TreeSet / 计算机程序的思维逻辑
- (46) 剖析PriorityQueue / 计算机程序的思维逻辑
- (48) 剖析ArrayDeque / 计算机程序的思维逻辑
- 那些年在win下填过的Django坑
- Python爬虫一步步抓取房产信息
- (47) 堆和PriorityQueue的应用 / 计算机程序的思维逻辑
- 一篇文章完全理解virtualenv
- Python运用蒙特卡洛算法模拟植物生长
- (57) 二进制文件和字节流 / 计算机程序的思维逻辑
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 实例分析10个PHP常见安全问题
- laravel清除视图缓存的代码
- Smarty模板类内部原理实例分析
- laravel框架与其他框架的详细对比
- ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写办法
- PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
- PHP实现简单登录界面
- PHP创建XML接口示例
- PHP设计模式之单例模式入门与应用详解
- Laravel框架实现定时Task Scheduling例子
- PHP使用 Pear 进行安装和卸载包的方法详解
- Laravel5.1框架注册中间件的三种场景详解
- 浅谈laravel数据库查询返回的数据形式
- PHP设计模式之策略模式(Strategy)入门与应用案例详解
- 基于Python3读写INI配置文件过程解析