邋遢居

          我的Java天堂

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks
          定位Eclipse源碼

          前兩天在網上看到一個需要把outline最大化的需求。我就想啊這個Ctrl +M不就的了(呵呵,這個快捷我經常用。快成了條件反射了)。在往下看發現他的需求要求用編程實現。唉這個時候我的Ctrl + M就用不上了。

          然后我就想tmd,這個功能既然Eclipse本身已經實現了,那么肯定就回有這樣的代碼。我需要做的就是把這段代碼找出來。好了,確定這個目標就好辦了。

          下面就得想辦法怎么把這個功能地位到Eclipse源碼中了。我現在知道得就只是Ctrl + M可以喚醒這部分得功能。其他的就什么都不知道了。那我怎么定位到這部分的源碼呢。天哪。我該怎么辦啊。

          后來理了一理想起來Eclipse中對于快捷鍵的實現。他們都是通過accelerator來定義的。而accelerator后面一般回對應到一個action。這個action會真真的來完成這個快捷鍵所要完成的功能。這樣一想,心里有了一點底。那么現在就把目標鎖定到找到相應的action的實現就算完成了。對于找出相應的action的方法是通過找到Ctrl+M向對應的accelerator

          那么這個action會在什么地方實現呢。我就打開了Plug-in Registry視圖來隨便看看。看看能有什么意外收獲。

          plug-in.jpg


          還真巧在發現了有org.eclipse.ui這個插件。再點進去看到他的Extensions

          extends.jpg
          居然有Maximize Active view or Editor這個擴展點。大膽猜測org.eclipse.ui會提供一個關于“Maximize Active View or Editor”的實現。為了證實我的猜想,我打開了org.eclipse.uiplugin.xml文件。看到有下面這一段。
          command.jpg

          這一段證實了我的猜想。

          下面如果能找到那各類實現了這個commandok了。找這個就比較容易了。呵呵。只要看看那各類里面有

          setActionDefinitionId("org.eclipse.ui.window.maximizePart");

          這樣的代碼就可以搞定了。

          最后查得org.eclipse.ui.internal. MaximizePartAction在他的構造函數你發現了這樣的代碼。
          control.jpg
          不用多想了,他肯定是實現了這個使視圖最大化的功能了。看了他的run函數的內容更加確定就是他了。
          run.jpg
          而且就是toggleZoom搞定這一切。自己寫了測試小測了一下。果然是他。呵呵,這樣就完成一次代碼定位的過程。爽了一把。離Eclipse寶庫又近了一點點。



          posted on 2006-01-22 23:00 Jet Geng 閱讀(3128) 評論(2)  編輯  收藏 所屬分類: Eclipse

          Feedback

          # re: 定位Eclipse源碼 2006-05-03 22:11 綠色使者、綠色心情
          好文章,寫得很清晰,方法很好的,想想前一段時間看jetspeed2的源代碼,也是這樣先從表象開始定位,逐步布進,到最終定位到實現  回復  更多評論
            

          # re: 定位Eclipse源碼 2008-08-12 14:59 HB
          不錯不錯~~  回復  更多評論
            

          主站蜘蛛池模板: 和平县| 绥江县| 齐齐哈尔市| 宾川县| 平谷区| 民权县| 巴塘县| 岐山县| 平定县| 佳木斯市| 新津县| 青海省| 五大连池市| 穆棱市| 资阳市| 开江县| 衡东县| 海丰县| 新安县| 南安市| 武川县| 鹤庆县| 乳山市| 梅河口市| 偏关县| 翁源县| 武乡县| 恩平市| 隆化县| 泽库县| 邯郸市| 郓城县| 大姚县| 榆树市| 西平县| 金寨县| 华蓥市| 荆门市| 崇明县| 厦门市| 万荣县|