Eclipse插件开发之一:Hello World

原创 2006年05月26日 21:16:00

近日开始对Eclipse着迷,于是从图书馆里借了本Contributing to Eclipse,这本书是Erric Gamma, Kent Beck合著的,大师之作。

今天的收获是制作Eclipse插件的Hello World。

书中的说法稍微麻烦点,我在Eclipse3.1下做了如下实验:

1新建一个 plug-in的项目

2在向导里面选择Hello World项目实际上就可以了,向导都为我们做了。书上说的稍微繁琐一些,在这里真是令我感到意外的简单。

3这个项目已经可以运行了,运行时候要选择Eclipse插件运行配置,选择Eclipse应用程序配置,如图

3在plugin.xml里面,<menu>元素表示添加菜单分组,而Action表示添加菜单项,同时定义相应菜单的类,这个类继承于IWorkbenchWindowActionDelegate,执行菜单命令只需要实现run接口就可以了。

4我在plugin.xml里面添加了一个action元素,于是菜单又多了一个按钮。

5添加一个继承自IWorkbenchWindowActionDelegate的自定义类,并在plugin.xml里面指定class属性值为那个类,这样就实现了第二个helloword按钮。实现的功能是点击后弹出一个对话框,显示hello world。

附录

plugin.xml

 <?xml version="1.0" encoding="UTF-8"?>

<?eclipse version="3.0"?>
<plugin>
 
   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            label="Sample Action Set"
            visible="true"
            id="Hello.actionSet">
         <menu
               label="Sample &amp;Menu"
               id="sampleMenu">
            <separator
                  name="sampleGroup">
            </separator>
         </menu>        
         <action
               label="&amp;Sample Action"
               icon="icons/sample.gif"
               class="hello.actions.SampleAction"
               tooltip="Hello, Eclipse world"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="hello.actions.SampleAction">
         </action>
         <action
               label="&amp;Action2"
               icon="icons/sample.gif"
               class="hello.actions.actions2"
               tooltip="Hello, Eclipse world2"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="hello.actions.actions2">
         </action>
      </actionSet>     
   </extension>
 
</plugin>
 
 
SampleAction.java

package hello.actions;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.jface.dialogs.MessageDialog;

/**
 * Our sample action implements workbench action delegate.
 * The action proxy will be created by the workbench and
 * shown in the UI. When the user tries to use the action,
 * this delegate will be created and execution will be
 * delegated to it.
 * @see IWorkbenchWindowActionDelegate
 */
public class SampleAction implements IWorkbenchWindowActionDelegate {
 private IWorkbenchWindow window;
 /**
  * The constructor.
  */
 public SampleAction() {
 }

 /**
  * The action has been activated. The argument of the
  * method represents the 'real' action sitting
  * in the workbench UI.
  * @see IWorkbenchWindowActionDelegate#run
  */
 public void run(IAction action) {
  MessageDialog.openInformation(
   window.getShell(),
   "Hello Plug-in",
   "Hello, Eclipse world");
 }

 /**
  * Selection in the workbench has been changed. We
  * can change the state of the 'real' action here
  * if we want, but this can only happen after
  * the delegate has been created.
  * @see IWorkbenchWindowActionDelegate#selectionChanged
  */
 public void selectionChanged(IAction action, ISelection selection) {
 }

 /**
  * We can use this method to dispose of any system
  * resources we previously allocated.
  * @see IWorkbenchWindowActionDelegate#dispose
  */
 public void dispose() {
 }

 /**
  * We will cache window object in order to
  * be able to provide parent shell for the message dialog.
  * @see IWorkbenchWindowActionDelegate#init
  */
 public void init(IWorkbenchWindow window) {
  this.window = window;
 }
}

actions2.java

package hello.actions;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;

public class actions2 implements IWorkbenchWindowActionDelegate {

 private IWorkbenchWindow window;
 public void dispose() {

 }

 public void init(IWorkbenchWindow window) {
  this.window=window;

 }

 public void run(IAction action) {
  MessageDialog.openInformation(
    window.getShell(),
    "Hello World 2 Title",
    "This is Hello World 2");
 }

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

}

相关文章推荐

一个简单的Eclipse插件开发的例子——HelloWorld【转载】

前言现在在Internet上已经可以见到不少的Eclipse插件开发的入门文章,这里我写本文的目的主要是将我自己的体会和最开始的学习告诉给大家。 同时也希望本文能使用最为简单的方法来让大家了解开发Ec...

Eclipse插件开发(一)Hello World

  eclipse之所以如此强大,想必我们都看中了它众多的插件(plugin)功能吧,eclipse提供给我们的workspace本身就是它的一个插件。         eclipse为我们...

eclipse插件开发 Hello World

使用模板创建一个插件File -> New -> Other -> Plug-in Project 如果Wizards中没有Plub-in Project,可能因为使用的是Java SE版本的ecl...

谷歌插件开发(1)-hello world程序

学习HTML5和JAVASCRIPT已经有段时间了,所以想做一些在生活中有用的东西。这里一下子就想到浏览器上的插件了.之后就是百度一番,找到了一个学习的好网址:传送门。这是一个360的官方文档,感觉写...

WORDPRESS插件开发(一)HELLO WORLD

在每篇文章的后面追加固定的字符“Hello World” 一.打开wordpress目录->wp-content->plugins 二.在plugins下新建一个目录1100w-hello-w...

WORDPRESS插件开发(二)HELLO WORLD改进版

在上一篇文章中WORDPRESS插件开发(一)HELLO WORLD,演示了Hello World的最简单实现,只是在每篇文章的后面加入Hello World字符,而且字符也是写死的。 如果...

eclispe4.x插件开发一:hello world

eclipse4.x插件开发的文章介绍的有一部分,只是有些地方不够清晰,现在结合实例,提出几点需要注意的地方。 环境配置 eclipse:luna os:win-x86_64 一、基本的项目配置 1、...

AndroidStudio插件开发(Hello World篇)

工欲善其事必先利其器,自打从Eclipse转战AndroidStudio以来,还没彻底摆脱Eclipse。打算从开发AndroidStudio插件开始,彻底摆脱Eclipse。AndroidStudi...

Hello World (hadoop-eclipse插件安装与测试)

写在前面: 文章内容为2015年年初准备毕业设计时随手记录的笔记 注: 相关压缩包、文件丢到了:http://pan.baidu.com/s/1ntKGg0D  工具: ...
  • mxmxz
  • mxmxz
  • 2016年03月13日 22:32
  • 326

新手上路自学eclipse实现Hello World

  • 2009年10月30日 17:25
  • 396B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eclipse插件开发之一:Hello World
举报原因:
原因补充:

(最多只允许输入30个字)