分享
 
 
 

Eclipse插件开发系列(3):Hello World插件(从无到有版)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。

email:glchengang@hotmail.com

blog:glchengang.yeah.net

一、新建项目。

按照上一篇的新建插件项目的方法,新建一个名为myplugin2的插件项目,注意:在最后一步选择“建立白空插件项目”,除此,其它都一样。截图如下:

附注:发现又有上一篇的错误,中文版的Eclipse在新建项目时,比较容易有“由于类路径错误(不完整或涉及循环),所以未构建项目。”这类的错误。好办,因为中文包只是一些文本文件,对开发没用,用前面一篇所说的方法删除那些对中文包的引用(前面字符为ECLIPSE_HOME_LANGUAGE_LINK…….),如下图:

二、插件开发的几个关注点。

a) 库引用。如上附注所说库引用是在建立插件初期要设置好的地方,不过一经设置基本不需要再改变。功能类似于JDK的classpath或者Jbuilder里的库引用。

b) 插件JAVA源代码。今后主要的工作,狂写代码吧。主要都是一些*.JAVA文件。

c) 项目根目录下的plugin.xml文件。这个文件是插件的入口文件,Eclipse根据这个文件中的设置来加载插件。代码写完了,要让Eclipse加载你的代码就要在这里面做些手脚了,这些手脚有个术语叫“设置扩展点”。象在Eclipse的加个主菜单、视图、按钮,都在这个文件里面做不同的扩展点,后面的教程会看到这个文件的使用。要人会说那我开发一个系统会有很多的菜单和按钮,那是不是都要设置这个文件呢?回答:不必,这里面只设置主要和Eclipse接壤的扩展点,其它系统里的菜单按钮就没必要了,今后会讲到。

三、设置库引用。

在删除了上面附注所说的无用且出错的引用,接下来我们要加入一些开发插件要用到的库。是那些呢?呵呵,前面我们还是用向导建立了一个helloword插件吗,参考它的就行了。如下图:

手工加可真累,这里有个好办法。把目录C:\eclipse2.1.3\eclipse\workspace\myplugin\下的.classpath文件拷贝到C:\eclipse2.1.3\eclipse\workspace\myplugin2目录就行了。所有关于库引用的设置全保存在这个文件中。最后别忘记刷新一下项目,如下图所示:

附注说明:

有些文章在这里是用“文件>导入...>外部插件和段”来提供插件开发支持库的引用,本文不采用这种方法,因为这种会将支持库(也是一种插件项目)会新建很多相应项目,让开发界面显得很乱。还不如本文所用的建立库引用变量的方法方便简洁。

四、写源代码。

a) 新建一个包。方法如下图所示。

包名如下:

结果如下:

b) 然后将上一章的myplugin的SampleAction直接移动本项目myplugin2中就可以了(Eclipse支持鼠标拖拉操做)。

c) 本文SampleAction做了一些小修改(删除了注释和构造函数)。代码如下:

public class SampleAction implements IWorkbenchWindowActionDelegate {

private IWorkbenchWindow window;

public void run(IAction action) {

//这是打开一个提示窗口

MessageDialog.openInformation(window.getShell(), "myplugin 插件", "这是手工做的插件");

}

public void selectionChanged(IAction action, ISelection selection) {}

public void dispose() {}

public void init(IWorkbenchWindow window) {

this.window = window;

}

}

五、在plugin.xml文件中加入扩展点的代码。

库将本项目plugin.xml文件打开,并转到其源代码视图。将如下代码加入到“</runtime>”之后。(这些xml还是从上一章的项目搬过来的

<requires>

<import plugin="org.eclipse.core.resources"/>

<import plugin="org.eclipse.ui"/>

</requires>

<extension point="org.eclipse.ui.actionSets">

<actionSet label="样本操作集" visible="true" id="myplugin.actionSet">

<menu label="样本菜单" id="sampleMenu">

<separator name="sampleGroup"> </separator>

</menu>

<action

label="样本操作"

icon="icons/sample.gif"

class="com.glchengang.SampleAction"

tooltip="Hello,Eclipse world"

menubarPath="sampleMenu/sampleGroup"

toolbarPath="sampleGroup"

id="com.glchengang.SampleAction">

</action>

<action

label="样本操作2"

icon="icons/sample.gif"

class="com.glchengang.SampleAction"

tooltip="Hello,Eclipse world2"

menubarPath="sampleMenu/sampleGroup2"

toolbarPath="sampleGroup2"

id="com.glchengang.SampleAction2">

</action>

</actionSet>

</extension>

说明:

a) requires域中定义了该插件所要使用的依赖插件,随着开发的不断深入,这里将会填加更多的引用,现在两项就够了

b) 在extension中说明了要们要扩展org.eclipse.ui. actionSets扩展点, <actionSet>…..</ actionSet >表示一个action组(按钮、菜单)。还有其它类型的扩展点,如org.eclipse.ui.views是视图的扩展点,org.eclipse.ui.editors是编辑器的扩展点,各种扩展点在eclipse的帮助中有详细的说明。label是显示的名称。id是唯一标识符,只要保证在plugin.xml文件不存在重复的id就行了,这里建议以包路径和类名的组合来做为id。

c) <menu>….</menu>表示菜单separator标签是一个结束符,它可以对菜单分组

d) <action>....</action>表示按钮。Icon是图片的路径,绝对路径是什么大家实际对照就知道了,如果eclipse找不到这个图片,默认是一个红色实心小框。Class是这个按钮所对应的类,注意把包名写全,这样比较规范些。menubarPath表示把这个action做成一个菜单放在上前<menu>….</menu>定义的主菜单下。toolbarPath表示把这个action做成一个工具栏按钮。在这里为了方便比较我将这个action的设置复制成了两份,大家可以自己改改其中的设置,然后看看实际效果。

e) 各详细的plugin.xml大家可以参考eclipse自带的帮助文件,这里仅做一个入门性的说明。

六、按钮前面一章所说的方法运行插件(运行之前注意将原来那个向导做的myplugin项目关闭掉,关闭方法:鼠标右键点击此项目->弹出菜单中选择关闭项目)。插件效果如下图

参考文档

http://bsd.huangdong.com/dev/eclipseplugin/startup.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有