為什么要定制IDE?
在工作時候,當公司有了自己的框架,給自己開放人員用,甚至是可以賣的時候,我們可以做成一個產品,而這個產品將包括框架本身、文檔、工具、教程等等。工具之中最重要的莫過於開發工具(IDE)、調試工具。
我在公司里面做的是一個hybrid框架,而一個配套的IDE是比不可少的,主要用來開發HTML5。這個IDE可以算是框架東西的聚合,可以將在線文檔、工程模板、打包調試等功能都揉合在IDE。當我們提供給開發者東西時,我們只需要提供一個IDE,里面已經包含所有框架的東西。
我花費了一個月去做這個IDE,基於Eclipse來做。之所以用Eclipse不用什么dreamweaver、notepad++等,是因為這些看起來不專業,可拓展的東西也是有限。目前apicloud或dcloud這些hybrid框架都是基於Eclipse做定制的,只不過dcloud做得比較徹底。
我就把我這個月的開發經歷一並告訴大家。
怎么定制IDE?
我們之所以能夠定制Eclipse IDE,並不是我們寫的東西有多厲害,而是Eclipse的本身,它是一個平台,能夠讓我們編寫插件拓展功能,達到支持各種語言編輯的IDE。在Eclipse官方下載有很多版本的Eclipse,可以說這就是不同插件組裝而成的。所以我們定制IDE,其實就是編寫Eclipse插件 (Eclipse plug-in)。
IDE定制成什么樣?
下面就是這一個月來定制最后的結果,我將從結果講解,這個東西怎么一步步搭起來的(支持windows、mac的IDE)。另外里面出現BingoTouch的名稱是我開放框架,大家可以忽略。從下面可以看到我們需要定制菜單欄、工具欄、視圖區。
這里講一個很關鍵的概念就是透視圖(perspective),透視圖可以看成一種編輯視圖,我們熟知的可能有Java、debug(可以通過右上角切換透視圖),一切的東西都可以在透視圖上設置,類如設置菜單欄、工具欄有什么,視圖區是由什么構成的。
手動定制界面過程
接下來我將講對界面一些定制的細節,注意里面列舉的目錄要按你使用eclipse決定,可能版本會不同。
(1). 啟動頁
啟動頁是一個門面,我們可將他換成可以體現自己產品的圖片。
替換過程:
對應目錄 eclipse\plugins\org.eclipse.platform_4.4.2.v20150204-1700\splash.bmp,只需要換這張圖片即可。
(2). IDE圖標



