Eclipse從3.0開始,就引入了OSGi架構作為其運作架構,雖然之前Eclipse也有一套非常精巧的架構,但筆者覺得沒有太大的必要再學習以前的架構,是以直接學習最新的Eclipse版本的源代碼。
從www.elcipse.org上下載下傳到最新的Eclipse Plugin Development項目包,這裡面包含了eclipse的源代碼,筆者下載下傳是為3.5.1,解壓運作。閱讀代碼當然最好有參考,Eclipse自帶的幫助文檔就是很好的參考。當然還有eclipse項目的首頁,這上面有很多有用的資源,扯遠了,回到Eclipse,為了能在Eclipse裡打開源代碼,先建立一個插件工程(File->New...->Plug-in Project)。
打開META-INF下的MANIFEST.MF檔案,
打開Dependencies選單,添加org.eclipse.jdt,org.eclipse.jdt.ui,儲存,現在就可以用Ctrl+Shift+T打開一個類了。筆者的方法不是最好的,有更好方法歡迎指正。
MANIFEST.MF |
Elcipse源代碼非常龐大,從哪裡入手呢?JDT是每個使用Eclipse開發Java應用的人最常用的Eclipse部件之一,就從這個開始吧。源代碼在哪裡呢?猜吧,Ctrl+Shift+T打開類型打開對話框,org.eclipse.jdt.ui.javaeditor,選擇JavaEditor,呵呵就是它了,這就是我們日常使用的那個功能強大的Java編輯器了。
打開一看,好大啊,從哪裡開始呢?先看看其父類AbstractDecoratedTextEditor,不行還是太複雜,再看其父類StatusTextEditor,還是再上!AbstractTextEditor,再上EditorPart,好了,到這個類能看懂了。
在Eclipse中視窗中的東西除了工具欄,菜單狀态欄這些東西之外,構成Eclipse的UI的部件叫WorkbenchPart,主視窗中有兩種部件,一種叫Editor就是我們能使用輸入裝置編輯其内容的容器,另一種叫View,就是隻給顯示用的(這不絕對,其實很多View是可以通過不同方法改變其中内容的)。
public abstract class EditorPart extends WorkbenchPart implements IEditorPart
既然是閱讀代碼就不怕深入,再看看WorkbenchPart 這是一個抽象類,繼承自EventManager,實作了IWorkbenchPart3,而IWorkbenchPart3繼承自IWorkbenchPart2,IWorkbenchPart2 繼承自IWorkbenchPart。将它的繼承關系整理可以得到
Workbench 現在可以仔細看看WorkbenchPart了。 public abstract class WorkbenchPart extends EventManager implements IWorkbenchPart3, IExecutableExtension, IWorkbenchPartOrientation
|
這裡實作了一個基本的WorkbenchPart,如果要實作一個WorkbenchPart,隻需要覆寫兩個抽象方法即可。public abstract void createPartControl(Composite parent)用由生成界面, public abstract void setFocus()用于響應擷取焦點。
下面再看看類EditorPart
這應該很清晰了,這個類提供了對打開和儲存的支援。Eclipse有着非常靈活的架構,這裡并不是打開和儲存檔案,而是把我們通常的檔案抽象成Input和Output,這樣的好處自然不用多說,比如可以打開URL。 下面是AbstractTextEditor,這是個大家夥,這将是閱讀的一個重點,我會在接下來的文章中繼續分析。 |