標籤:des style blog http color java 使用 os
最近由於特殊需要,開始學習外掛程式開發。
以前接觸java也算有些時日,但是一直不知道有外掛程式開發這樣一種技術路徑,本想著這開發工具都給你備好了,直接用不就行了。但是總有些IT工廠,為了要節約成本,開發自己的開發工具,但是又要節省時間,總不能一切都自己來。畢竟開發一個eclipse也要很長時間的。因此,外掛程式開發出現在曆史舞台。
首先要瞭解外掛程式開發,就得從SWT/JFACE說起了。SWT是一種開源的介面開發架構,以前學java的時候,總是用一些panel,就類似這個。JFace又是一種基於SWT的UI不見的API。Eclipse就是用這個開發出來的,它提供了Eclipse強大的擴充性,因此可以讓使用者任意的插入自己想要的外掛程式,開發自己的IDE。
下面就直接弄一個簡單的外掛程式吧!
首先認識一下Eclipse,這個大家應該很熟了!
1 紅色部分是我們的工具列
2 藍色部分是視圖
3 黃色部分是編輯器
通常我們使用編輯器,進行代碼操作,或者業務操作。在視圖,進行一些資源的查看等。紅色引入一些常用的功能,輔助我們的操作。
我們先做一個簡單的工具列的控制項,瞭解一下eclipse的外掛程式開發流程!
1 建立一個外掛程式工程
2 建立自己的外掛程式名字,這個名字最好特殊一點,一遍融合到eclipse的時候,不會發生衝突。
首先,寫入自己的外掛程式名字。
source folder 是外掛程式的代碼路徑。
output folder是外掛程式輸出的目標路徑。
下面是開發外掛程式的eclipse的版本。
3 下一步,進行外掛程式的具體詳情設定
ID 是外掛程式的標識
version 是外掛程式的版本
Name是外掛程式的名字
Provider是開發人員的資訊
下面的Activator,是外掛程式的啟用類,用來管理外掛程式的生命週期。
最後是選擇是否開發RCP,富用戶端應用,暫且不用,選否就行了。
4 使用外掛程式模板,建立一個外掛程式工具
選擇hello world.這是一個工具列的按鈕。
5 下一步,進行按鈕的資訊設定。
預設會產生類的名字,路徑(包名),以及工具列按鈕出發的訊息提示。
6 點擊finish,完成外掛程式的建立。
這樣,我們就完成了一個外掛程式的建立,那麼看一下,eclipse都為我們產生了什麼。
1 匯入了外掛程式所需要用到的jar包
2 匯入了外掛程式依賴的庫
3 源檔案
4 外掛程式按鈕圖片
5 外掛程式的配置資訊
MANIFEST.MF 外掛程式的捆綁資訊
Manifest-Version: 1.0Bundle-ManifestVersion: 2Bundle-Name: 我的外掛程式Bundle-SymbolicName: com.test.myplugin; singleton:=trueBundle-Version: 1.0.0.qualifierBundle-Activator: com.test.myplugin.ActivatorBundle-Vendor: xingooRequire-Bundle: org.eclipse.ui, org.eclipse.core.runtimeBundle-ActivationPolicy: lazy
Name 是我們之前設定的外掛程式名字
SymblicName 是我們外掛程式的包名
version 是外掛程式的版本
Activator 是外掛程式的啟用類
Vendor 是外掛程式開發人員的資訊
Bundle 是外掛程式以來的庫
這些資訊都對應著外掛程式的overview頁面的資訊。
plugin.xml 外掛程式的詳細設定文檔,包含外掛程式的擴充點資訊,以及外掛程式自己的資訊
<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.4"?><plugin> <extension point="org.eclipse.ui.actionSets"> <actionSet label="Sample Action Set" visible="true" id="com.test.myplugin.actionSet"> <menu label="Sample &Menu" id="sampleMenu"> <separator name="sampleGroup"> </separator> </menu> <action label="&Sample Action" icon="icons/sample.gif" class="com.test.myplugin.actions.SampleAction" tooltip="Hello, Eclipse world" menubarPath="sampleMenu/sampleGroup" toolbarPath="sampleGroup" id="com.test.myplugin.actions.SampleAction"> </action> </actionSet> </extension></plugin>
<plugin>元素清單的主體
<extension>外掛程式的功能擴充,裡麵包括 point 擴充點的標識、id 擴充執行個體的標識、name 提供的使用者的名稱等等
build.properties 構建的元素列表
source.. = src/output.. = bin/bin.includes = plugin.xml, META-INF/, ., icons/
裡麵包括外掛程式的源檔案目錄,組建檔案目錄,還有一些配置資訊的引入。
提供的外掛程式類Activator.java
1 package com.test.myplugin; 2 3 import org.eclipse.jface.resource.ImageDescriptor; 4 import org.eclipse.ui.plugin.AbstractUIPlugin; 5 import org.osgi.framework.BundleContext; 6 7 /** 8 * The activator class controls the plug-in life cycle 9 */10 public class Activator extends AbstractUIPlugin {11 12 // The plug-in ID13 public static final String PLUGIN_ID = "com.test.myplugin";14 15 // The shared instance16 private static Activator plugin;17 18 /**19 * The constructor20 */21 public Activator() {22 }23 24 /*25 * (non-Javadoc)26 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)27 */28 public void start(BundleContext context) throws Exception {29 super.start(context);30 plugin = this;31 }32 33 /*34 * (non-Javadoc)35 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)36 */37 public void stop(BundleContext context) throws Exception {38 plugin = null;39 super.stop(context);40 }41 42 /**43 * Returns the shared instance44 *45 * @return the shared instance46 */47 public static Activator getDefault() {48 return plugin;49 }50 51 /**52 * Returns an image descriptor for the image file at the given53 * plug-in relative path54 *55 * @param path the path56 * @return the image descriptor57 */58 public static ImageDescriptor getImageDescriptor(String path) {59 return imageDescriptorFromPlugin(PLUGIN_ID, path);60 }61 }
start()和stop()分別用於外掛程式開始與停止調用的函數。
最後讓我們運行一下這個外掛程式吧!
啟動方式1 直接在overview介面點擊;
啟動方式2 也可以點擊運行或者DEBUG按鈕,運行方式選擇Eclipse Application。
點擊啟動後,會為我們重新開啟一個Eclipse,這個Eclipse就是帶有我們建立的外掛程式的新Eclipse。啟動效果如下:
這樣一個簡單的外掛程式就開發完啦!讓我們就此真正的起航吧!!!