Eclipse Action 3

news/2023/12/1 9:15:26
 
6.2.4. Action 图标
下一步 , 为action关联可以显示在工作台工具栏上的图标。选择在前面章节添加的打开Favorites视图action, 点击出现在icon域右侧的 Browse... 按钮,在打开的结果对话框中,展开树的节点,从icons文件夹中选择sample.gif 条目 (见 图6-5)。点击OK 按钮, icons/sample.gif 将出现在icon 域中。
Figure 6-5. 用来选择图标的资源属性值对话框
 
出现在 icon域和plugin.xml文件的路径是相对于插件的安装目录的。其他的与图标有关的属性还有hoverIcon 和 disabledIcon。
创建你自己的图标
许多程序都可以创建修改图标,像 Jasc's Paint Shop Pro和Adobe's Photoshop。使用这些软件,你可以利用Eclipse提供的图标,进行相应的修改。 (见plugins/org.eclipse.ui_3.1.2.jar 或 plugins/org.eclipse.jdt.ui_3.1.2.jar 下的/icons/full 目录)。图标通常是带透明度颜色的 *.gif 文件。
 
6.2.5. 插入点
Eclipse是由众多插件组合而成,因为每个插件在构建时期都可以在对其他插件未知的情况下贡献action,所以action或子菜单在父亲中的绝对位置直到运行期,才可以知道。即使在执行阶段,如果用户改变了选择,同等级的action会被添加或删除,所以action的位置还是可能改变。因为这个原因,Eclipse使用标示符来引用每一个菜单,组,或者action和路径,也就是作为一个插入点,用来指定菜单或者action显示的位置。
插入点由一个或两个用“ /”分隔的标示符组成,标示action在父亲(此情况指菜单)和组中的位置。例如,Open Favorites View action的菜单栏属性(见 6.2.3节, 定义菜单条目和工具栏按钮,图6-1) 是由两个用“/”分隔的元素组成。
第一个元素, com.qualityeclipse.favorites.workbenchMenu,标示Favorites菜单;第二个元素,content,标示Favorites菜单中的组。在许多情况下,例如当父亲是工作台菜单栏或者视图上下文菜单时,父亲是隐含的,所以在插入点只要指定组就可以了。
插件通过一个空的标记为 "additions"的组,使得别的插件可以添加新的action到它的菜单中。"additions"标示符在Eclipse中是实事上的标准,用来指定新的action和菜单的位置,它是作为一个IWorkbenchActionConstants.MB_ADDITIONS常量被使用。例如,Favorites菜单指定一个路径属性(见 6.2.1节, 定义工作台窗口菜单),属性的值为"additions",它使得Favorites菜单出现在Window菜单的左侧。因为Window菜单的标示符是window,如果Favorites菜单的路径属性设置为"window/additions",Favorites菜单将作为子菜单出现在Window菜单下,而不是出现在工作台菜单栏。
嵌套 ActionSet问题
在 actionSet中定义一个action,actionSet也贡献了一个定义在另一个actionSet的菜单,在Eclipse日志文件中就会出现如下错误:
Invalid Menu Extension (Path is invalid): some.action.id
要解决这个问题,要在两个 actionSet中都定义菜单。更多信息,见Bugzilla条目#36389 和 #105949。
工具栏属性也是一个插入点,它有同 menubarPath属性的结构,但是是标示action出现在工作台工具栏的位置,而不是菜单栏。例如,Open Favorites View action (见 6.2.3节, 定义菜单条目和工具栏按钮)的toolbarPath属性也是由两个由“/”分隔的元素组成: 第一个元素, Normal, 是工作台工具栏的标示符;第二个元素 ,additions,是action要出现在工具栏的组。
6.2.6. 创建 action 代理
action代理包含了关联到action的行为。使用下面是几种方法,你可以为一个action关联一个action代理。
  • class输入框输入action代理的类名。
  • 点击class输入框左边的class:标签,创建一个新的action代理类。
  • 点击点击class输入框右边的Browse...按钮,选择已经存在的action代理。
