intellij plugin(插件)的项目解析及研读

news2024/11/19 2:20:20

文章目录

  • 资料
  • action_basics (基本的响应操作)
    • plugin.xml
    • CustomDefaultActionGroup
    • PopupDialogAction
    • DynamicActionGroup
  • comparing_references_inspection (关注代码提示)
  • conditional_operator_intention [未成功复现]
  • editor_basics (选择文字替换等)
    • Caret Position
    • Editor Add Caret (EditorHandlerIllustration)
    • Editor Replace text (字符串替换)
    • MyTypedHandler
  • facet_basics (框架信息)
  • framework_basics (新建一个框架模板)
  • inspection_basics
  • kotlin_demo (kotlin插件支持)
  • live_templates (应用模板)
  • max_opend_project
  • module (引导页)
  • product_specific (特定语言平台的插件)
  • project_model (获取项目环境信息)
  • project_view_pane (自定义Project目录)
  • project_wizard (引导页)
  • psi_demo (类文件的信息)
  • run_configuration (新增项)
  • settings (设置页面配置)
  • simple_laguage_plugin (未)
  • theme_basics (未)
  • tool_window (工具窗口,左右下)
  • tree_structure_provider (控制Project View显示什么)

资料

intellij-sdk-code-samples

action_basics (基本的响应操作)

Creating Actions
Actions
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

plugin.xml

ToolsMenu上的三个
EditorPopupMenu上的一个

  <actions>
    <!--
      See https://plugins.jetbrains.com/docs/intellij/basic-action-system.html#registering-actions
      for information about the elements and attributes used for actions and groups.

      This <action> element adds a static menu item in first position of the Tools menu that shows PopupDialogAction.
      Note this element has no text or description attributes because translations for them are given
      by action-id in the resource-bundle.
      An <override-text> element is also used for demonstration purposes to show alternate text and description strings
      for this action's entries in the MainMenu. (Which includes the ToolsMenu. Try commenting out the override-text
      element and see how the menu text changes.) The alternate text and description attributes do not
      appear here because they are defined by action-id in the resource-bundle.
    -->
    <action id="org.intellij.sdk.action.PopupDialogAction" class="org.intellij.sdk.action.PopupDialogAction"
            text="Action Basics Plugin: Pop Dialog Action" description="SDK action example"
            icon="SdkIcons.Sdk_default_icon">
      <add-to-group group-id="ToolsMenu" anchor="first"/>
      <override-text place="MainMenu" text="Pop Dialog Action"/>
      <keyboard-shortcut first-keystroke="control alt A" second-keystroke="C" keymap="$default"/>
      <mouse-shortcut keystroke="control button3 doubleClick" keymap="$default"/>
    </action>
    <!--
      All of the following menu groups add the action PopupDialogAction to menus in different ways.
      Note that even though these groups reuse the same action class, in each use the action ids are unique.

      GroupedActions demonstrates declaring an action group using the default ActionGroup implementation provided by the
      IntelliJ Platform framework. (Note the lack of a group "class" attribute.) GroupedActions gets inserted after
      PopupDialogAction in the Tools menu. Because the group's implementation is default, it cannot impose
      enable/disable conditions. Instead it must rely on the conditions imposed by the parent menu where it is inserted.
      It declares one action in the group.
    -->
    <group id="org.intellij.sdk.action.GroupedActions"
           text="Static Grouped Actions" description="SDK statically grouped action example"
           popup="true" icon="SdkIcons.Sdk_default_icon">
      <add-to-group group-id="ToolsMenu" anchor="after" relative-to-action="org.intellij.sdk.action.PopupDialogAction"/>
      <action id="org.intellij.sdk.action.GroupPopDialogAction" class="org.intellij.sdk.action.PopupDialogAction"
              text="A Group Action" description="SDK static grouped action example"
              icon="SdkIcons.Sdk_default_icon">
      </action>
    </group>
    <!--
      CustomDefaultActionGroup demonstrates declaring an action group based on a ActionGroup class supplied by this
      plugin. This group is to be inserted atop the Editor Popup Menu. It declares one action in the group.
      The group and action implementations are internationalized, so their declarations do not use the text or
      description attributes. Instead, the information is defined in the BasicActionsBundle.
    -->
    <!--  默认菜单:一级目录  -->
    <group id="org.intellij.sdk.action.CustomDefaultActionGroup"
           class="org.intellij.sdk.action.CustomDefaultActionGroup"
           popup="true">
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
      <!--二级响应-->
      <action id="org.intellij.sdk.action.CustomGroupedAction" class="org.intellij.sdk.action.PopupDialogAction"
              icon="SdkIcons.Sdk_default_icon"/>
    </group>
    <!--
      DynamicActionGroup demonstrates declaring an action group without a static action declaration.
      An action is added to the group programmatically in the DynamicActionGroup implementation.
    -->
    <group id="org.intellij.sdk.action.DynamicActionGroup" class="org.intellij.sdk.action.DynamicActionGroup"
           popup="true" text="Dynamically Grouped Actions" description="SDK dynamically grouped action example"
           icon="SdkIcons.Sdk_default_icon">
      <add-to-group group-id="ToolsMenu" anchor="after" relative-to-action="org.intellij.sdk.action.GroupedActions"/>
    </group>
  </actions>

