1 概要

Eclipse依然是开发java的主流IDE之一, 技术公司如要提升开发侧的效率或者为产品吸引开发者,可以开发Eclipse插件。
本文将介绍Eclipse插件开发的一些点。

2 插件开发

2.1 按钮扩展

2.1.1 扩展菜单

扩展菜单扩展点org.eclipse.ui.menus,指定命令id。

2.1.2 实现命令


处理类继承AbstractHandler

2.2 偏好扩展

2.2.1 扩展页面

偏好页面扩展点:org.eclipse.ui.preferencePages。

2.2.2 页面实现

2.2.3 初始化偏好

插件激活的时候初始化:

2.3 向导扩展

向导提供创建项目或文件的指引式操作。

2.3.1 扩展配置

在扩展点配置org.eclipse.ui.newWizards。

2.3.2 实现向导

继承向导父类,实现向导接口。

2.3.3 实现页面


2.4 编辑器扩展

2.4.1 扩展配置

在扩展点配置org.eclipse.ui.editors。

2.4.2 编辑器实现

2.5 右键菜单

2.5.1 扩展配置

扩展扩展点 org.eclipse.ui.popupMenus, 配置如下,注意几个点,objectClass 指定项目结构资源树每个节点的对象的所属类,nameFilter 可以过滤后缀。action 配置多个,i就出现多个右键菜单。

<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="rcp.actions" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.html"> <actionid="actions.OpenUrlAction" label="打开页面" class="actions.OpenUrlAction"menubarPath="additions" enablesFor="1">          </action> <actionid="actions.CopyUrlAction" label="复制地址" icon="icons/copy_url.png" class="ctions.CopyUrlAction"menubarPath="additions" enablesFor="1">          </action> </objectContribution> </extension>

2.5.2 实现处理类

右键菜单的逻辑实现接口 IObjectActionDelegate ,处理run方法。如下:

public class OpenUrlAction implements IObjectActionDelegate {private TreeSelection selection;/*** 获取selection.* * @return the selection*/public TreeSelection getSelection() {return selection;}/*** {@inheritDoc}* * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)*/@SuppressWarnings("unused")@Overridepublic void run(IAction action) {TreePath[] paths = this.getSelection().getPaths();IFile file = (IFile) this.getSelection().getFirstElement();String url = HtmlUrlBuilder.getUrl(file);IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench().getBrowserSupport();try {IWebBrowser browser = browserSupport.createBrowser(file.getFullPath().toString());browser.openURL(new URL(url));} catch (PartInitException | MalformedURLException e) {e.printStackTrace();}}/*** {@inheritDoc}* * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,*      org.eclipse.jface.viewers.ISelection)*/@Overridepublic void selectionChanged(IAction action, ISelection selection) {this.selection = (TreeSelection) selection;}/*** {@inheritDoc}* * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,*      org.eclipse.ui.IWorkbenchPart)*/@Overridepublic void setActivePart(IAction action, IWorkbenchPart part) {// TODO Auto-generated method stub}}

2.6 获取浏览器支持

通过平台ui获取工作台,再获取浏览器支持,创建浏览器,打开url地址。

     IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench().getBrowserSupport();try {IWebBrowser browser = browserSupport.createBrowser(file.getFullPath().toString());browser.openURL(new URL(url));} catch (PartInitException | MalformedURLException e) {e.printStackTrace();}

2.7 控制台扩展

在控制台管理添加新建立的 MessageConsole 消息控制台,使用消息流MessageConsoleStream 输出文本信息和错误堆栈信息。

public class Console {private static MessageConsole console = findConsole();private static MessageConsoleStream stream;public static void println(String msg, Throwable e) {println(msg);try {OutputStreamWriter writer = new OutputStreamWriter(stream);PrintWriter s = new PrintWriter(writer);e.printStackTrace(s);writer.flush();// 刷才会输出} catch (IOException e1) {e1.printStackTrace();}}public static void println(String msg) {if (stream == null) {stream = console.newMessageStream();stream.setEncoding("utf-8");}stream.println(msg);}/*** * @return*/public static MessageConsole findConsole() {String name = "xxx";IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();IConsole[] consoles = consoleManager.getConsoles();for (IConsole console : consoles) {if (name.equals(console.getName())) {return (MessageConsole) console;}}MessageConsole console = new MessageConsole(name, null);consoleManager.addConsoles(new IConsole[] { console });return console;}public static void close() {if (stream != null) {IOUtils.closeQuietly(stream);}stream = null;}}

Eclipse插件开发相关推荐

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

