前兩天在網(wǎng)上看到一個需要把outline最大化的需求。我就想啊這個Ctrl +M不就的了(呵呵,這個快捷我經(jīng)常用。快成了條件反射了)。在往下看發(fā)現(xiàn)他的需求要求用編程實(shí)現(xiàn)。唉這個時候我的Ctrl + M就用不上了。
然后我就想tmd,這個功能既然Eclipse本身已經(jīng)實(shí)現(xiàn)了,那么肯定就回有這樣的代碼。我需要做的就是把這段代碼找出來。好了,確定這個目標(biāo)就好辦了。
下面就得想辦法怎么把這個功能地位到Eclipse源碼中了。我現(xiàn)在知道得就只是Ctrl + M可以喚醒這部分得功能。其他的就什么都不知道了。那我怎么定位到這部分的源碼呢。天哪。我該怎么辦啊。
后來理了一理想起來Eclipse中對于快捷鍵的實(shí)現(xiàn)。他們都是通過accelerator來定義的。而accelerator后面一般回對應(yīng)到一個action。這個action會真真的來完成這個快捷鍵所要完成的功能。這樣一想,心里有了一點(diǎn)底。那么現(xiàn)在就把目標(biāo)鎖定到找到相應(yīng)的action的實(shí)現(xiàn)就算完成了。對于找出相應(yīng)的action的方法是通過找到Ctrl+M向?qū)?yīng)的accelerator。
那么這個action會在什么地方實(shí)現(xiàn)呢。我就打開了Plug-in Registry視圖來隨便看看。看看能有什么意外收獲。
還真巧在發(fā)現(xiàn)了有org.eclipse.ui這個插件。再點(diǎn)進(jìn)去看到他的Extensions。
居然有Maximize Active view or
Editor這個擴(kuò)展點(diǎn)。大膽猜測org.eclipse.ui會提供一個關(guān)于“Maximize Active View or
Editor”的實(shí)現(xiàn)。為了證實(shí)我的猜想,我打開了org.eclipse.ui的plugin.xml文件。看到有下面這一段。
這一段證實(shí)了我的猜想。
下面如果能找到那各類實(shí)現(xiàn)了這個command就ok了。找這個就比較容易了。呵呵。只要看看那各類里面有setActionDefinitionId("org.eclipse.ui.window.maximizePart");
這樣的代碼就可以搞定了。
最后查得org.eclipse.ui.internal. MaximizePartAction在他的構(gòu)造函數(shù)你發(fā)現(xiàn)了這樣的代碼。
不用多想了,他肯定是實(shí)現(xiàn)了這個使視圖最大化的功能了。看了他的run函數(shù)的內(nèi)容更加確定就是他了。

而且就是toggleZoom搞定這一切。自己寫了測試小測了一下。果然是他。呵呵,這樣就完成一次代碼定位的過程。爽了一把。離Eclipse寶庫又近了一點(diǎn)點(diǎn)。