CustomDefaultActionGroup

    <!--
      CustomDefaultActionGroup demonstrates declaring an action group based on a ActionGroup class supplied by this
      plugin. This group is to be inserted atop the Editor Popup Menu. It declares one action in the group.
      The group and action implementations are internationalized, so their declarations do not use the text or
      description attributes. Instead, the information is defined in the BasicActionsBundle.
    -->
    <!--  默认菜单:一级目录 Popup Grouped Actions[en] -->
    <group id="org.intellij.sdk.action.CustomDefaultActionGroup" 
           class="org.intellij.sdk.action.CustomDefaultActionGroup"
           popup="true">
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
      <!--二级响应 A Popup Action[en] -->
      <action id="org.intellij.sdk.action.CustomGroupedAction" class="org.intellij.sdk.action.PopupDialogAction"
              icon="SdkIcons.Sdk_default_icon"/>
    </group>

在这里插入图片描述

PopupDialogAction

在这里插入图片描述

在这里插入图片描述

public class PopupDialogAction extends AnAction

在这里插入图片描述

plugin.xml中

    <!--
      See https://plugins.jetbrains.com/docs/intellij/basic-action-system.html#registering-actions
      for information about the elements and attributes used for actions and groups.

      This <action> element adds a static menu item in first position of the Tools menu that shows PopupDialogAction.
      Note this element has no text or description attributes because translations for them are given
      by action-id in the resource-bundle.
      An <override-text> element is also used for demonstration purposes to show alternate text and description strings
      for this action's entries in the MainMenu. (Which includes the ToolsMenu. Try commenting out the override-text
      element and see how the menu text changes.) The alternate text and description attributes do not
      appear here because they are defined by action-id in the resource-bundle.
    -->
    <action id="org.intellij.sdk.action.PopupDialogAction" class="org.intellij.sdk.action.PopupDialogAction"
            text="Action Basics Plugin: Pop Dialog Action" description="SDK action example"
            icon="SdkIcons.Sdk_default_icon">
      <add-to-group group-id="ToolsMenu" anchor="first"/>
      <override-text place="MainMenu" text="Pop Dialog Action"/>
      <keyboard-shortcut first-keystroke="control alt A" second-keystroke="C" keymap="$default"/>
      <mouse-shortcut keystroke="control button3 doubleClick" keymap="$default"/>
    </action>

DynamicActionGroup

动态加载的,也就是代码加载Action

comparing_references_inspection (关注代码提示)

Code Inspections
监视你感兴趣的字符串, 并给出代码提示
在这里插入图片描述