這些圖標的尺寸分別是16*16、32*32、48*48、256*256,是用來做應用圖標或IDE窗口圖標,我們只需要替換這四個尺寸的圖標即可使得整個IDE大變樣。
替換過程:
對應目錄 eclipse\plugins\org.eclipse.epp.package.rcp_4.4.2.20150219-0708
對應目錄 eclipse\plugins\org.eclipse.platform_4.4.2.v20150204-1700
覆蓋掉里面的eclipse16.png,eclipse32.png,eclipse48.png,eclipse256.png 替換即可。
(3) . eclipse.exe圖標
當我們想把圖標換得更徹底的時候,即連eclipse.exe圖標都換。我在網上找了很多工具,卻發現要么不行、要么只替換了某個大小尺寸的。最后找到一個工具IconWorkshopshiyongban 。用IconWorkshopshiyongban 修改exe圖標,這個才是最直接完整的工具。
替換過程:
1. 用IconWorkshopshiyongban 打開 eclipse.exe,我們看到下面界面,我們第二步用的圖標又派上用場了(尺寸一模一樣)。
2. 然后用這個工具打開那四個不同尺寸的圖標,會得到下面界面。
3.雙擊 eclipse.exe里面任一圖標,然后用復制粘貼的辦法覆蓋掉所有尺寸圖標。
4.保存即可,就會發現exe的圖標已經換了,在不同尺寸下都顯示正常。
ps:可能會出現圖標會沒替換到的樣子,這時你可以換個目錄來看,就正常的,那只是應用圖標沒刷新而已。
(4). Eclipse.icns
這個是mac上Eclipse的應用圖標,路徑如下(我們也要輸出mac的IDE)。
替換過程:
其實替換過程跟eclipse.exe一樣,只不過需要的尺寸多了兩個512* 512、1024*1024。
PS:如果發現啟動程序后,發現任務欄的應用圖標變暗變模糊了,就需要在icns文件加上128*128尺寸的。
插件定制界面過程
上面介紹的是手動更換界面的辦法,而接下來就是介紹插件改變界面的東西。我推薦使用eclipse-rcp-and-rap-developers這個Eclipse作為開放插件的IDE。
(1). 插件hello world工程
在講插件改變界面時,簡單介紹一下創建插件的過程。
由於篇幅比較長,所以就寫在另外一篇文章,請查看:
Eclipse Plug-in Hello world
(2). IDE標題
在第一個張圖片中,我們可以看到IDE標題是,BingoTouch - welcome - BingoTouch IDE,這個標題是由三部分組成的,透視圖名稱- 編輯區名稱 - 產品名稱。其中透視圖和編輯區的名稱都好理解,而產品名稱是在eclipse\plugins\org.eclipse.epp.package.rcp_4.4.2.20150219-0708\plugin.xml里面定義的。所以IDE的名稱並不是固定的,是由這三部分組成,我們也不必去改它們。
(3). 隱藏菜單欄、工具欄
很多時候,菜單欄或工具欄上的一些功能圖標我們並不需要,為了使IDE看起來比較簡潔,我們需要隱藏一些菜單、工具欄圖標。我在前面說過,IDE整個界面關鍵的是透視圖,菜單欄、工具欄的隱藏只是對於某個透視圖來說的,例如你定制自己的透視圖,其他透視圖是不會影響到的。
隱藏代碼:
<extension point="org.eclipse.ui.perspectiveExtensions" > <perspectiveExtension targetID="com.bingo.ide.perspective" > <hiddenMenuItem id="org.eclipse.ui.file.export"/> <hiddenToolBarItem id="org.eclipse.mylyn.tasks.ui.command.openTask"/> </perspectiveExtension> </extension>
解析:
hiddenMenuItem :隱藏菜單欄
hiddenToolBarItem : 隱藏工具欄
1.這個兩個標簽是寫在拓展點(extension point)里面的,targetID是指明對哪個透視圖生效。這里面有個關鍵的地方,就是id的獲取,菜單欄、工具欄的選項對應的id是什么,這是非常關鍵的。
2.我收集了Eclipse 常用的Id,同樣因為篇幅原因,我把他收集在另一篇文章中:
Eclipse 擴展點常量ID
3.可能有人會發現,上面常量ID可能不夠,有些我們想隱藏的沒有在里面,那怎么辦。辦法總是有的,只要你尋找。我用了一種比較蠢但能解決問題的辦法,同樣因為篇幅原因,我把他寫在另一篇文章中:
Eclipse 尋找迷失的ID
(4). 刪除透視圖
有些透視圖也是我們不想要的,例如下面這些透視圖我們不想在定制的IDE出現。
透視圖也是插件實現的,所以我們只需要刪除相應的插件就行,例如我們想刪除Git的透視圖,在eclipse\plugins目錄搜索git關鍵字。將這兩個包刪掉,再次打開IDE時候,你會發現Git的透視圖不見了。所以請記住,刪透視圖即是刪插件。
(5). 視圖定義
視圖定義從下圖可看到有三部分,左邊是項目管理視圖,右上是編輯視圖,右下是控制台視圖
這視圖的定義可以用xml定義,也可以用代碼。我建議是用代碼,因為這個自由度更高。
String editorArea = layout.getEditorArea(); //添加視圖 layout.addView(IPageLayout.ID_PROJECT_EXPLORER, IPageLayout.LEFT, 0.22f, editorArea); IFolderLayout bottom =layout.createFolder("bottom", IPageLayout.BOTTOM, 0.75f , editorArea) ; bottom.addView("org.eclipse.ui.console.ConsoleView"); //bottom.addView(IPageLayout.ID_PROBLEM_VIEW); IViewLayout projectLayout = layout.getViewLayout(IPageLayout.ID_PROJECT_EXPLORER); projectLayout.setCloseable(false); projectLayout.setMoveable(false);
解析:
其實代碼都比較好理解,不要使用xml配置,在代碼里面寫,可以添加一個folder包含多個窗口。
(6). 刪除啟動歡迎頁
有可能你不需要首次打開時顯示歡迎頁,你可以這樣刪除它。
eclipse\plugins\org.eclipse.epp.package.rcp_4.4.2.20150219-0708\plugin.xml
刪除:
<extension point="org.eclipse.ui.intro"> <introProductBinding introId="org.eclipse.ui.intro.universal" productId="org.eclipse.platform.ide"> </introProductBinding> </extension>
這篇文章篇幅太長了,先介紹到這里,下一篇繼續講解。
本文為原創文章,轉載請保留原出處,方便溯源,如有錯誤地方,謝謝指正。
本文地址 :http://www.cnblogs.com/lovesong/p/4693467.html
