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文件之后加入下面的代码

 <?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension point="org.eclipse.ui.perspectives">
<perspective
name="myplugin 透视图"
icon="icons/selectall.gif"
class="cn.com.kxh.myplugin.SamplePerspective"
id="cn.com.kxh.myplugin.SamplePerspective">
</perspective>
</extension>
</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{
@Override
public 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">
<view
name="视图1"
icon="icons/prev.gif"
category="com.glkxh.myplugin.view"
class="cn.com.kxh.myplugin.View1"
id="cn.com.kxh.myplugin.View1">
</view>
<view
name="视图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

 public class View1 extends ViewPart {
private List list; // 将列表写成类的实例变量,以扩大它的可访问范围
//注意这个List并不是java.util包下的.而是org.eclipse.swt.widgets.List;包下的.
public void createPartControl(Composite parent) {
IWorkbenchHelpSystem help = PlatformUI.getWorkbench().getHelpSystem();
help.setHelp(parent, "cn.com.kxh.myplugin.buttonHelpId");
Composite topComp = new Composite(parent, SWT.NONE);
topComp.setLayout(new FillLayout());
list = new List(topComp, SWT.BORDER);
list.add("中国");
list.add("美国");
list.add("法国");
}
@Override
public void setFocus() {}
}

View2.java

 public class View2 extends ViewPart {
public void createPartControl(Composite parent) {
Composite topComp = new Composite(parent,SWT.NONE);
topComp.setLayout(new FillLayout());
Text text = new Text(topComp,SWT.BORDER);
text.setText("我是Text框");
}
public void setFocus() {}
}

之前的SamplePerspective.java

 public class SamplePerspective implements IPerspectiveFactory {
// 参数IPageLayout是用于透视图的布局管理器
public void createInitialLayout(IPageLayout layout) {
// 得到本透视图的编辑空间标识
String editorArea = layout.getEditorArea();
// 在透视图左部创建一个空间,并将“视图1”放入其中。
// "left"是此空间的标识;IPageLayout.LEFT指出此空间在透视图布局中的位置靠左;
// 0.2f 指此空间占用透视图20%的宽度;editorArea 指使用透视图的编辑空间
IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, 0.2f, editorArea);
left.addView("cn.com.kxh.myplugin.View1"); // 参数为plugin.xml中“视图1”的id标识
// 将“视图2”加入到透视图的底部
IFolderLayout bottom = layout.createFolder("bottom", IPageLayout.BOTTOM, 0.8f, editorArea);
bottom.addView(View2.class.getName());// 由于我们把视图的id取成和类全名一样,所以也可以用这种写法
// 将以前定义的actionset(主菜单、工具栏按钮)加入到本透视图。这要在plugin.xml文
// 件的action设置中将visible="false"才看得出效果,这时打开其他透视图,action设置的
// 主菜单、工具栏按钮将不会出现在界面上,只有打开本透视图才会出现。
layout.addActionSet("myplugin.actionSet");// 参数为actionSet在plugin.xml中的id标识
}
}

plugin.xml

 <?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension point="org.eclipse.ui.perspectives">
<perspective
name="myplugin 透视图"
icon="icons/selectall.gif"
class="cn.com.kxh.myplugin.SamplePerspective"
id="cn.com.kxh.myplugin.SamplePerspective">
</perspective>
</extension>
<extension point="org.eclipse.ui.views">
<view
name="视图1"
icon="icons/prev.gif"
category="com.glkxh.myplugin.view"
class="cn.com.kxh.myplugin.View1"
id="cn.com.kxh.myplugin.View1">
</view>
<view
name="视图2"
icon="icons/project.gif"
category="com.glkxh.myplugin.view"
class="cn.com.kxh.myplugin.View2"
id="cn.com.kxh.myplugin.View2">
</view>
</extension>
</plugin>

写完上述文件内容就会在Perspective中有了相应的View视图.

运行之后

这个地方说一下,当时我运行完之后左侧的视图1并没有出现,只出现了下部的视图2.其实这个时候只要在关闭"myplugin透视图"再打开就应该能够出现上图两个视图都存在的效果.