在这里插入图片描述

conditional_operator_intention [未成功复现]

Intention actions
Intentions
Extensions

在这里插入图片描述
应用
在这里插入图片描述

editor_basics (选择文字替换等)

Basics of Working with the Editor
Extensions
Actions
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  <actions>
  	<!--替换字符串-->
    <action id="EditorBasics.EditorIllustrationAction"
            class="org.intellij.sdk.editor.EditorIllustrationAction"
            text="Editor Replace Text"
            description="Replaces selected text with 'Replacement'."
            icon="SdkIcons.Sdk_default_icon">
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
    </action>
    <!---->
    <action id="EditorBasics.EditorHandlerIllustration"
            class="org.intellij.sdk.editor.EditorHandlerIllustration"
            text="Editor Add Caret"
            description="Adds a second caret below the existing one."
            icon="SdkIcons.Sdk_default_icon">
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
    </action>
    <!-- Place this entry first in the popup menu; it's always enabled if a project and editor are open -->
    <action id="EditorBasics.LogicalPositionIllustration"
            class="org.intellij.sdk.editor.EditorAreaIllustration"
            text="Caret Position"
            description="Reports information about the caret position."
            icon="SdkIcons.Sdk_default_icon">
      <keyboard-shortcut keymap="$default" first-keystroke="control alt G"/>
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
    </action>
  </actions>

Caret Position

在这里插入图片描述

Editor Add Caret (EditorHandlerIllustration)

Editor Replace text (字符串替换)

直接替换文字

MyTypedHandler

监听键盘输入,里面有个操作,给document第0个位置加入字符串

facet_basics (框架信息)

Facet IntelliJ Platform
Facet IDEA
Add frameworks (facets)
工作三年还不懂facet?赶紧学一学IntelliJ IDEA如何管理java项目

Project(项目信息)、Modules(模块信息)、Libraries(依赖信息)、Facets(框架信息)以及Artifacts(构建输出信息)

framework_basics (新建一个框架模板)

Frameworks

inspection_basics

Code Inspections

kotlin_demo (kotlin插件支持)

Configuring Kotlin Support
Kotlin UI DSL Version 2

live_templates (应用模板)

Live Templates
Providing Live Templates
Creating New Functions for Live Templates

max_opend_project

Services

在这里插入图片描述

 <applicationListeners>
    <listener class="org.intellij.sdk.maxOpenProjects.ProjectOpenCloseListener"
              topic="com.intellij.openapi.project.ProjectManagerListener"/>
  </applicationListeners>

  <extensions defaultExtensionNs="com.intellij">
    <applicationService serviceImplementation="org.intellij.sdk.maxOpenProjects.ProjectCountingService"/>
  </extensions>

module (引导页)

Project Wizard Tutorial

product_specific (特定语言平台的插件)

PyCharm Plugin Development

特定语言平台的插件

project_model (获取项目环境信息)

SDK
Project
Library
How to create library for module with its ModuleDependencyItem.DependencyScope scope?

project_view_pane (自定义Project目录)

Project View

  <extensions defaultExtensionNs="com.intellij">
    <projectViewPane implementation="org.intellij.sdk.view.pane.ImagesProjectViewPane"/>
  </extensions>

project_wizard (引导页)

未复现
Project Wizard Tutorial

psi_demo (类文件的信息)

Program Structure Interface (PSI)
Navigating the PSI

run_configuration (新增项)

Run/debug configurations
Run Configurations
Run Configurations Tutorial

在这里插入图片描述
在这里插入图片描述

settings (设置页面配置)

Settings Tutorial
Settings Guide

  <extensions defaultExtensionNs="com.intellij">
    <applicationConfigurable parentId="tools" instance="org.intellij.sdk.settings.AppSettingsConfigurable"
                             id="org.intellij.sdk.settings.AppSettingsConfigurable"
                             displayName="SDK: Application Settings Example"/>
    <applicationService serviceImplementation="org.intellij.sdk.settings.AppSettingsState"/>
  </extensions>
  • AppSettingsConfigurable 需要的服务
  • AppSettingsComponent 用到的界面
  • AppSettingsState 数据持久化

