这一篇文章将记录一些Eclipse插件拓展(extension),简单讲述常用拓展的用法,但可能不会那么详细。
我的主要插件的拓展如下:
 
一、org.eclipse.ui.startup
这一个拓展可以说很关键,他可以让我们在eclipse启动时候做一些事件(之后很多小功能东西依靠它做的)。
XML配置:
<extension
point="org.eclipse.ui.startup">
<startup
class="com.bingo.start.BTStart">
</startup>
</extension> 
对应实现类:
public class BTStart implements IStartup
{
public BTStart() { } public void earlyStartup() { //无关UI的代码可写这里 Job job = new UIJob("") { public IStatus runInUIThread(IProgressMonitor monitor) {
try { //涉及到UI的代码写这里,不然将操作不了
} catch (ExecutionException e) {
e.printStackTrace();
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
} };
job.schedule(300L); //300ms后执行 }
}
二、org.eclipse.ui.newWizards
这个是向导拓展。就类似新建项目,然后下一步下一步的操作。
在这里我用来做新建应用模板的工程,在向导拓展里面实现应用模板生成。
XML配置:
<extension
point="org.eclipse.ui.newWizards">
<category
id="bt_project"
name="%category.name">
</category>
<wizard
category="bt_project"
class="com.bingo.perspective.ui.wizards.BTProjectWizard"
finalPerspective="com.bingo.ide.perspective"
icon="icons/eclipse16.png"
id="com.bingo.perspective.wizards.BTProjectWizard"
name="%projcet.name"
project="true">
</wizard>
</extension>

对应实现类:

public class BTProjectWizard extends Wizard implements INewWizard{
}
具体代码就不显示,BTProjectWizard 只是一个容器,他还需要添加WizardPage进去。
 
另外可以将向导拓展添加到右键菜单上。
XML配置如下:
<extension
point="org.eclipse.ui.navigator.navigatorContent">
<commonWizard
associatedExtensionId="org.eclipse.ui.navigator.resourceContent"
type="new"
wizardId="com.bingo.perspective.wizards.BTProjectWizard">
<enablement>
</enablement>
</commonWizard>
</extension>
三、org.eclipse.ui.menus
单独在菜单栏添加项。
例如:我添加一个同步菜单
XML配置:
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="menu:help?before=org.eclipse.equinox.p2.ui.sdk.install">
<command
commandId="com.bingo.perspective.ui.SyncHandler"
label="同步BingoTouch模板"
style="push">
</command>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="com.bingo.perspective.ui.handler.SyncHandler"
id="com.bingo.perspective.ui.SyncHandler"
name="同步BingoTouch模板">
</command>
</extension> 
实现类:
public class SyncHandler extends AbstractHandler
{ public SyncHandler()
{
} public Object execute(ExecutionEvent event)
throws ExecutionException
{
//检查模板版本
SyncResource.start();
return null;
}
}
四、org.eclipse.ui.perspectives
定义透视图
XML配置:
<extension
point="org.eclipse.ui.perspectives">
<perspective
class="com.bingo.perspective.BingoTouchPerspective"
fixed="true"
icon="icons/eclipse16.png"
id="com.bingo.ide.perspective"
name="%perspective.name">
</perspective>
</extension>
实现类:实现类内容就是对视图的布局,在第一篇文章里面有写。
 
五、org.eclipse.ui.actionSets
定义操作动作,可以放置到菜单栏或工具栏上。

XML配置:
<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="BingoTouch Action Set"
visible="true"
id="com.bingo.functions.actionSet">
<menu
label="%document.name"
id="btDoc">
<separator
name="btDocGroup">
</separator>
</menu>
<action
class="com.bingo.perspective.ui.actions.OnlineDocumentAction"
icon="icons/icon/faq.png"
id="btFAQ"
label="%faqdoc.name"
menubarPath="btDoc/btDocGroup"
toolbarPath="btDocGroup"
tooltip="%faqdoc.name">
</action>
<action
class="com.bingo.perspective.ui.actions.OnlineDocumentAction"
icon="icons/icon/uidoc.png"
id="btUIDoc"
label="%uidoc.name"
menubarPath="btDoc/btDocGroup"
toolbarPath="btDocGroup"
tooltip="%uidoc.name">
</action>
<action
class="com.bingo.perspective.ui.actions.OnlineDocumentAction"
icon="icons/icon/apidoc.png"
id="btApiDoc"
label="%apidoc.name"
menubarPath="btDoc/btDocGroup"
toolbarPath="btDocGroup"
tooltip="%apidoc.name">
</action>
</actionSet>
</extension>

里面menubarPath、toolbarPath操作按钮放或不放,放哪。

 
常用的拓展就先介绍到这里,目的是希望大家知道有这东西,而不是具体怎么实现。
 