如果你还没有创建 action类,可以使用Eclipse定制产生一个。选择Open Favorites View action,点击class输入框左边的class:标签 ,打开action类的Java属性编辑器。 (见图6-6).
图6-6. action 类的Java 属性编辑器
 
Package 输入框输入"com.qualityeclipse.favorites.actions" ,在 Name输入框输入"OpenFavoritesViewActionDelegate"。点击 Finish 按钮创建新的action代理,并且打开该类的Java编辑器。
在类被创建,编辑器打开后,按照如下方式进行修改,使得当用户选择 action时,Favorites视图将被打开。加入一个新的成员变量,更改init()方法来存储window对象,window对象在action的执行中会使用到。
private IWorkbenchWindow window;
 
public void init(IWorkbenchWindow window) {
   this.window = window;
}
 
下一步 , 为 FavoritesView 类增加一个常量来作为唯一的标示符,用来打开Favorites视图。
 public static final String ID =
    "com.qualityeclipse.favorites.views.FavoritesView";
 
最后 , 更改OpenFavoritesViewActionDelegate 类的run() 访法,实现打开Favorites 视图的操作。
public void run(IAction action) {
 
 // Get the active page.
 if (window == null)
     return;
 
 IWorkbenchPage page = window.getActivePage();
 if (page == null)
    return;
 
 // Open and activate the Favorites view.
 try {
     page.showView(FavoritesView.ID);
 }
 catch (PartInitException e) {
    FavoritesLog.logError("Failed to open the Favorites view", e);
 }
 }
 
6.2.6.1. selectionChanged 方法
在插件装载文件的 action声明中只是提供了action的初始状态, action的selectionChanged()方法使用IAction接口提供了动态调整action的状态,可用性,甚至action的文字的机会。
例如 , enablesFor 属性 (见 6.3.2节, action过滤和可用性) 用来指定选择了哪些对象,action是可用的。但是如果实现了selectionChanged()方法,可以更精巧的来进行状态设置。这个方法可以根据当前的选择,调用IAction.setEnabled()方法来更新action的可用性。
为了调用 action 代理的selectionChanged() 方法,你需要在你的视图的createPartControl()方法中调用 getViewSite().setSelectionProvider(viewer)。
6.2.6.2. run 方法
当用户选择了 action并期望一个操作被执行的时候,就要调用run()方法。它和selectionChanged()方法相似,可以使用IAction接口根据操作的结果改变action的状态。
必要的守护代码
需要注意的是,如果插件没有被装载,而是用户选择一个菜单选项导致插件被加载, selectionChanged()方法将不会在run()方法之前运行,所以run()方法仍然需要适当的守护代码。另外,run()方法是在主UI线程中执行,所以要考虑将耗时长的操作放到后台线程中(见 20.8节, 后台任务Jobs API)。
 



http://www.niftyadmin.cn/n/3653299.html

相关文章

常用数字音频功放芯片-音频放大器

功放作为各类音响器材设备中的重要组成部分,作用就是把来自音源或前级放大器的弱信号放大,推动音箱放声,一套良好的音响系统功放的作用功不可没。功放的主要性能指标有输出功率,频率响应,失真度,信噪比&…

Eclipse Action 4

6.2.7. 手工测试action测试刚刚所作的修改内容需要启动运行时工作台,运行方式在第二章一个简单的插件样例 中讨论过。如果Favorites菜单没有在运行时工作台菜单栏出现或者在工具栏没有找到Favorites图标,则使用如下方法:选择Window > Cust…

高质量PWM数字功放芯片

韩国NF(耐福)高质量的数字功放系列支持8欧姆立体声负载输出效率高达90%以上。采用独有的数字调制技术支持其它品牌的采用任何一种PWM调制方案(如三值增量、相移或二值增量调制技术)的驱动器。 所以系列功放芯片确保全部…

高效数字音频功率放大器NTP8928