simple_laguage_plugin (未)

theme_basics (未)

tool_window (工具窗口,左右下)

在这里插入图片描述

tree_structure_provider (控制Project View显示什么)

Modifying Project View Structure
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java项目-第137期jsp+servlet的周公算命预测系统-java毕业设计

java项目-第137期jspservlet的周公算命预测系统-计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《周公算命预测系统》 该项目分为管理员和普通用员2个角色。 管理员主要负责后台的信息维护&#xff1a;算命分类管理(比如八字、星座、相命)、管理员信息管理、用户信…

实用数据结构【并查集】 - 原理

实用数据结构【并查集】 - 原理 [一个问题] 若某个部落过于庞大&#xff0c;则部落成员见面也有可能不认识。 已知某个部落的成员关系图&#xff0c;任意给出其中两个人&#xff0c;判断是否有亲戚关系。规定&#xff1a;①若x、y 是亲戚&#xff0c;y 和z 是亲戚&#xff0…

【C++】string的模拟实现

目录 一、std::swap和std::string::swap的区别 二、string的默认构造函数 1、构造函数 2、拷贝构造 3、赋值运算符重载 4、析构函数 三、string中的小接口 四、遍历接口的实现 1、对operator[]进行重载 2、迭代器 五、reserve和resize 六、插入删除查找相关接口 1…

DirtyCow脏牛漏洞复现(CVE-2016-5195)

DirtyCow脏牛漏洞复现 本文以vulnhub靶场中的lampiao为例复现脏牛提权漏洞 扫描c段 nmap -sS -Pn 192.168.1.0/24找到疑似ip 对该ip端口进行扫描&#xff0c;多扫出个1898端口 nmap -A -sV -p- 192.168.1.13访问80端口&#xff0c;没有有用的信息 1898也是个apche的http服务…

立足小餐饮,“新名酒”江小白能走多远?

&#xff08;图片来源于网络&#xff0c;侵删&#xff09; 来源 | 螳螂观察 文 | 叶小安 白酒市场从不缺新故事&#xff0c;但一直缺年轻人喜欢的白酒。 上月底&#xff0c;江小白旗下江记酒庄获重庆市江津区华信集团10亿元战略投资。与此同时&#xff0c;江小白产品理念升…

技术贴 | Rocksdb 中 Memtable 源码解析

一、什么是 Memtable&#xff1f; Memtable 是 Rocksdb 在内存中保存数据的一种数据结构&#xff0c;一个 Memtable 的容量是固定的&#xff0c;在 Memtable 写满后&#xff0c;会转换为 Immutable Memtable&#xff0c;Immutable Memtable 中的数据会 Flush 到 SST File 中。…

编程中老生常谈的【编码规范】你还记得多少?进来回顾一下吧【文末送书】

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity精品学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作分享 &…

【genius_platform软件平台开发】第八十一讲:ARM Neon指令集一(ARM NEON Intrinsics, SIMD运算, 优化心得)

1. ARM Neon Intrinsics 编程 1.入门&#xff1a;基本能上手写Intrinsics 1.1 Neon介绍、简明案例与编程惯例 1.2 如何检索Intrinsics 1.3 优化效果案例 1.4 如何在Android应用Neon 2. 进阶&#xff1a;注意细节处理&#xff0c;学习常用算子的实现 2.1 与Neon相关的ARM体系结…

寻 友 软 件

寻友软件项目技术技术功能部署Redis部署RocketMQJWT&#xff08;Json Web Token&#xff09;虹软人脸识别部署MongoDB&#xff08;尽量不用docker部署mongo&#xff09;部署Nginx过滤器及拦截器加缓存编码流程DOC接口文档bug技术 技术 前端&#xff1a; flutterandroid环信S…