关于Eclipse插件开发(一)的更多相关文章

  1. Eclipse插件开发中对于Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)(转)

    目的:Eclipse插件开发中,经常要引用第三方包或者是引用其他插件中的类,由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同,经常导致开发过程OK,一旦运行则出现NoClassDefFo ...

  2. (地址)eclipse插件开发攻略的访问地址

    园子地址: http://www.cnblogs.com/liuzhuo/category/257208.html 关键字: Eclipse插件开发彻底攻略 eclipse插件开发基础篇之

  3. 【插件开发】—— 1 Eclipse插件开发导盲

    [插件开发]—— 1 Eclipse插件开发导盲   在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解.遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间. ...

  4. 【转】eclipse插件开发,调试运行,导出与安装

    [转自]http://www.kankanews.com/ICkengine/archives/61043.shtml 文章来自KENGINE | Kankanews.com 摘要: 本文主要讲ecl ...

  5. eclipse插件开发(一)

    eclipse本身是一个开源平台, 给用户提供了很多扩展点.我们完全可以开发属于自己的一套插件,安装在eclipse插件目录下,即可使用我们的插件. 下面说下eclipse插件的快速开发. 1.在ec ...

  6. Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点( FROM IBM)

    Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点 菜单是各种软件及开发平台会提供的必备功能,Eclipse 也不例外,提供了丰富的菜单,包括主菜单(Main Menu),视图 / ...

  7. Eclipse插件开发_异常_01_java.lang.RuntimeException: No application id has been found.

    一.异常现象 在运行RCP程序时,出现 java.lang.RuntimeException: No application id has been found. at org.eclipse.equ ...

  8. Eclipse插件开发_学习_00_资源帖

    一.官方资料 1.eclipse api 2.GEF Developer's Guide 二. 精选资料 1.开发 Eclipse 插件 2.Eclipse, RCP, Plugin and OSGi ...

  9. Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例

    <<Eclipse插件开发 学习笔记>>,本书由浅入深.有重点.有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章.第一篇介绍Eclipse平台界面开发的基础知识 ...

  10. 【eclipse插件开发实战】Eclipse插件开发7——插件发布jar包

    Eclipse插件开发7--插件发布jar包 最省事的方式就是直接导出jar包,然后放到eclipse的plugins目录下,重启eclipse即可. step1: 对需要打包的插件工程右击→导出(E ...

随机推荐

  1. Makefile.am讲解

    Makefile.am详解 实战Makefile.amMakefile.am是一种比Makefile更高层次的规则.只需指定要生成什么目标,它由什么源文件生成,要安装到什么目录等构成.表一列出了可执行 ...

  2. bzoj 1412 [ZJOI2009]狼和羊的故事(最小割)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1412 [题意] 在一个n*m的格子中,将羊和狼隔开的最小代价. [思路] 最小割. 由 ...

  3. ABAP开发基础知识:内表(Internal Table)

    http://www.cnblogs.com/foxting/archive/2012/03/19/2406830.html 内表与结构体基本类似,它同样是程序运行中被临时创建的一个存储空间,它是一个 ...

  4. JSON.parse: expected property name or '}'

    早上被这问题坑了一个小时有了.后台返回的json如下,一切正常,但是手动把下面的json复制到js代码中,一直提示“ JSON.parse: expected property name or '}' ...

  5. 第二十章、启动流程、模块管理与 Loader

    核心与核心模块 在整个启动的过程当中,是否能够成功地驱动我们主机的硬件配备, 是核心 (kernel) 的工作!而核心一般都是压缩档,因此在使用核心之前,就得要将它解压缩后, 才能加载主内存当中. 另 ...

  6. 把存储过程获取的数据输出到报表的html模板中

    制作报表的html模板 <HTML><meta http-equiv="Content-Type" content="text/html; charse ...

  7. VB.Net中点击按钮(Button)会重复提交两次表单

    在VB.NET程序开发过程中遇到一个问题 提交一个表单时,button的html代码如下 <asp:Button ID="btnSubmit" OnClick="c ...

  8. android http 通信(httpclient 实现)

    1.httpclient get 方式 HttpGet httpGet = new HttpGet(url); HttpClient client = new DefaultHttpClient(); ...

  9. hql注意事项一

    Space is not allowed after parameter prefix ':' [from EmPaperCatalogDef e where e.parentId =: pcdId]

  10. 【Away3D代码解读】其它一些的记录(持续更新)

    查看当前正在使用的AGAL代码可以在程序开始时添加下面的代码,AGAL代码会被trace出来: Debug.active = true; 具体的输出是在MaterialPassBase类的update ...