【手把手教你Eclipse外掛程式開發】之外掛程式入門

來源:互聯網
上載者:User

標籤: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 &amp;Menu"               id="sampleMenu">            <separator                  name="sampleGroup">            </separator>         </menu>         <action               label="&amp;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。啟動效果如下:

  這樣一個簡單的外掛程式就開發完啦!讓我們就此真正的起航吧!!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.