Intellij IDEA插件 - Scroll From Source
来源:互联网 发布:kbengine 源码分析 编辑:程序博客网 时间:2024/05/22 06:38
以前用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 MyAutoScrollFromSourceHandlerif ("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版本,其他平台没测试过。如果使用中有出现问题可以随时回复我。
3 0
- Intellij IDEA插件 - Scroll From Source
- 【IDEA】intellij idea 插件推荐
- Intellij IDEA安装插件
- intellij idea ibatis插件
- IntelliJ IDEA插件结构
- IntelliJ Idea 常用插件
- intellij idea 插件备忘
- IntelliJ IDEA插件结构
- IntelliJ IDEA 插件收集
- intellij idea 插件推荐
- IntelliJ IDEA实用插件
- Intellij IDEA插件
- intellij idea实用插件
- intellij idea 插件 ideaVim
- Remove SVN From Intellij IDEA
- 码云 IntelliJ IDEA 插件 Intellij-GitOSC
- Intellij IDEA插件下载地址
- Intellij IDEA插件开发入门
- 程序猿看哭《奋斗》的米莱,not《粪斗》——not《shit fight》
- Mac OS X Git安装教程
- Android获取除状态栏高度
- 常用连续型分布介绍及R语言实现
- git报错 unable to access 'https://****': SSL certificate problem: Invalid
- Intellij IDEA插件 - Scroll From Source
- HDU 5072:同色三角形,容斥原理,预处理的顺序
- mysql数据库初步接触
- 宽带连接错误的处理办法651、691、623、678、645、720、721、718、734、769、619、676、815(留着吧,不用麻烦别人喽)
- Linux下局域网QQ !!!
- 题目1032:ZOJ
- 好好创造
- Java 链表
- 随机效应与固定效应&面板数据回归