    在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解.遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间.这里就总结一下学习的主要过程以及需要的资料. Ecli ...

  2. eclipse插件开发_开发Eclipse插件

    eclipse插件开发 最近,我开始与一个团队合作开发Eclipse插件. 团队开发了一个很棒的插件,可以实现预期的目的. 因此,我检查了源并尝试构建它. 项目源包含所有必需的库,并且只能在Eclip ...

  3. Eclipse 插件开发遇到问题心得总结

    Eclipse 插件开发遇到问题心得总结 Posted on 2011-07-17 00:51 季枫 阅读(3997) 评论(0) 编辑 收藏 1.Eclipse 中插件开发多语言的实现 为了使用 . ...

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

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

  5. eclipse插件开发示例

    eclipse所有的插件均以jar的形式存放在安装目录的plugins目录中,如果我们在eclipse中开发一个插件,最终也是需要打包为jar放入plugins目录中.eclipse插件开发也有一套流 ...

  6. 【eclipse】eclipse插件开发(一)

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

  7. eclipse插件开发资料 参考代码

    首页 zhangxinzhou 的BLOG 写留言 邀请进圈子 发消息 加友情链接 进家园 加好友 2011年度IT博客大赛 十大杰出IT博客评选中 博客统计信息 用户名:zhangxinzhou 文 ...

  8. [Eclipse插件开发-001] SWT/JFACE布局入门总结

    =============SWT布局管理器入门总结======================= 绝对定位: * setBounds(int x, int y, int width, int heig ...

  9. Eclipse 插件开发 向导

    阅读目录 最近由于特殊需要,开始学习插件开发. 下面就直接弄一个简单的插件吧! 1 新建一个插件工程 2 创建自己的插件名字,这个名字最好特殊一点,一遍融合到eclipse的时候,不会发生冲突. 3 ...

  10. [转]Eclipse插件开发之基础篇(2) 第一个Eclipse插件

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/15/eclipse_plugin_1_1_1.html 在Eclipse中使用PDE(Plug ...

最新文章

  1. keyshot材质中文目录_KeyShot10 Pro for Ma 苹果3D渲染动画制作软件 中文版下载
  2. Android 多进程调试技巧
  3. 例题;假设一张纸厚度为0.001米,对折多少次高度可以超过珠峰高度(8848)米。一个篮球第二次弹起的高度是第一次弹起高度的2/3,问弹起n次以后的高度是多少。 主要学习for循环...
  4. 机器学习:利用卷积神经网络实现图像风格迁移 (一)
  5. nas存储如何做远程服务器数据备份_备份数据?7 个理由告诉你为什么要用 NAS,而不用移动硬盘...
  6. 使用Python把PowerPoint文件转换为配乐MP4视频
  7. el table怎么获取最后一行_element中el-table单行暂无数据和整体暂无数据的默认修改...
  8. 猪猪的机器学习笔记(十五)主题模型
  9. SSH:Struts + Spring + Hibernate 轻量级Java EE企业框架
  10. 怎么查python题答案_超星尔雅Python语言应用查题教程
  11. Redundant Variable 多余变量
  12. 软件开发的早期为何要进行可行性研究?该从哪几个方面研究目标系统的可行性?...
  13. android studio字体加粗属性,android textview字体加粗 Android studio最新水平居中和垂直居中...
  14. Uncaught Error: Syntax error, unrecognized expression: |117的js错误
  15. 读《聪明人用方格笔记本》有图了有内容了
  16. 聊聊 iframe 的优缺点以及使用场景
  17. 使用JDBC操作MySQL数据库
  18. 2018华为软件精英挑战赛经验(一)
  19. Android设置自定义字体
  20. 数据结构实验---最短路径C实现附带及简单界面

热门文章

  1. 三阶交调截取点的测量
  2. android textview setellipsize,android中给TextView设置属性ellipsize
  3. AllenNLP安装
  4. GMV远超预期背后,快手电商做对了什么?
  5. 【VRP问题】基于模拟退火算法改进狼群算法求解带时间窗的车辆路径VRPTW问题附matlab代码
  6. 关于一些初级ACM竞赛题目的分析和题解(九)
  7. 微型计算机原理 考试试题,微机原理期末考试试题及答案
  8. php动态网站实训心得体会,十天学会写PHP动态网站
  9. matlab软件topsis分析,基于AHP—TOPSIS的渗透测试工具的综合评价方法与流程
  10. html5制作多彩照片墙,照片墙不是乱贴的,教你1分钟打造高逼格照片墙!