分销微信小程序介绍_分销小程序有什么作用呢

不同的微商城系统对于分销功能的支持会有不要的叫法&#xff0c;一般来说主要有两种&#xff0c;一种是基于商品分享的分销方式&#xff0c;通过分享链接识别客户从属关系&#xff0c;订单完成&#xff0c;结算佣金&#xff1b;另一种分销商可以建立并独立运营一个分销店铺&…

【JavaSE】关于多态那些事儿

目录 1. 多态 1.1 多态的概念 1.2 多态实现条件 1.3 向上转型 1.3.1 直接赋值 1.3.2 方法传参 1.3.3 方法返回 1.3.4 向上转型的优缺点 1.4 重写 1.4.1 重写的条件 1.4.2 重写注意事项 1.4.3 重载与重写的区别 1.5 通过父类的引用&#xff0c;调用这个父类和子类重…

CSS篇十六——盒子模型之边框

目录一、CSS盒子模型1.1 盒子模型组成1.2 边框&#xff08;border&#xff09;1.2.1 语法格式1.2.2 边框样式 border-style1.2.3 代码示例1.3 表格的细线边框1.3.1 语法格式、代码示例及结果一、CSS盒子模型 网页布局过程&#xff1a; 1.先准备好相关的网页元素&#xff0c;网…

My sql的深度剖析

一.数据库的创建、删除、使用 数据库的创建&#xff1a;create database 数据库名 数据库的删除&#xff1a;drop database 数据库名&#xff1b; 数据库的使用&#xff1a;use数据名&#xff1b; 所有数据库的查看&#xff1a;show databases; 建立数据时如何指定字符集…

在Java中计算Levenshtein莱文斯坦(相似度)编辑距离

在本教程中&#xff0c;我们将研究 Levenshtein 距离算法&#xff0c;该算法也称为编辑距离算法&#xff0c;用于比较单词的相似性。 什么是列文施泰因距离 Levenshtein距离算法由俄罗斯科学家Vladimir Levenshtein创建。 Levenshtein 距离算法通过计算将一个字符串转换为另…

基于单片机的贪吃蛇设计

1 绪论 1.1 设计目的 在21世纪的今天&#xff0c;人们的生活开始变得更加丰富多彩。在繁忙的工作之余&#xff0c;娱乐成为人们生活不可或缺的一份子&#xff0c;而游戏作为近年来逐渐兴起的一种娱乐方式&#xff0c;已经越来越受到人们的青睐。在工作学习之余&#…

dreamweaver网页设计作业制作 学生NBA篮球网页 WEB静态网页作业模板 大学生校园篮球网页代码 dw个人网页作业成品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

第五章:双指针与离散化的映射

第五章&#xff1a;双指针、离散化、二进制运算与区间合并一、双指针1、什么是双指针&#xff1f;2、双指针的模板3、双指针例题&#xff08;1&#xff09;思路&#xff1a;&#xff08;2&#xff09;解答&#xff1a;C版&#xff1a;C版&#xff1a;二、离散化1、什么是离散化…

java面试强基(3)

重载和重写的区别? 重载 发生在同一个类中&#xff0c;方法名必须相同&#xff0c;参数类型不同、个数不同、顺序不同&#xff0c;方法返回值和访问修饰符可以不同。 重载就是同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。 重写 重写发生在运行期&#xff0c;…

go语言基本环境搭建

下载地址 Go官网下载地址&#xff1a;https://studygolang.com/dl 一、下载对应电脑得安装包 二、下载完成点击安装下一步&#xff08;选择目录尽量简单&#xff09; 三、是否安装成功 四、环境变量 GOROOT和GOPATH都是环境变量&#xff0c;其中GOROOT是我们安装go开发包的路…

【计算机毕业设计】Springboot医疗管理系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 医疗服务系统&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心…