游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

开发IntellijIdea插件

  介绍
  在过去几年中,JetBrains的IntelliJ很快成为Java开发人员的顶级IDE。使IntelliJ对Java开发人员如此有吸引力的一个特性是使用插件扩展和创建新功能的能力。在本教程中,我们将介绍如何编写IntelliJ插件来演示扩展IDE的几种方法。
  虽然本文主要关注IntelliJ插件,但所有JetBrainsIDE都共享公共代码。因此,这里使用的许多技术可以应用于JetBrain的其他IDE,如PyCharm、RubyMine等。插件功能
  Intellij插件按照功能可分四类:自定义语言:针对不同语言,能够编写、解释和编译框架:支持第三方框架,如Spring工具:与外部工具(如Gradle)集成用户界面附加组件:新菜单项、工具窗口和按钮等创建一个插件项目
  使用PluginDevKit(https:www。jetbrains。orgintellijsdkdocsbasicsgettingstartedusingdevkit。html)来创建工程,DevKit提供了自定义SDK类型和一组用于在IDE中构建插件的操作创建工程
  在Intellij的菜单栏,选择FileNewProject,在NewProject框里选择IntelliJPLatformPlugin
  NewProject
  在projectSDK选项框选择合适的IntellijSDK,然后下一步,填上projectname,完成,就创建好一个Intellijplugin工程了。实现一个自定义的Plugin
  创建自定义Action
  如果需要了解更多action相关的东西,请访问官方文档https:www。jetbrains。orgintellijsdkdocsbasicsactionsystem。html
  创建自定义的action,需要继承抽象类AnAction,并且需要重写方法AnAction。update()和AnAction。actionPerformed():update()方法里面实现开启和禁用事件逻辑actionPerformed()方法里面实现我们需要做的具体业务逻辑packagecom。test。plugin;importcom。intellij。ide。BrowserUtil;importcom。intellij。lang。Language;importcom。intellij。openapi。actionSystem。AnAction;importcom。intellij。openapi。actionSystem。AnActionEvent;importcom。intellij。openapi。actionSystem。CommonDataKeys;importcom。intellij。openapi。editor。Editor;importcom。intellij。openapi。project。Project;importcom。intellij。psi。PsiFile;importjava。io。UnsupportedEncodingException;importjava。net。URLEncoder;publicclassSearchBaiduActionextendsAnAction{Onlymakethisactionvisiblewhentextisselected。pTheupdatemethodbelowisonlycalledperiodicallysoneedtobecarefultocheckforselectedtexthttps:jetbrains。orgintellijsdkdocsbasicsactionsystem。htmloverridingtheanactionupdatemethodparameOverridepublicvoidupdate(AnActionEvente){GetrequireddatakeysfinalProjectprojecte。getProject();finalEditoreditore。getData(CommonDataKeys。EDITOR);Setvisibilityonlyincaseofexistingprojectandeditorandifaselectionexistse。getPresentation()。setEnabledAndVisible(project!nulleditor!nulleditor。getSelectionModel()。hasSelection());}OverridepublicvoidactionPerformed(AnActionEvente){finalStringselectedCodegetSelectedCode(e);finalStringlanguageTaggetLanguageTag(e);StringurlgetUrl(languageTag,selectedCode);if(url!null){BrowserUtil。browse(url);}}privateStringgetSelectedCode(AnActionEvente){finalEditoreditore。getRequiredData(CommonDataKeys。EDITOR);returneditor。getSelectionModel()。getSelectedText();}privateStringgetLanguageTag(AnActionEvente){StringlanguageTag;PsiFilefilee。getData(CommonDataKeys。PSIFILE);if(file!null){Languagelangfile。getLanguage();languageTaglang!null?lang。getDisplayName()。toLowerCase():null;}returnlanguageTag;}privateStringgetUrl(StringlanguageTag,StringselectedCode){try{StringBuildersbnewStringBuilder(https:www。baidu。coms?wd);if(languageTag!null){sb。append(URLEncoder。encode(languageTag,UTF8));}sb。append(URLEncoder。encode(selectedCode,UTF8));returnsb。toString();}catch(UnsupportedEncodingExceptionunsupportedEncodingException){unsupportedEncodingException。printStackTrace();returnnull;}}}
  如果action被禁用了,那么actionPerformed方法不会被执行
  actionPerformed()方法OverridepublicvoidactionPerformed(AnActionEvente){finalStringselectedCodegetSelectedCode(e);finalStringlanguageTaggetLanguageTag(e);StringurlgetUrl(languageTag,selectedCode);if(url!null){BrowserUtil。browse(url);}}
  在该方法中,我们通过getSelectedCode()方法拿到用户选择的文本,通过刚发getLanguageTag()获取当前文本语言,比如java,js,go等。然后通过getURL()方法组装url,最后通过BrowserUtil。browse(url)打开浏览器,并访问给的url。在我们demo里面,我们将用选择的文本在baidu里面进行搜索。
  获取Editor中选择的文本
  你需要使用SelectionModel对象获取选择的文本privateStringgetSelectedCode(AnActionEvente){finalEditoreditore。getRequiredData(CommonDataKeys。EDITOR);returneditor。getSelectionModel()。getSelectedText();}
  获取当前文件的语言
  从event中通过CommonDataKeys。PSIFILEkey获取到PsiFile对象,然后再从PsiFile中获取到Language。privateStringgetLanguageTag(AnActionEvente){StringlanguageTag;PsiFilefilee。getData(CommonDataKeys。PSIFILE);if(file!null){Languagelangfile。getLanguage();languageTaglang!null?lang。getDisplayName()。toLowerCase():null;}returnlanguageTag;}注册事件
  有两种方式可以注册我们自定义的事件:1。plugin。xml中配置,2。代码中注册
  在plugin。xml文件中注册事件:actionactionactions
  更多事件注册信息请查看官方文档https:plugins。jetbrains。comdocsintellijbasicactionsystem。html?fromjetbrains。orgregisteringactionsinpluginxml运行插件
  在Idea中运行或者debug插件是非常简单的一件事
  配置
  运行
  结果

