快速业务通道

创建Eclipse游戏插件,第1部分: 入门 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
urcesPlugin 是一个代表 Resources 插件的单体 —— 也就是说,是一个可以访问运行时资源(包括当前工作区)的插件。

getWorkspace 调用返回当前工作区,然后 getRoot 调用返回这个工作区的根。从这儿开始,就能够检查当前环境了。

对 findMarkers 的调用询问当前工作区的根,查找当前所有类型为 IMarker.TASK(这是个预定义常量,代表 Task 类型的标记器的类型字符串)的标记器。下一个参数 true 告诉 findMarkers 包含 Task 类型的子类型(通常没有)。最后一个参数告诉方法从任何直接或间接的资源中检索任务标记器,这应当包含整个工作台。findMarkers 会返回与这些参数匹配的标记器的数组。

创建Eclipse游戏插件,第1部分: 入门(14)

时间:2011-02-10 IBM Trebor Fenstermaker

让 TableViewer 能够查看任务

接下来,请修改 ViewContentProvider 以及与它相关的类,把默认的 “one, two, three” 替换成来自任务视图的任务。请把下面这些行添加到 ViewContentProvider 内部类,如清单 6 所示。

清单 6. 修改 ViewContentProvider 类

private IMarker[] tasks = new IMarker[0]; public void setTasks(IMarker[] tasks) {    this.tasks = tasks; }

然后修改 getElements 方法,检索这个新属性:

public Object[] getElements(Object parent) {    return tasks; }

这将修改插件的 TableViewer 使用的模型。通过把 tasks 属性初始化为空而不是 null,可以避免收到运行时错误 “Unable to create view: null argument”。

这个代码现在并不显示列出的任务的名称。相反,将看到一个典型的 toString 输出(类名和哈希码)。在这种情况下,是容纳任务的标记器类的实例的 toString。当然,我们想得到的是任务的文本。

为了让视图看到任务的文本,需要修改向导生成并由 TableViewer 使用的另一个内部类:ViewLabelProvider。ViewLabelProvider 扩展了 LabelProvider 类并实现了 ILabelProvider 接口。这个接口定义了一个叫作 getText 的方法,它的作用就是通过编写这个方法,从 ContentProvider 持有的对象中检索对应的属性。

LabelProvider 类返回对象的 toString,实现了这个方法的默认行为,这就是在 TableViewer 中看到这样的任务标记器标签的原因。要把这个方法改成返回合适的值,应该覆盖这个方法,添加下面这些代码到 ViewLabelProvider 类中,如清单 7 所示。

清单 7. 覆盖 getText 方法

public String getText(Object obj) {    return ((IMarker)obj).getAttribute(IMarker.MESSAGE, "<none>"); }

如前所述,实现 IMarker 接口的类的实例只是到对象的句柄,对象实际容纳构成标记器的属性。为了访问属性,IMarker 接口包含许多字符串,代表许多预定义标记器类型的公共属性。在这个示例中,想看到的是任务标记器的 MESSAGE 属性。这个属性容纳用户输入的字符串。

编写按钮,装入 TableViewer

最后,想让这个代码在按下 Load Bugs 时全部执行。要把动作加到按钮上,请通过 addSelectionListener 方法把 SelectionListener 添加到按钮部件。这个方法需要 SelectionListener 类的实例。对于简单侦听器,可以用匿名内部类扩展 SelectionAdapter, 如清单 8 所示。

清单 8. 添加选择侦听器到 loadBugsButton

loadBugsButton.addSelectionListener(new SelectionAdapter() {    public void widgetSelected(SelectionEvent event) {      try {        ShootoutView.this.getTasks();      }      catch (Exception e) { showMessage("loadBugsButton.widgetSelected():exception. "

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号