`

操作Action

 
阅读更多

 

 

IActionDelegate的子类型有IWorkbenchWindowActionDelegate为工作台窗口的菜单栏和工具栏提供生命周期事件,还有:

IEditorActionDelegate为编辑器中的操作提供生命周期事件;

IObjectActionDelegate为快捷键相关联的操作代理提供生命周期事件;

IViewActionDelegate为视图中的操作提供生命周期事件;

 

 

IWorkbenchWindowActionDelegate接口中的方法:

//每次执行该操作时,都会执行该方法,init方法只有第一次才会执行,后面就不会执行了

public void run(IAction action) 

//当用户焦点离开该操作创建的视图等等时,会执行该方法

public void selectionChanged(IAction action, ISelection selection) 

//该关闭eclipse时,才会调用该方法

public void dispose()

//当第一次执行该操作时,创建该对象后,首先执行init方法,然后执行run方法

public void init(IWorkbenchWindow window) 


 

 

操作可以在许多地方出现,如菜单栏、工具栏和上下文菜单,它丰富了编辑器的功能,增强的用户的体验。

eclipse中的操作既可以通过扩展点定义,也可以通过代码定义。

 

工具栏的按钮被分为多个组,每个组叫一个操作集(action set),用来集合一组相关的操作。

 

操作集扩展的使用(该扩展点主要是为了添加菜单栏和工具栏按钮的):

<extension

         point="org.eclipse.ui.actionSets">

      <actionSet

            //引用该操作的唯一标识符

            id="com.plugindev.addressbook.actionSet"

            //出现在window->customize perspective 中的标识符

            label="地址本操作"

            //表示初始状态是否可见

            visible="true">

         //用于定义出现在菜单栏中的菜单

         <menu

               //菜单的唯一标识符

               id="AddressBookMenu"

               //菜单的名称,还有个属性path表示在何处插入此菜单

               label="地址本">

            <separator name="content"/>

         </menu>

         定义操作

         <action

               //操作的代理,必须实现IWorkbenchWindowActionDelegate或者               //IWorkbenchWindowPulldownActionDelegate(实现下拉式的工具栏按钮)

               class="com.plugindev.addressbook.actions.OpenAddressViewAction"

               //操作的命令标识符,将该操作绑定到哪个命令上

               definitionId="com.plugindev.addressbook.commands.openAddressView"

               //与该操作关联的图像,出现在工具栏

               icon="icons/sample.gif"

               引用该操作的唯一标识符

               id="com.plugindev.addressbook.actions.OpenAddressViewAction"

               //出现在菜单中的名称

               label="打开视图"

               //表示操作出现在菜单栏中的位置,表示出入到上面定义菜单的content中

               menubarPath="AddressBookMenu/content"

               //表示操作出现工具栏中的位置,Normal为工具栏的标识符,addition是工具栏中的组

               toolbarPath="Normal/addition"

               //用于工具栏按钮的提示信息

               tooltip="在当前透视图中打开地址本视图"/>

      </actionSet>

   </extension>

 

 

 

视图操作包含视图上下文菜单、视图工具栏按钮、视图工具栏的下拉菜单。这些操作都可以通过编程的方式来实现。

popupMenus扩展点,可以为插件添加上下文菜单,并提供需要的菜单项。

 

<extension

         point="org.eclipse.ui.popupMenus">

      //与上下文特点对象相关联的操作,只有选择该对象才会出现该菜单

      <objectContribution

            //默认为fasle,指出适配IResource对象可接受的目标

            adaptable="false"

            //此操作的唯一标识符

            id="com.plugindev.addressbook.example.objectActionTest"

            //过滤器,表示可接受的目标名称

            nameFilter="T*"

            //表示可接受的目标类型,类型必须是String,其他类型不行

            objectClass="java.lang.String">

         <menu

               id="exampleMenu"

               label="示例菜单"

               path="additions">

            <separator name="example"/>

         </menu>

         <action

               //操作代理类,必须实现IObjectActionDelegate接口

               class="com.plugindev.addressbook.example.ObjExampleAction"

               //表示多选是否也支持该操作,+表示支持,1表示不支持

               enablesFor="1"

               id="com.plugindev.addressbook.objExampleAction"

               label="对象示例操作"

               menubarPath="exampleMenu/example"

               tooltip="举例说明如何添加对象操作"/>

      </objectContribution>

</extension>

 

IObjectActionDelegate接口中方法的调用时机:

//右键选择目标对象时,先调用这个方法后再调用select,每次右键选择都会执行这2个方法

public void setActivePart(IAction action, IWorkbenchPart targetPart)

public void selectionChanged(IAction action, ISelection selection)

//选择相应菜单项时,执行该方法

public void run(IAction action) 

 

 

 

<extension

         point="org.eclipse.ui.popupMenus">

  //为视图添加上下文菜单,针对所有的对象

  <viewerContribution

            id="com.plugindev.addressbook.example.viewerActionTest"

            //表示为哪个视图提供操作

            targetID="com.plugindev.addressbook.views.AddressView">

         <menu

               id="com.plugindev.viewToolbarMenu"

               label="示例工具栏菜单"

               path="additions">

            <separator name="example"/>

         </menu>

         <action

               //操作代理类必须实现IViewActionDelegate接口

               class="com.plugindev.addressbook.example.ViewerExampleAction"

               enablesFor="+"

               id="com.plugindev.addressbook.viewerExampleAction"

               label="查看器示例操作"

               menubarPath="com.plugindev.viewToolbarMenu/example"

               tooltip="举例说明如何添加查看器操作"/>

      </viewerContribution>

</extension>

 

 

 

<extension

         point="org.eclipse.ui.popupMenus">

 //为编辑器的上下文菜单提供操作

 <viewerContribution

            id="com.plugindev.addressbook.example.editorActionTest"

            //表示为哪个编辑器提供上下文菜单,在此表示eclipse默认的文本编辑器

            targetID="#TextEditorContext">

         <menu

               id="com.plugindev.defaultEditorMenu"

               label="示例编辑器菜单"

               path="additions">

            <separator name="example"/>

         </menu>

         <action

               //操作代理类必须实现IEditorActionDelegate接口

               class="com.plugindev.addressbook.example.EditorExampleAction"

               icon="icons/sample.gif"

               id="com.plugindev.addressbook.editorExampleAction"

               label="编辑器操作"

               menubarPath="com.plugindev.defaultEditorMenu/example"

               tooltip="举例说明如何添加编辑器操作"/>

      </viewerContribution>

</extension>

 

//用户定义编辑器的上下文菜单

<viewerContribution

            id="com.plugindev.addressbook.example.editorActionTest"

            targetID="#TextEditorContext">

         <menu

               id="com.plugindev.defaultEditorMenu"

               label="示例编辑器菜单"

               path="additions">

            <separator name="example1"/>

            <separator name="example2"/>

         </menu>

//只有action的ID不同,可以放置多个action,并定义它在菜单中出现的位置

         <action

               class="com.plugindev.addressbook.example.EditorExampleAction"

               icon="icons/sample.gif"

               id="com.plugindev.addressbook.editorExampleAction"

               label="编辑器操作2"

               menubarPath="com.plugindev.defaultEditorMenu/example1"

               tooltip="举例说明如何添加编辑器操作"/>

          <action

               class="com.plugindev.addressbook.example.EditorExampleAction"

               icon="icons/sample.gif"

               id="com.plugindev.addressbook.editorExampleAction2"

               label="编辑器操作2"

               menubarPath="com.plugindev.defaultEditorMenu/example2"

               tooltip="举例说明如何添加编辑器操作"/>

      </viewerContribution>

 

 

 

 

//此扩展点用于添加视图工具栏按钮

 <extension

         point="org.eclipse.ui.viewActions">

      //要和viewerContribution区别开来

      <viewContribution

            id="com.plugindev.addressbook.example.viewActionTest"

            targetID="com.plugindev.addressbook.views.AddressView">

         <action

               //操作代理类必须实现IViewActionDelegate接口

               class="com.plugindev.addressbook.example.ViewExampleAction"

               icon="icons/sample.gif"

               id="com.plugindev.addressbook.viewExampleAction"

               label="视图操作"

               menubarPath="com.plugindev.addressViewPullDownMenu/example"

               style="push"

               toolbarPath="additions"

               tooltip="举例说明如何添加视图操作"/>

         <menu

               id="com.plugindev.addressViewPullDownMenu"

               label="下拉菜单示例"

               path="addtions">

            <separator name="example"/>

         </menu>

      </viewContribution>

   </extension>

      </editorContribution>

   </extension>

 

 

为编辑器添加顶层工作台菜单和工具栏按钮,要扩展org.eclipse.ui.editorActions扩展点。与org.eclipse.ui.actionSets扩展点不同,后者对任何视图都可见,前者只对定义的

 

视图可见。

<extension

         point="org.eclipse.ui.editorActions">

      <editorContribution

            id="com.plugindev.addressbook.example.editorActionTest"

            //定义对默认的文本编辑器显示顶层菜单和工具栏

            targetID="org.eclipse.ui.DefaultTextEditor">

         <menu

               id="com.plugindev.defaultEditorMenu"

               label="顶层编辑器菜单"

               path="additions">

            <separator name="example"/>

         </menu>

         <action

               //操作代理必须实现IEditorActionDelegate接口

               class="com.plugindev.addressbook.example.TopEditorAction"

               icon="icons/sample.gif"

               id="com.plugindev.addressbook.TopEditorAction"

               label="顶层编辑操作"

               menubarPath="com.plugindev.defaultEditorMenu/example"

               style="push"

               toolbarPath="Normal/additions"

               tooltip="编辑器操作示例"/>

      </editorContribution>

   </extension>

 

 

键绑定策略

 

命令是键序列与相应操作之间的桥梁,当按下快捷键时,通过命令就可以找到相应的操作

操作通过定义 definitionId来与命令ID相关联,绑定通过定义commandId与命令ID相关联

 

<extension

         point="org.eclipse.ui.commands">

      //定义命令所属的类别

      <category

            description="地址本插件添加的命令"

            id="com.plugindev.addressbook.commands"

            name="地址本"/>

      <command

            categoryId="com.plugindev.addressbook.commands"

            description="打开地址本视图"

            id="com.plugindev.addressbook.commands.openAddressView"

            name="打开地址本"/>

      <command

            categoryId="com.plugindev.addressbook.commands"

            description="打开地址本视图222"

            id="com.plugindev.addressbook.commands.openAddressView22"

            name="打开地址本222"/>

   </extension>

   <extension

         point="org.eclipse.ui.bindings">

      <key

            commandId="com.plugindev.addressbook.commands.openAddressView"

            contextId="org.eclipse.ui.contexts.window"

            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"

            sequence="CTRL+SHIFT+V"/>

       <key

            commandId="com.plugindev.addressbook.commands.openAddressView22"

            //激活键序列时的上下文环境

            contextId="org.eclipse.ui.contexts.window"

            //激活键序列所使用的配置

            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"

            //键序列

            sequence="CTRL+SHIFT+V"/>

   </extension>

 

 

分享到:
评论

相关推荐

    使用Struts的Action和Hibernate来对数据库进行增、删、改、查四项操作(源码)

    1、数据库MySQL,连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明 用户root 密码password 不同的进行相应的改变。 &lt;br/&gt;Tomcat数据库连接池配置: Server.xml 增加如下内容:...

    uni-swipe-action组件实现列表项左划操作

    应用uni-swipe-action组件实现列表项左划操作。 真正做到开箱即用。

    Action bar 操作栏

    操作栏是一个窗口特性,确定用户的位置,和 提供用户操作和导航模式。 使用操作栏为用户提供了一个 跨应用程序系统优雅地适应熟悉的界面 对于不同的屏幕配置。

    C++术语表

    C++术语对照表 大全,abort() 特殊函数 如果一个函数抛出异常,但在通往异常函数的调用链中找不到与之匹配的catch,则该程序通常以此函数调用终止 abstract base class 抽象基类...action/decision model 操作判断模型

    SSH代码生成工具 SSH代码生成器

    JSP文件--&gt; 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--&gt; 业务Action.java和导出Excel的Action等 VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 ...

    AutoCode代码生成器【SSH版】

    JSP文件--&gt; 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--&gt; 业务Action.java和导出Excel的Action等 VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 ...

    ssh代码生成器轻松、快捷

    JSP文件--&gt; 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--&gt; 业务Action.java和导出Excel的Action等 VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 DAO --...

    AutoCode代码生成器(SSH版)

    JSP文件--&gt; 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--&gt; 业务Action.java和导出Excel的Action等 VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 ...

    公司内部QTP培训PPT

    8.QTP操作Action 9.QTP验证点与测试报告 10.VBS的介绍 11.常用WEB控件介绍 12.AOM 13.场景恢复 14.正则表达式的运用 15.Html中DOM的运用 16.VBS操作数据库 17.WshShell介绍 20.函数资源库、环境变量、常用保留对象

    struts2分页代码的示例

    在开发web程序时,从数据库中取出来的数据一般都要分页显示在页面上,分页显示的方法非常多,有人写自定义标签,用自己写的标签进行分页显示,我个人觉得这是一种...Action实现对业务逻辑的操作 Jsp用于显示或请求页面

    JavaScript获取网页表单action属性的方法

    主要介绍了JavaScript获取网页表单action属性的方法,涉及javascript操作表单属性的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    springMVC 简单操作,并且配置action

    使用spring技术,不使用strut,hibernate 等技术实现,网站简单功能demo,希望对学习的人有用

    Struts2操作同一action的不同方法跳转jar包(包括示例代码)

    Struts2操作同一action的不同方法跳转jar包(包括示例代码) 使用“项目名/类名!方法名.action”

    ActionServlet深入探讨

    对已ActionServlet的深入讲解,是您在一知半解中彻底明白来龙去脉

    action-docs-action:更新GitHub操作文档的操作

    默认情况下,该操作将更新README.md基础上的action.yml 。 请参阅用于更改默认值的参数。用法该操作将通过替换html注释标签来更新您的自述文件。 将基于以下模板的多个标签之一添加到您&lt;!-- action-docs-...

    C++ Concurrency in Action中文PDF

    C++ Concurrency in Action中文 PDF清晰版 本书是并发和多线程机制指导书籍(基于C++11标准)。 从最基本的 std::thread std::mutex 和 std::async 的使用, 到 复杂的原子操作和内存模型。

    Laravel开发-laravel-action-submit

    Laravel开发-laravel-action-submit Laravel操作提交按钮

    使用Struts的Action来对数据库进行增、删、改、查四项操作(源码)

    使用Struts的Action来对数据库进行增、删、改、查四项操作 &lt;br/&gt;1、数据库MySQL,创建数据库 Pagination MySQL.sql用来创建表结构 &lt;br/&gt;连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明...

    Linq In Action(中文)

    Linq In Action(中文) 本书对你掌握LINQ的各种功能有很大的帮助。书中介绍了查询操作符、Lambda表达式和表达式树等,也提供了很多非常有用的代码片段。特别是那些混合操作多种不同数据源的例子,极其实用!.

Global site tag (gtag.js) - Google Analytics