Eclipse 插件開發 向導

回到頂部

  最近由于特殊需要,開始學習插件開發。

以前接觸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 插件的捆綁信息

按 Ctrl+C 復制代碼
按 Ctrl+C 復制代碼

  

  Name 是我們之前設置的插件名字

  SymblicName 是我們插件的包名

  version 是插件的版本

  Activator 是插件的激活類

  Vendor 是插件開發者的信息

  Bundle 是插件以來的庫

  這些信息都對應著插件的overview頁面的信息。

  

回到頂部

  plugin.xml 插件的詳細設置文檔,包含插件的擴展點信息,以及插件自己的信息

按 Ctrl+C 復制代碼
按 Ctrl+C 復制代碼

  

  <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 ID
13     public static final String PLUGIN_ID = "com.test.myplugin";
14 
15     // The shared instance
16     private static Activator plugin;
17     
18     /**
19      * The constructor
20      */
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 instance
44      *
45      * @return the shared instance
46      */
47     public static Activator getDefault() {
48         return plugin;
49     }
50 
51     /**
52      * Returns an image descriptor for the image file at the given
53      * plug-in relative path
54      *
55      * @param path the path
56      * @return the image descriptor
57      */
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。啟動效果如下:

  這樣一個簡單的插件就開發完啦!讓我們就此真正的起航吧!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388134.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388134.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線性回歸 假設_線性回歸的假設

線性回歸 假設Linear Regression is the bicycle of regression models. It’s simple yet incredibly useful. It can be used in a variety of domains. It has a nice closed formed solution, which makes model training a super-fast non-iterative process.線性回歸是回…

ES6模塊與commonJS模塊的差異

參考&#xff1a; 前端模塊化 ES6 在語言標準的層面上&#xff0c;實現了模塊功能&#xff0c;而且實現得相當簡單&#xff0c;旨在成為瀏覽器和服務器通用的模塊解決方案。 其模塊功能主要由兩個命令構成&#xff1a;export和import。export命令用于規定模塊的對外接口&#x…

solo

solo - 必應詞典 美[so?lo?]英[s??l??]n.【樂】獨奏(曲)&#xff1b;獨唱(曲)&#xff1b;單人舞&#xff1b;單獨表演adj.獨唱[奏]的&#xff1b;單獨的&#xff1b;單人的v.獨奏&#xff1b;放單飛adv.獨網絡梭羅&#xff1b;獨奏曲&#xff1b;索羅變形復數&#xff1…

Eclipse 簡介和插件開發天氣預報

Eclipse 簡介和插件開發 Eclipse 是一個很讓人著迷的開發環境&#xff0c;它提供的核心框架和可擴展的插件機制給廣大的程序員提供了無限的想象和創造空間。目前網上流傳相當豐富且全面的開發工具方面的插件&#xff0c;但是 Eclipse 已經超越了開發環境的概念&#xff0c;可以…

趣味數據故事_壞數據的好故事

趣味數據故事Meet Julia. She’s a data engineer. Julia is responsible for ensuring that your data warehouses and lakes don’t turn into data swamps, and that, generally speaking, your data pipelines are in good working order.中號 EETJulia。 她是一名數據工程…

Linux 4.1內核熱補丁成功實踐

最開始公司運維同學反饋&#xff0c;個別宿主機上存在進程CPU峰值使用率異常的現象。而數萬臺機器中只出現了幾例&#xff0c;也就是說萬分之幾的概率。監控產生的些小誤差&#xff0c;不會造成宕機等嚴重后果&#xff0c;很容易就此被忽略了。但我們考慮到這個異常轉瞬即逝、并…

python分句_Python循環中的分句,繼續和其他子句

python分句Python中的循環 (Loops in Python) for loop for循環 while loop while循環 Let’s learn how to use control statements like break, continue, and else clauses in the for loop and the while loop.讓我們學習如何在for循環和while循環中使用諸如break &#xf…

eclipse plugin 菜單

簡介&#xff1a; 菜單是各種軟件及開發平臺會提供的必備功能&#xff0c;Eclipse 也不例外&#xff0c;提供了豐富的菜單&#xff0c;包括主菜單&#xff08;Main Menu&#xff09;&#xff0c;視圖 / 編輯器菜單&#xff08;ViewPart/Editor Menu&#xff09;和上下文菜單&am…