近年来,随着数字化优势的体现,很多尚未数字化的领域正在逐步加入到数字化的行列中来。数字化处理后的语音信号在到达模拟功率放大器之前,必须进行D/ A 转换,以便被功率放大器放大,因此从完全数字化的进程看…

Eclipse Action 5

6.3. 对象 Actions如果你想使用户很容易的往Favorites视图中添加文件和文件夹,对象贡献是一个不错的选择,因为只有当当前的视图或编辑器包含与action兼容的对象时,对象贡献才会出现(见 图6-8)。以这种方式,当用户需要action的时候…

智能门锁丨家电领域中的触摸芯片推荐

随着触控技术的不断发展,各种各样形式的触摸按键已经出现在我们日常家用电器中,如智能门锁,油烟机,空调、平板、手机、冰箱、空气净化器、空调、洗衣机、微波炉等等一些触摸类型的电子产品,触控芯片的可靠性和实用性也…

EoS:Swing之上的Eclipse

EoS: Eclipse on Swing Posted by Ed Burnette 8:33 pmEos(希腊神话中黎明女神的名字)可以说是有史以来命名最聪明的项目之一,它可以将Eclipse引入到Swing平台。EoS 是Dieter Krachtus 和 SWTSwing 开发人员 Chris Deckers合作的结果。现在已经提供下载&#xff0c…

电容式触摸芯片 - GTX314L规格参数介绍

触控芯片是产业链牵涉最广泛的芯片,而触摸芯片又分为电容式触摸芯片和电阻式触摸芯片两大类,目前应用触摸芯片的产品,单点触摸式是比较常见也是应用比较广泛的,随着触控芯片的不断发展,各种各样形式的触摸按键已经出现…

SWTSwing 和SwingUI 初探

今天大概研究了一下SwtSwing 和SwingUI,觉得还不错。 SwtSwing用Swing是重写了了所有Swt包内的类,但是命名没有改变,对外提供的api还是和SWT一样的,用户使用的时候,感觉不到使用的是真的Swt,还是SwtSwing。…

绿芯丨高性能超低功耗电容式触摸芯片 - GT301L

随着触控芯片的不断发展,各种各样形式的触摸按键已经出现在我们日常家用电器中,应用涉及智能门锁、消费类电子、厨房电器、卫浴电器、空调等家用电器类、汽车防盗、LED应用、灯饰灯具应用、太阳能光电应用、音响、移动终端平板电脑、智能电网、智能家居物…

TUXEDO启动常见错误和解决方法 动常见错误和解决方法

如果TUXEDO配置的有问题,在启动的时候,会有各种报错信息来提示,请看下面: 序号问题描述可能的解决方法1tmboot: internal error: CMDTUX_CAT:4578: ERROR: Unlicensed System Binary查看$TUXDIR/udataobj/lic.txt 文件及权限2exec…

Eclipse Action 6

6.3.2.2. 可见度要素可见度要素相比于对象贡献的nameFilter 和 objectClass属性,提供了另一种功能强大的方式来指定什么时候对象贡献的action对用户可用,例如,为对象贡献指定过滤方式,可以像下面这样:name"org.ec…

绿芯丨推出智能门锁触摸芯片,助力门锁行业创新

如今, 随着科学技术的发展, 人们将单片机技术、IC 卡技术应用于门锁, 产生了IC卡智能门锁,据市场调研数据统计中国智能门锁年销售量将超过4000万套,全自动门锁作为一种新型的智能门锁,凭借其更便捷的特点受…

润乾报表列统计求和公式

sum(计单元格{}) 如: sum(F4{})

英文里面的反意疑问句的回答

和老外聊天的时候经常会被问到反意疑问句,例如他会问你:“Dont you have this?”.回答的时候,外国人的思维和中国人是不一样的。中国人回答是的意思是说 “我没有”,回答 “不” ,是说 我有这个东西。老外的脑袋简单&…

线程属性pthread_attr_t简介

本文编辑整理自: http://hi.baidu.com/7828058/blog/item/256e16decd1a385e94ee3784.html http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part1/ Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优…
最新文章