Intellij IDEA插件 - Scroll From Source

以前用Eclipse的时候,有一个“Link with Editor”,即下面红色框住的图标。作用是展开当前打开的文件所在的目录树

后来转到idea以后,也有这么一个类似的图标可以点击,效果一模一样,功能名改为了“Scroll From Source”,即下面红色框住的图标。

不过自从换了Mac以后,鼠标已经被我丢弃了,所以快捷键对我来说是越多越好。但是不幸的是,这个功能居然不能添加快捷键,这搞得我有时候得用触摸板点击,甚为不爽。而且也有几个用idea的朋友对这点吐槽多次了,所以我用了点零碎的时间看了下开发插件的过程,然后花了半个下午写了一个可以为”Scroll From Source“这个功能添加快捷键的插件。

插件已经提交到jetbrains的官方插件库中,地址是:https://plugins.jetbrains.com/plugin/7606?pr=idea 同时我把插件的源代码也公开到了github,地址是:https://github.com/luonanqin/intellij-idea-plugins/tree/master/ScrollFromSource 因为代码很简单,所以我就顺便贴出来简单说明下

package luonq;

import com.intellij.ide.projectView.ProjectView;
import com.intellij.ide.projectView.impl.ProjectViewImpl;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * Created by Luonanqin on 11/13/14.
 */
public class ScrollFromSource extends AnAction {

	private static final Logger LOG = Logger.getInstance(ScrollFromSource.class);

	public void actionPerformed(AnActionEvent e) {
		try {
			Project project = e.getProject();
			ProjectViewImpl projectView = (ProjectViewImpl) ProjectView.getInstance(project);

			Class<ProjectViewImpl> clazz = ProjectViewImpl.class;

			Field[] fields = clazz.getDeclaredFields();
			Field myAutoScrollFromSourceHandlerField = null;
			for (int i = 0; i < fields.length; i++) {
				Field field = fields[i];
				// can't use field's name to find the variable of MyAutoScrollFromSourceHandler
				if ("MyAutoScrollFromSourceHandler".equals(field.getType().getSimpleName())) {
					myAutoScrollFromSourceHandlerField = field;
				}
			}

			myAutoScrollFromSourceHandlerField.setAccessible(true);
			Object handler = myAutoScrollFromSourceHandlerField.get(projectView);

			Class<?>[] clazzes = clazz.getDeclaredClasses();
			for (int i = 0; i < clazzes.length; i++) {
				Class<?> clazze = clazzes[i];
				String simpleName = clazze.getSimpleName();
				if ("MyAutoScrollFromSourceHandler".equals(simpleName)) {
					Method fromSource = clazze.getMethod("scrollFromSource");
					fromSource.setAccessible(true);
					fromSource.invoke(handler);
					return;
				}
			}
		} catch (Exception ex) {
			LOG.error("ScrollFromSource execute ERROR!", ex);
		}
	}
}

这个插件其实耍了个小聪明,因为我是找到了Scroll From Source的触发代码,所以用反射的办法把触发他的对象取了出来,然后再用反射的办法调用这个对象去触发Scroll From Source方法,这样就达到效果了。最后为这个AnAction配置快捷键,目标达成!!

效果图如下:

PS:目前只测试了idea的community和ultimate版本,其他平台没测试过。如果使用中有出现问题可以随时回复我。

时间: 2024-12-25 18:26:47

Intellij IDEA插件 - Scroll From Source的相关文章

IntelliJ IDEA插件结构

