`

eclipse命令框架(一)

 
阅读更多


在eclipse中有两种方式添加菜单,上下文菜单,工具栏等,一种是IAction,另一种是command。犹豫IAction实现的时候UI跟业务是耦合在一起的,所以eclipse才推出command。

 

1.命令框架类图体系结构的概述:

 

 

 

 

2.创建一个简单完整的命令:

 

(1)扩展org.eclipse.ui.commands,此扩展点只是定义command而不实现其业务逻辑

 

 

<extension
         point="org.eclipse.ui.commands">
      <category
            id="com.leng.test.command.category"
            name="Category">
      </category>
      <command
            categoryId="com.leng.test.command.category"
            id="com.leng.test.command.command"
            name="Command">
      </command>
   </extension>

 

 

(2)扩展org.eclipse.ui.menus,menus跟命令本身没什么联系,但是它是命令的一个载体,命令存在了得有使用的地方,不然不就没有意义了么

 

 

<extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
         <toolbar
               id="com.eclipse-tips.commands.toolbar"
               label="Tool Bar">
            <command
                  commandId="com.leng.test.command.command"
                  id="com.leng.test.command.toolbar.command"
                  mnemonic="C"
                  style="push">
            </command>
         </toolbar>
      </menuContribution>
   </extension>
 

 

(3)扩展org.eclipse.ui.handlers,handlers扩展点才是实现命令的业务逻辑的,为什么要把UI跟业务逻辑分离出来,主要是考虑到UI是不应该被依赖的,但是业务是可以的。UI插件如果被依赖,会造成不想出现的控件出现在界面上。

 

 

<extension
         point="org.eclipse.ui.handlers">
      <handler
            class="com.leng.test.command.CommandHandler"
            commandId="com.leng.test.command.command">
      </handler>
   </extension>
 

 

(4)扩展org.eclipse.ui.commandImages,为命令扩展一个图标

 

<extension
         point="org.eclipse.ui.commandImages">
      <image
            commandId="com.leng.test.command.command"
            icon="com.leng.test.command.image1">
      </image>
   </extension>
 

 

3.创建命令的方式:

 

(1)使用扩展点的方式创建:

 

 

<extension
       point="org.eclipse.ui.commands">
    <category
          description="Actions take at lunch time."
          id="z.ex.view.keybindings.category"
          name="Lunch">
    </category>
    <command
          categoryId="z.ex.view.keybindings.category"
          description="Go for the taco."
          id="z.ex.view.keybindings.eatTaco"
          name="Eat That Taco">
    </command>
</extension>

 

 

(2)在代码中直接添加命令(如下是在视图中创建):

 

 

ICommandService cmdService = (ICommandService) getSite().getService(
    ICommandService.class);
Category lunch = cmdService
    .getCategory("z.ex.view.keybindings.category");
if (!lunch.isDefined()) {
  lunch.define("Lunch", "Actions take at lunch time.");
}
Command eatTaco = cmdService
    .getCommand("z.ex.view.keybindings.eatTaco");
if (!eatTaco.isDefined()) {
  eatTaco.define("Eat That Taco", "Go for the taco.", lunch);
}
 

 

分享到:
评论

相关推荐

    eclipse插件 - jQuery

    我们在编写js的时候,如果采用了jquery框架,当然很希望Eclipse能帮我们完成代码自动完成的功能了,但Eclipse默认只是支持js的代码自动完成,利用这个插件,可以让Eclipse支持jquery的代码自动完成功能(前提:...

    eclipse 开发c/c++

    因为 Eclipse 平台只是用于开发者工具的一个框架,它不直接支持 C/C++;它使用外部插件来提供支持。 本文将向您演示如何使用 CDT — 用于 C/C++ 开发的一组插件。CDT 项目(有关链接, 请参阅本文后面的 参考资料...

    JIDE Action Framework(动作框架)开发员技术手册

    杰笛动作框架就提供一个比Swing自带的更好的工具栏和菜单栏。它提供了一个叫命令栏(CommandBar)的组件,可以取代Swing自带的JToolBar和JMenuBar。 杰笛动作框架有各种各样的风格。在当前的版本里,我们提供了...

    eclipse-license-management-tools:Eclipse 许可证管理工具(原型)

    它可以作为在Eclipse Foundation下拥有这样一个项目的概念证明和讨论的基础。 这样的讨论已经在邮件列表中进行: : 概述该项目由几个模块组成: 框架 - 许可证管理框架,提供用于添加和删除许可证密钥的用户界面,...

    eclipse-smarthome

    请注意,Eclipse SmartHome本身不是产品,而是在顶部构建解决方案的框架。 这意味着您构建的内容主要是可在智能家居产品中使用的OSGi捆绑包的工件存储库。 除了该存储库之外,还有一个名为“ Designer”的工具。 该...

    CTS基础框架tradefederation

    CTS测试框架的基础框架,tradefederation,依赖的jar包也都在压缩包里,解压之后可以在eclipse中使用。

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 06.ssm框架整合思路.avi │ 07.ssm框架整合.avi │ 08.测试工程.avi │ 打开必读.txt │ 淘淘商城第一天笔记.docx │ ├─02.第二天 │ 07.商品类目选择完成.avi │ 01.课程计划.avi │ 02.展示首页.avi │ 03....

    Android插件框架Android-Plugin-Framework.zip

    (虽然没有用过apkplug、以及另外一个插件框架作者singwhatiwanna写的DL框架,但是看过他们的一些介绍文档,感觉自己的这份实现应该是更简单易用更完善。。。哈哈,是不是有王婆卖瓜的嫌疑。) 已支持的功能...

    IronPython应用框架AuoPyTest(WinAPI/WatiN/SshScp/Dll插件反射等)

    本工具提供一个python和C#动态支持的框架(内置对象为Ipy_this): (a) Scripts目录下含多个应用例子,窗体测试(WinAPI)、Web测试(WatiN)、WebAPI测试、LinuxSSH和SCP等。 (b) 自动化测试、自动任务均可以通过...

    RobotFramework自动化框架搭建步骤(Python+RobotFramework。。。.pdf

    Robot Framework⾃动化框架由Python+Robot Framework+Eclipse组成的,具体步骤如下: 说明:安装主要分为两部分,第⼀部分是Python和robot Framework库的安装;第⼆部分是Eclipse中相关插件的安装,可以在eclipse中...

    LIMES:度量空间的链接发现框架

    LIMES-度量空间的链接发现... 请从limes-core/目录运行以下命令: mvn eclipse:eclipse然后,在Eclipse上更新项目。如何引用@article{KI_LIMES_2021, title={{LIMES - A Framework for Link Discovery on the Semant

    基于SSH 框架,可成功部署于新浪SAE java的Demo

    1、本示例是在BAE官方示例的基础上进行修改...7、sae-eclipse.zip 里面是sae 的eclipse插件,官方有教程如何使用,可以方便更新文件。 8、如果有任何疑问,可以联系deejac@qq.com 有问必答 完整售后 10分一点都不高哦。

    com.packtpub.e4.advanced:“高级 Eclipse 插件开发”一书的代码库 978-1783287796

    第 1 章:插入 JFace 和 Common Navigator 框架 第 2 章:使用自定义扩展点扩展 Eclipse 第 3 章:使用 OSGi 服务动态连接应用程序 第 4 章:为 Gogo shell 定义命令 第 5 章:本机代码和片段包 第 6 章:理解服务...

    webapp_sample:一个基于Velocity+SpringMVC+Spring+MyBatis架构的网站示例

    这是一个基于Velocity+SpringMVC+...3)运行gradle eclipse命令,生成eclipse工程所需的文件。 4)将工程导入eclipse中,右键点击工程,选择Configure-&gt;Convert to Gradle Project。 至此,工程的大框架就已经搭好了。

    大数据技术原理与应用实验

    实验六 Eclipse开发插件配置 64 实验七 HDFS Java API编程 69 第三章 分布式协调服务系统ZooKeeper 75 实验八 Zookeeper安装部署 75 实验九 Zookeeper Shell命令使用 79 实验十 Zookeeper Java API编程 82 第四章 ...

    maven-hadoop-java-wordcount-template:这是一个 Maven Hadoop Java 项目模板。 这个样板框架代码包含一个 Driver、一个 Mapper 和一个 Reducer,可以用你的代码修改(它们包含经典的 wordcount 示例)

    这个样板框架代码包含一个 Driver、一个 Mapper 和一个 Reducer,可以用您的代码修改(它们包含经典的 wordcount 示例)。 在您可以找到有关如何在 Eclipse 中导入项目并对其进行修改的说明,以及有关 Hadoop 作业...

    java开源包1

    SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来控制 Linux 桌面,例如打开google搜索、鼠标点击、下一窗口、打开帮助、静音等操作。 Java发送短信包...

    java开源包11

    SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来控制 Linux 桌面,例如打开google搜索、鼠标点击、下一窗口、打开帮助、静音等操作。 Java发送短信包...

    java开源包2

    SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来控制 Linux 桌面,例如打开google搜索、鼠标点击、下一窗口、打开帮助、静音等操作。 Java发送短信包...

Global site tag (gtag.js) - Google Analytics