[翻譯 EF Core in Action 2.0] 查詢數據庫

Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的關于Entityframework Core 書籍。原版地址. 是除了官方文檔外另一個學習EF Core的不錯途徑, 書中由淺入深的講解的EF Core的相關知識。因為沒有中文版,所以本人對其進行翻譯。 預計每兩天…

hdu5692 Snacks dfs序+線段樹

題目傳送門 題目大意&#xff1a;給出一顆樹&#xff0c;根節點是0&#xff0c;有兩種操作&#xff0c;一是修改某個節點的value&#xff0c;二是查詢&#xff0c;從根節點出發&#xff0c;經過 x 節點的路徑的最大值。 思路&#xff1a;用樹狀數組寫發現還是有些麻煩&#xff…

python數據建模數據集_Python中的數據集

python數據建模數據集There are useful Python packages that allow loading publicly available datasets with just a few lines of code. In this post, we will look at 5 packages that give instant access to a range of datasets. For each package, we will look at h…

打開editor的接口討論

【打開editor的接口討論】 先來看一下workbench吧&#xff0c;workbench從靜態劃分應該大致如下&#xff1a; 從結構圖我們大致就可以猜測出來&#xff0c;workbench page作為一個IWorkbenchPart&#xff08;無論是eidtor part還是view part&#…

【三角函數】已知直角三角形的斜邊長度和一個銳角角度,求另外兩條直角邊的長度...

如圖,已知直角三角形ABC中,∠C90, ∠Aa ,ABc ,求直角邊AC、BC的長度. ∵ ∠C90,∠Aa ,ABc ,Cos∠AAC/AB ,Sin∠ABC/AB ,∴ ACAB*Cos∠Ac*Cosa ,BCAB*Sin∠Ac*Sina . 復制代碼

網絡攻防技術實驗五

2018-10-23 實驗五 學 號201521450005 中國人民公安大學 Chinese people’ public security university 網絡對抗技術 實驗報告 實驗五 綜合滲透 學生姓名 陳軍 年級 2015 區隊 五 指導教師 高見 信息技術與網絡安全學院 2018年10月23日 實驗任務總綱 2018—2019 …

usgs地震記錄如何下載_用大葉草繪制USGS地震數據

usgs地震記錄如何下載One of the many services provided by the US Geological Survey (USGS) is the monitoring and tracking of seismological events worldwide. I recently stumbled upon their earthquake datasets provided at the website below.美國地質調查局(USGS)…

Springboot 項目中 xml文件讀取yml 配置文件

2019獨角獸企業重金招聘Python工程師標準>>> 在xml文件中讀取yml文件即可&#xff0c;代碼如下&#xff1a; 現在spring-boot提倡零配置&#xff0c;但是的如果要集成老的spring的項目&#xff0c;涉及到的bean的配置。 <bean id"yamlProperties" clas…

eclipse 插件打包發布

如果想把調試好的插件打包發布&#xff0c;并且在ECLIPSE中可以使用. 1.File-->Export 2.選擇 PLug-in Development下 的 Deployable plug-ins and fragments 3.進入 Deployable plug-ins and fragments 頁面 4.把底下的 Destubatuib 的選項中選擇 Archive file 在這里添入要…

無法獲取 vmci 驅動程序版本: 句柄無效

https://jingyan.baidu.com/article/a3a3f811ea5d2a8da2eb8aa1.html 將 vmci0.present "TURE" 改為 “FALSE”; 轉載于:https://www.cnblogs.com/limanjihe/p/9868462.html

數據可視化 信息可視化_更好的數據可視化的8個技巧

數據可視化 信息可視化Ggplot is R’s premier data visualization package. Its popularity can likely be attributed to its ease of use — with just a few lines of code you are able to produce great visualizations. This is especially great for beginners who are…

分布式定時任務框架Elastic-Job的使用

為什么80%的碼農都做不了架構師&#xff1f;>>> 一、前言 Elastic-Job是一個優秀的分布式作業調度框架。 Elastic-Job是一個分布式調度解決方案&#xff0c;由兩個相互獨立的子項目Elastic-Job-Lite和Elastic-Job-Cloud組成。 Elastic-Job-Lite定位為輕量級無中心化…