98英寸智能电视机选TCL还是红米的好?2021年,TCL与红米两款98英寸智能大屏电视机哪款好?如果从产品品质,性能,音画表现来讲,TCL的98Q6E智屏要完胜红米的MAX98智能电视。首先,TCL98Q6E采用的……中国民族自主品牌华为成长需要呵护对吗?原因?这是个什么问题?我怎么看着感觉别别扭扭的。从改革开放到现在,中国政府对待外资的态度是:你投资我欢迎,你赚钱我收税,你违法我追究。改革开放初期对外资还有税收等各种优惠……小心中招!华强北已经破解了iPhone13的新包装最近iPhone13无疑是关注度最高的数码产品,市场上关于它的各种消息和传闻每天都在更新。现在有消息表示,iPhone13包装已经被华强北破解,这意味着后续市面上有可能会……这3款电动车续航出色,适合禁摩的大城市骑行,免费上牌2018年电动车新国标出台之后,电动自行车、电摩、超标电动车有了明确划分。很多城市本身就是禁摩的,因此,电动摩托车、超标电动车都将禁止上路。在大城市逐渐唱主角就是新国标电动自行……如何才能把农村土特产产品做好?传播民族文化,认真履职尽责,保证农村土特产品质,维护消费者的合法权益,让世界充满爱,让世人感受品读土特产的享受,杜绝造假、以次充优的违法行为,确保购买回头、宣传〔祈祷〕所……堪称行业标杆,500eTOPS自动驾驶芯片还有软实力电子发烧友网报道(文吴子鹏)2020年底,中国交通运输部印发《关于促进道路交通、自动驾驶技术发展和应用的指导意见》。意见指出,到2025年,自动驾驶基础理论研究取得积极进展,道……普通音响怎么改能变成蓝牙音响?蓝牙(Bluetooth)本身是一种无线数据传输协议,最初是实现设备间短距离数据交换的,蓝牙使用2。4G盒子频段,是有爱立信公司在1994年提出来的,最大的优点是蓝牙协议支持多……支付宝的笔笔攒是防吃土神器,大家认同吗?我也是用了一段时间后关闭了,这笔笔攒很讨厌,我每消费一次就要从银行卡里扣1。88元让我用得不安心,所我关闭了这个我还真不太认同。笔笔攒是什么?简单的说就是你每使用支……税务部门回应主播平荣偷逃税案经提醒督促仍整改不彻底来源:新华社近期,广州市税务局稽查局对网络主播平荣(网名:驴嫂平荣)涉嫌偷逃税问题进行了查处。该局有关负责人就案件查处情况回答了记者提问。1。为什么广州市税务部门要对平荣……驱动分布式存储高速发展浪潮分布式存储销量中国第一读创深圳商报记者涂竞玉近日,IDC公布2021年第三季度中国软件定义存储(SDS)市场报告。报告显示,第三季度中国SDS市场销量22,527台,其中浪潮分布式存储销量达到……硕士毕业后,去中兴华为还是军工研究所?为什么?个人观点,不喜勿喷!如果要选择,请选择和你硕士专业最贴近、最能发挥你兴趣、激发你工作热情的那一个吧!众所周知,本科生教学以基础培养为主,也就是说我们读本科的专业科目……激光雷达上车!极狐阿尔法S将搭载华为HI解决方案日前,北汽新能源汽车高端品牌极狐发布消息称,全新中大型轿车阿尔法S将于上海车展正式亮相,新车将搭载华为的HI解决方案,包括激光雷达等。阿尔法S造型颇为犀利动感,下压的车头……
大一软件新生该买什么性价比高的笔记本?这个要根据自己的实际情况来选择的,可以用鲁大师来进行测试对比选择性价比高的就行若是学习编程,电脑的内存不能低于8G,而大多数不配备独显的笔记本电脑,价钱虽然较低,但其因在……腾讯牵头首个区块链数字藏品国际标准立项读创深圳商报记者陈姝记者近日获悉,《基于区块链的数字藏品服务技术框架》国际标准项目成功获得立项。据了解,该项目由腾讯牵头,联合蚂蚁集团、信通院、北京邮电大学、之江实验室等……如果iPhone6s停留在系统不升级,可以一直用下去吗?iPhone6s是能够升级到iOS13的最早苹果机型,上一代的iPhone6就只能升级到iOS12。不过有些网友觉得iOS版本越升级越卡,所以一直停留在早期的iOS版本。……LinuxPolkit本地权限提升漏洞(CVE4034)修复近日,Qualys研究团队公开披露了在Polkit的pkexec中发现的一个权限提升漏洞,也被称为PwnKit。该漏洞是由于pkexec无法正确处理调用参数,从而将环境变量作为……索尼备货6000mAh新机,最高18G1TB存储,堆料豪华如果说,要选一部拍照最强的手机,你会选什么?索尼作为影像行业的大佬,卖相机和电视已经不能满足了,索尼Xperia1系列是索尼开发的一个手机产品线,因为超强的相机配置被人们……这样的高级脸你爱了吗?元PLUS定位更高,加持刀片电池比亚迪经过多年的沉淀积累,在新能源领域已经颇有建树,拥有成熟的造车技术,旗下新能源车型综合实力出众。而元PLUS是品牌为消费者带来的一款全新纯电动SUV,新车基于品牌e平台3。……在完全断电的情况下,用水泡电脑主板,再完全晾干,有什么影响?没有什么影响的,太脏的主板我都会这样处理,有些故障因此而不治而愈。但水洗之前一定要将CPU和可插拔的集成块拔出来,要不然,这些原件的插座很难晾干的,凉不干后果非常严重。论最脏的……go语言数组数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。数组是值类型定义数组:1。var数组变量名〔元素数量〕Type2。vara〔5〕int定义五个整……分享一个SQLite性能优化实例最早接触iOS开发了解到的第一个缓存数据库就是SQLite,后面一直也以SQLite作为中坚力量使用,以前没有接触到比较大量数据的读写,所以在性能优化方面关注不多,这次对一个特……EZON宜准R6专业级运动手表EZON宜准R6专业级运动手表夏季快结束了,贴秋膘的金九银十马上就要来了,不知道大家的身材管理怎么样了,反正我是失效了,不止是我,还有我老婆,两个吃货在一起难免是这样的结……操作系统国产化才有中国网络安全化微软公司近日宣布,从明年6月15日起,旗下IE浏览器将基本淘汰。互联网活化石将告别历史舞台,在舆论场引发了普遍关注。有人追忆初识互联网的青葱岁月;有人解读互联网产品的发展规律;……细读阿里受侵害女员工的控诉发文,有几点疑问侵犯门事件让阿里继月饼门和蒋凡小三门事件后,再一次冲上舆论的风口浪尖,阿里的企业文化以及价值观受到了更猛烈的抨击。是什么样的事情让阿里董事局主席张勇感到震惊、气愤、羞愧?……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网