本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。
本文地址 :http://www.cnblogs.com/lovesong/p/4693666.html

定制Eclipse IDE之功能篇(一)的更多相关文章

  1. 定制Eclipse IDE之功能篇(二)

    上文回顾:定制Eclipse IDE之功能篇(一)   这一篇文章将记录一些Eclipse插件小功能,Smart but Useful.   一.设置工作空间 文本文件的编码   解决办法: 在org ...

  2. 定制Eclipse IDE之插件篇(一)

    上文回顾:定制Eclipse IDE之功能篇(二) 在这篇文章中,我会将我定制eclipse用到的其他插件罗列出来. 一.汉化插件 Eclipse本身是英文显示的,我们能够通过插件汉化.  1. 选择 ...

  3. 定制Eclipse IDE之杂症篇

    上文回顾:定制Eclipse IDE之插件篇(二) 该篇将讲述在开发Eclipse 插件过程发生的疑难杂症.不谈功能,只说病症. 前言.拿哪个Eclipse作为定制的基础? 我建议是你用哪个Eclip ...

  4. 定制Eclipse IDE之插件篇(二)

    上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana. 一.aptana插件 官方的解释我就不说了,从下面图可以看到插件提供了什么功能,列 ...

  5. 定制Eclipse IDE之界面篇

    为什么要定制IDE?      在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候,我们可以做成一个产品,而这个产品将包括框架本身.文档.工具.教程等等.工具之中最重要的莫过于开发 ...

  6. 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一) - 视图&功能篇

    Eclipse Memory Analyzer Tool(MAT)相关文章目录: 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一) - 视图&功能篇 使 ...

  7. Eclipse IDE for C/C++ Developers安装配置详解

    Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...

  8. Maven、gradle、Ant、Eclipse IDE

    Maven.gradle.Ant.Eclipse IDE之间的关系 http://wenku.baidu.com/view/d33208810912a21615792910.html?from=sea ...

  9. eclipse ide for java ee developers 开发环境搭建(j2ee)

    转载自:http://www.iteye.com/topic/982182 真的是一片很不错的文章啊! 使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指 ...

随机推荐

  1. codeforces Gargari and Permutations(DAG+BFS)

    /* 题意:求出多个全排列的lcs! 思路:因为是全排列,所以每一行的每一个数字都不会重复,所以如果有每一个全排列的数字 i 都在数字 j的前面,那么i, j建立一条有向边! 最后用bfs遍历整个图, ...

  2. 邻接表有向图(二)之 C++详解

    本章是通过C++实现邻接表有向图. 目录 1. 邻接表有向图的介绍 2. 邻接表有向图的代码说明 3. 邻接表有向图的完整源码 转载请注明出处:http://www.cnblogs.com/skywa ...

  3. 蒙特·卡罗算法的Python实现

    一 背景 此算法诞生的背景是: 曼哈顿计划,有极大的计算需求. 计算机刚开始发展,最适合做计算. 蒙特卡洛算法理论基础是概率论,实际就是暴力计算逼近理想结果.正是在以上两个背景下,它刚好得到了极大的应 ...

  4. 常用mysql数据库引擎——MyISAM和InnoDB区别

    背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据 ...

  5. Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR

    <Windows Azure Platform 系列文章目录> 我们知道,Azure Web Site (改名为Azure Web App)默认是可以保留Session的.Azure We ...

  6. Java线程面试题 Top 50 (转载)

    转载自:http://www.cnblogs.com/dolphin0520/p/3958019.html 原文链接:http://www.importnew.com/12773.html   本文由 ...

  7. js文件合并,压缩,缓存,延迟加载

    做web前段也有一段时间了,对于web中js文件的加载有些体会想跟大家一起分享一下. 1.首先说说js文件的合并和压缩吧 为了便于集中式管理js的合并和压缩我们创建一个Js.ashx文件来专门处理合并 ...

  8. 用Qt写软件系列五:一个安全防护软件的制作(1)

    引言 又有许久没有更新了.Qt,我心爱的Qt,为了找工作不得不抛弃一段时间,业余时间来学一学了.本来计划要写一系列关于Qt组件美化的博文,但是写了几篇之后就没坚持下去了.技术上倒是问题不大,主要是时间 ...

  9. Python语言特性之5:自省

    自省是Python中非常耀眼的特性. 自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型.简单一句就是运行时能够获得对象的类型.比如 type() dir() getattr() hasat ...

  10. 【转】 CSS3实现10种Loading效果

    昨晚用CSS3实现了几种常见的Loading效果,虽然很简单,但还是分享一下,顺便也当是做做笔记…… PS:如需转载,请注明出处! 第1种效果: 代码如下: <div class="l ...