前两天在网上看到一个需要把outline最大化的需求。我就想啊这个Ctrl +M不就的了(呵呵,这个快捷我经常用。快成了条件反射了)。在往下看发现他的需求要求用编程实现。唉这个时候我的Ctrl + M就用不上了。
然后我就想tmd,这个功能既然Eclipse本身已经实现了,那么肯定就回有这样的代码。我需要做的就是把这段代码找出来。好了,确定这个目标就好办了。
下面就得想办法怎么把这个功能地位到Eclipse源码中了。我现在知道得就只是Ctrl + M可以唤醒这部分得功能。其他的就什么都不知道了。那我怎么定位到这部分的源码呢。天哪。我该怎么办啊。
后来理了一理想起来Eclipse中对于快捷键的实现。他们都是通过accelerator来定义的。而accelerator后面一般回对应到一个action。这个action会真真的来完成这个快捷键所要完成的功能。这样一想,心里有了一点底。那么现在就把目标锁定到找到相应的action的实现就算完成了。对于找出相应的action的方法是通过找到Ctrl+M向对应的accelerator。
那么这个action会在什么地方实现呢。我就打开了Plug-in Registry视图来随便看看。看看能有什么意外收获。
还真巧在发现了有org.eclipse.ui这个插件。再点进去看到他的Extensions。
居然有Maximize Active view or
Editor这个扩展点。大胆猜测org.eclipse.ui会提供一个关于“Maximize Active View or
Editor”的实现。为了证实我的猜想,我打开了org.eclipse.ui的plugin.xml文件。看到有下面这一段。
这一段证实了我的猜想。
下面如果能找到那各类实现了这个command就ok了。找这个就比较容易了。呵呵。只要看看那各类里面有
setActionDefinitionId("org.eclipse.ui.window.maximizePart");
这样的代码就可以搞定了。
最后查得org.eclipse.ui.internal.
MaximizePartAction在他的构造函数你发现了这样的代码。
不用多想了,他肯定是实现了这个使视图最大化的功能了。看了他的run函数的内容更加确定就是他了。
而且就是toggleZoom搞定这一切。自己写了测试小测了一下。果然是他。呵呵,这样就完成一次代码定位的过程。爽了一把。离Eclipse宝库又近了一点点。