关于Eclipse插件开发(一)
plugin.xml是插件和Eclipse内核的接口,Eclipse就像一所大宅子.它的外墙(plugin.xml)有很多门(扩展点),
要熟练进入这座大宅子,就得先搞清楚它有那些门(扩展点).
插件的扩展点非常多,但是很多扩展点都用不到,只需要熟悉一些主要的扩展点就可以了.
在新版本的Eclipse中建立一个plugin-project项目的时候(同时建立的过程中不选用Eclipse中提供的模板的话),是不生成plugin.xml文件的(如果选择了Eclipse中提供的模板是一定会生成plugin.xml文件的),在Eclipse3.0之前的版本貌似都会建立的时候就自动生成.
所以在Eclipse3.0之后在建立项目的过程中不选择模板,又想生成plugin.xml文件的方法:
先双击"MANIFEST.MF"然后在"Extensions"选项卡上点击"Add"这时候就会生成plugin.xml文件了.
加入透视图(perspectives)
开发一个插件最常用的就是新增一个属于本插件专有的透视图.然后在此透视图基础上来展开一些功能,本书 也采用这种方式.
打开plugin.xml文件之后加入下面的代码
1 <?xml version="1.0" encoding="UTF-8"?> 2 <?eclipse version="3.4"?> 3 <plugin> 4 <extension point="org.eclipse.ui.perspectives"> 6 <perspective 7 name="myplugin 透视图" 8 icon="icons/selectall.gif" 9 class="cn.com.kxh.myplugin.SamplePerspective" 10 id="cn.com.kxh.myplugin.SamplePerspective"> 11 </perspective> 12 </extension> 13 </plugin>
注意这个地方别有单词写错.否则你懂得.
代码说明:
org.eclipse.ui.perspectives:透视图的扩展点.
name:透视图的名称
icon:透视图的图标
class:透视图所对应的类(还没有编写,下一步将完成此类)
id:透视图的唯一标识符,取和class相同的名称,免得以后扩展点太多记不住.
也可以用GUI界面来创建扩展点.
然后再去建立一个透视图类
前面在plugin.xml中设置了透视图对应的SamplePerspective类,这里就在包cn.com.kxh.myplugin下创建此类,透视图类必须实现IPerspectiveFactory接口.此接口只有一个需要实现的方法createInitialLayout,先让他空实现.如下所示:
public class SamplePerspective implements IPerspectiveFactory{@Overridepublic void createInitialLayout(IPageLayout arg0) {// TODO Auto-generated method stub } }
这样再次启动Eclipse之后就会在Perspective视图中发现这个定义的"myplugin透视图"
在透视图(perspective)中加入视图(views)
修改plugin.xml文件,设置视图的扩展点.
打开plugin.xml文件的编辑框,将如下代码块插入到最后一行的</plugin>之前:
<extension point="org.eclipse.ui.views"><viewname="视图1"icon="icons/prev.gif"category="com.glkxh.myplugin.view"class="cn.com.kxh.myplugin.View1"id="cn.com.kxh.myplugin.View1"></view><viewname="视图2"icon="icons/project.gif"category="com.glkxh.myplugin.view"class="cn.com.kxh.myplugin.View2"id="cn.com.kxh.myplugin.View2"></view></extension>
上述代码说明:
org.eclipse.ui.views是视图的扩展点.
<category>项设置的分组名以及id标识,它的效果体现在"显示视图"框中,(Eclipse中找到"Window---->Show View----->other"这个命令中打开.)现在还没有创建视图类,暂时还看不到效果.id标识要保证它在Eclipse的所有插件中唯一.假设和Ant插件的id相同.则原Ant插件的id相同,则原Ant组就会被myplugin视图抹掉.如果删除<category>不设置,这Eclipse中会自动新增一个"其他"组.并将两个视图加入.
<view>的category是标识本视图属于哪个组,与上面的<category>项的id值相同.
<view>的class是视图所对应的类(现在暂时还没有编写)
<view>的id是视图标识,建议设置成和class一样的名称.
创建一个视图类.
View1.java
1 public class View1 extends ViewPart { 2 private List list; // 将列表写成类的实例变量,以扩大它的可访问范围 3 //注意这个List并不是java.util包下的.而是org.eclipse.swt.widgets.List;包下的. 4 public void createPartControl(Composite parent) { 5 IWorkbenchHelpSystem help = PlatformUI.getWorkbench().getHelpSystem(); 6 help.setHelp(parent, "cn.com.kxh.myplugin.buttonHelpId"); 7 Composite topComp = new Composite(parent, SWT.NONE); 8 topComp.setLayout(new FillLayout()); 9 list = new List(topComp, SWT.BORDER); 10 list.add("中国"); 11 list.add("美国"); 12 list.add("法国"); 13 } 14 @Override 15 public void setFocus() {} 16 }
View2.java
1 public class View2 extends ViewPart { 2 public void createPartControl(Composite parent) { 3 Composite topComp = new Composite(parent,SWT.NONE); 4 topComp.setLayout(new FillLayout()); 5 Text text = new Text(topComp,SWT.BORDER); 6 text.setText("我是Text框"); 7 } 8 public void setFocus() {} 9 }
之前的SamplePerspective.java
1 public class SamplePerspective implements IPerspectiveFactory { 2 // 参数IPageLayout是用于透视图的布局管理器 3 public void createInitialLayout(IPageLayout layout) { 4 // 得到本透视图的编辑空间标识 5 String editorArea = layout.getEditorArea(); 6 // 在透视图左部创建一个空间,并将“视图1”放入其中。 7 // "left"是此空间的标识;IPageLayout.LEFT指出此空间在透视图布局中的位置靠左; 8 // 0.2f 指此空间占用透视图20%的宽度;editorArea 指使用透视图的编辑空间 9 IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, 0.2f, editorArea); 10 left.addView("cn.com.kxh.myplugin.View1"); // 参数为plugin.xml中“视图1”的id标识 11 // 将“视图2”加入到透视图的底部 12 IFolderLayout bottom = layout.createFolder("bottom", IPageLayout.BOTTOM, 0.8f, editorArea); 13 bottom.addView(View2.class.getName());// 由于我们把视图的id取成和类全名一样,所以也可以用这种写法 14 // 将以前定义的actionset(主菜单、工具栏按钮)加入到本透视图。这要在plugin.xml文 15 // 件的action设置中将visible="false"才看得出效果,这时打开其他透视图,action设置的 16 // 主菜单、工具栏按钮将不会出现在界面上,只有打开本透视图才会出现。 17 layout.addActionSet("myplugin.actionSet");// 参数为actionSet在plugin.xml中的id标识 18 } 19 }
plugin.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <?eclipse version="3.4"?> 3 <plugin> 4 <extension point="org.eclipse.ui.perspectives"> 5 <perspective 6 name="myplugin 透视图" 7 icon="icons/selectall.gif" 8 class="cn.com.kxh.myplugin.SamplePerspective" 9 id="cn.com.kxh.myplugin.SamplePerspective"> 10 </perspective> 11 </extension> 12 <extension point="org.eclipse.ui.views"> 13 <view 14 name="视图1" 15 icon="icons/prev.gif" 16 category="com.glkxh.myplugin.view" 17 class="cn.com.kxh.myplugin.View1" 18 id="cn.com.kxh.myplugin.View1"> 19 </view> 20 <view 21 name="视图2" 22 icon="icons/project.gif" 23 category="com.glkxh.myplugin.view" 24 class="cn.com.kxh.myplugin.View2" 25 id="cn.com.kxh.myplugin.View2"> 26 </view> 27 </extension> 28 </plugin>
写完上述文件内容就会在Perspective中有了相应的View视图.
运行之后
这个地方说一下,当时我运行完之后左侧的视图1并没有出现,只出现了下部的视图2.其实这个时候只要在关闭"myplugin透视图"再打开就应该能够出现上图两个视图都存在的效果.
本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4172290.html,如需转载请自行联系原作者
关于Eclipse插件开发(一)相关推荐
- 【插件开发】—— 1 Eclipse插件开发导盲
在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解.遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间.这里就总结一下学习的主要过程以及需要的资料. Ecli ...
- eclipse插件开发_开发Eclipse插件
eclipse插件开发 最近,我开始与一个团队合作开发Eclipse插件. 团队开发了一个很棒的插件,可以实现预期的目的. 因此,我检查了源并尝试构建它. 项目源包含所有必需的库,并且只能在Eclip ...
- Eclipse 插件开发遇到问题心得总结
Eclipse 插件开发遇到问题心得总结 Posted on 2011-07-17 00:51 季枫 阅读(3997) 评论(0) 编辑 收藏 1.Eclipse 中插件开发多语言的实现 为了使用 . ...
- Eclipse插件开发中对于外部Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)...
目的:Eclipse插件开发中,经常要引用第三方包或者是引用其他插件中的类,由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同,经常导致开发过程OK,一旦运行则出现NoClassDefFo ...
- eclipse插件开发示例
eclipse所有的插件均以jar的形式存放在安装目录的plugins目录中,如果我们在eclipse中开发一个插件,最终也是需要打包为jar放入plugins目录中.eclipse插件开发也有一套流 ...
- 【eclipse】eclipse插件开发(一)
eclipse本身是一个开源平台, 给用户提供了很多扩展点.我们完全可以开发属于自己的一套插件,安装在eclipse插件目录下,即可使用我们的插件. 下面说下eclipse插件的快速开发. 1.在ec ...
- eclipse插件开发资料 参考代码
首页 zhangxinzhou 的BLOG 写留言 邀请进圈子 发消息 加友情链接 进家园 加好友 2011年度IT博客大赛 十大杰出IT博客评选中 博客统计信息 用户名:zhangxinzhou 文 ...
- [Eclipse插件开发-001] SWT/JFACE布局入门总结
=============SWT布局管理器入门总结======================= 绝对定位: * setBounds(int x, int y, int width, int heig ...
- Eclipse 插件开发 向导
阅读目录 最近由于特殊需要,开始学习插件开发. 下面就直接弄一个简单的插件吧! 1 新建一个插件工程 2 创建自己的插件名字,这个名字最好特殊一点,一遍融合到eclipse的时候,不会发生冲突. 3 ...
- [转]Eclipse插件开发之基础篇(2) 第一个Eclipse插件
原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/15/eclipse_plugin_1_1_1.html 在Eclipse中使用PDE(Plug ...
最新文章
- 【6】nagios从零学习使用 - centreon发送邮件报警
- Windows Server_2008下搭建个人下载服务器(FTP)
- 采用nettcp绑定的wcf宿主到iis7
- 如何一键查看你的QQ/绑定了多少应用?
- NCBI引物设计-查找目的基因前后序列方法、序列比对
- 数据分析5大软件大PK:Python、Excel、R、SAS、SPSS你最爱哪个?
- 10K 3435热敏电阻阻值表
- nnie yolov3 svp
- 数据分析报告怎么写?
- HTML5 影音 ( Video ) 概論
- 房屋安全鉴定报告的有效期及两种鉴定类型
- 19年6月英语六级阅读单词
- web前端学习(CSS篇)
- 【算法竞赛进阶指南】CH5202 自然数拆分Lunatic版 完全背包
- 基于STC89C52单片机的蔬菜大棚实时温度测量控制系统
- 上海大学计算机学院卞韬,我校计算机工程与科学学院学生在CCPC中国大学生程序设计竞赛中喜获金奖...
- 二分查找法的基本思想与实现代码
- Python计算Y通道或者RGB通道的PSNR_SSIM
- 国标28181:从打电话的过程,理解SIP协议
- VMware Workstation 下载和安装