IntelliJ IDEA插件结构 插件是扩展IDEA功能的唯一途径.一款插件使用IDEA或其他插件暴露的API实现它的功能.这篇文章关注插件系统的结构和插件的生命周期.文章中不会指出任何可能被插件使用的其他API接口. 文章中包含了以下主题: 插件内容 插件类加载器 插件组件 插件扩展和扩展点 插件交互(Action) 插件服务 插件配置文件 插件内容 有3种方式组织插件内容: 1.由插件文件夹内的一个.jar文件构成一个插件.这个压缩包内应该包含配置文件(META-INF/plugin.xm

码云 IntelliJ IDEA 插件

转自:https://www.oschina.net/news/74088/gitosc-idea-plugin 强迫症患者请先点这里:https://plugins.jetbrains.com/plugin/8383 5月23日,码云小组在众包上发布 IntelliJ IDEA 插件悬赏:https://zb.oschina.net/reward/591e2f617153309e5a0caa2e291860e3 5月24日就有开发者踊跃报名. 开发者@zyuyou 周五(27日)就向我们提供了

10个最有用的 IntelliJ IDEA 插件

IntelliJ IDEA鼓舞了许多Java开发人员编写插件,从J2EE到代码编辑工具再到游戏.现在,它拥有了一个强大的插件生态系统,超过1500可用的插件以及几乎每周都有新的插件出现.在这篇文章中,我们将为使用这个IDE的开发人员介绍10个我们认为最有用的的插件. 工具/原料 IntelliJ IDEA 插件 IntelliJ IDEA 方法/步骤 Shifter 检测光标所在选中.行或关键字的类型,然后用键盘快捷键上的"up"或"down"键移动它.如果在一行中

intellij idea 插件安装、卸载

windows 下 intellij idea 插件安装.卸载 安装(在线安装): 根据图一.图二所示(蓝色标记) 卸载: 根据图一所示(橙色标记) 启用.关闭插件: 根据图一所示(绿色标记) 安装完成需要重启 intellij idea File -- Settings -- Plugins,快捷键 ctrl + alt + s 唤起 Settings 框,如下图所示 图一 图二 原文地址:https://www.cnblogs.com/a8457013/p/8473484.html

IntelliJ IDEA插件 - ApiDebugger

IntelliJ IDEA插件 - ApiDebuggerApiDebugger,是一个开源的接口调试IntelliJ IDEA插件,具有与IDEA一致的界面,无需切换程序即可完成网络API请求,让你的code更加沉浸式. 安装Settings -> Plugins -> search: Api Debugger -> Install -> restart IDEA 预览 支持的请求方式 目前ApiDebugger支持 GET POST PUT PATCH DELETE HEAD

Java开发中常用的IntelliJ IDEA插件

工欲善其事,必先利其器 一.Alibaba Java Coding Guidelines 代码规范插件:阿里开发的此插件应该说极大的改善程序员的代码质量,帮助程序员规范自己的代码 安装使用: 1. 打开File -> Settings -> Plugins -> Browse repositories...,输入“Alibaba Java Coding Guidelines”,查找,安装: ? 2.安装成功后,会提示重新启动一下IDEA,重启即生效! 二.RestfulToolkit 概

从零开始编写IntelliJ IDEA插件

写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件.要是这个操作是你们的编码环境特有的,那就只能自己写工具了.所以这里来学学如何编写IDEA插件,让自己的编程环境更加强大,更好的进行装逼. 开发环境 开发IDEA插件有以下这些依赖: IntelliJ IDEA Community Edition IntelliJ IDEA Community Edition 源码 Plugin

IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)

以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会少很多坑.现在,阿里巴巴又一次对这个文档进行了升级,直接变成了一个插件.你需要的就是:知道有这么个插件,然后,还得安装这个插件,那么以后,你在写代码的时候,这个插件就会自动的纠正你在写代码的时候的一些很low的不规范代码. 下面看怎么在这个 IntelliJ IDEA 上安装这个插件. 通过Jetbrains

intellij idea 插件

intellij idea 实用插件推荐 记录自己目前正在使用的插件 插件列表 1. .ignore - 将需要忽略的文件添加到 `.gitignore` 文件中 2. Alibaba Java Coding Guidelines - 阿里巴巴 Java 代码规约 3. Background Image Plus - 设置背景颜色 4. Free MyBatis plugin - Mybatis 插件(免费) 5. Gitee - 码云(Git 版本管理) 6. Grep Console - 自