前兩天在網上看到一個需要把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寶庫又近了一點點。